/ / сортування по аркушах у excel - excel, сортування, vba, excel-vba, динамічне зв'язування

сортування листів у excel - excel, сортування, vba, excel-vba, динамічне посилання

Я не знаю, можливо це чи ні.

У мене є робоча книга, яка має два аркуші, "вхід" і "вихід"

user1 заповнює "аркуш вводу"

Стовпець A = назва
Стовпець B = Вік
Стовпець C = Місцезнаходження
Стовпець D = Висота
..
..

Потім на "вихідному" аркуші стовпець A встановлюється для копіювання значення зі стовпця A на "вхідному" аркуші, а User2 заповнює більше деталей, використовуючи значення, які ввів user1

Стовпець B = колір очей
Колонка С = колір волосся
Стовпець D = кількість пальців
..
..

Тож, сподіваюся, ви зрозуміли ідею, User1 вводить дещодеталі, а потім User2 виконує певну роботу з цим і вводить більше деталей у "вихідний аркуш. При цьому стовпець A є значенням" індексу ", яке пов'язує ці два елементи.

Моя проблема полягає в тому, що якщо User2 вводить туди деталі,а потім повертається до "вхідного" аркуша та проводить сортування, значення на "вихідному" аркуші більше не збігатимуться, оскільки в той час як стовпець A матиме зміни, щоб відобразити операцію сортування, решта залишиться незмінною.

Чи можна зв’язати рядки між аркушами або створити код сортування, який буде проходити по обох аркушах і підтримуватиме їх узгодженість.

Це не повинно працювати для спеціальних пошуків, які користувач намагається, я просто хочу поставити кнопку на аркуші "введення", наприклад, "сортувати за назвою", "сортувати за місцем розташування" тощо

З повагою

Аарон

Відповіді:

1 для відповіді № 1

Якщо у вас все в порядку із попередньо встановленими сортами, одинРішення полягає в тому, щоб відобразити обидва значення з аркуша A і аркуша B на аркуші C, а потім просто відсортувати їх і повторно заповнити значення на аркуші A і B новими, відсортованими результатами.

І.е.

Sheet1                   | Sheet 2                           | Sheet 3 (Hidden and named)
|                                   |
Name     Age    etc,     | Eye Colour    Hair colour   etc.  | =Sheet1!A1 ... =Sheet2!A1

Тоді ваша кнопка сортування буде викликати підпрограму приблизно так:

Dim rngSortRange As Range, rngStartCell As Range, rngEndCell As Range
Set rngStartCell = Worksheets("Sheet_3_Name_Goes_Here").Range("A1")
Set rngEndCell = Worksheets("Sheet_3_Name_Goes_Here").Range( _
rngStartCell.End(xlToRight).Column, _
rngStartCell.End(xlDown).Row)
Set rngSortRange = Worksheets("Sheet_3_Name_Goes_Here").Range(rngStartCell, rngEndCell)
rngSortRange.Sort Key1:=<Column Number Here>, Order1:=xlAscending, Header:=xlYes
rngSortRange.Range(rngStartCell, _
Worksheets("Sheet_3_Name_Goes_Here").Range( _
Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _
rngEndCell.Row _
) _
).Copy
Worksheets("Sheet 1").Paste
rngSortRange.Range(Worksheets("Sheet_3_Name_Goes_Here").Range(
rngStartCell.Column + Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _
rngStartCell.Row _
), _
rngEndCell _
).Copy
Worksheets("Sheet 2").Paste

Для цього може знадобитися певна робота (наприклад,можливо, вам доведеться скинути аркуш3 згодом, можливо, вам доведеться вставити значення, а не просто вставити, інакше в кінцевому підсумку ви вставите формули, що посилаються на себе, але основна ідея повинна спрацювати.