Вот способ использования скрытых столбцов, который не требует VBA. Однако это не сортирует последний столбец.
После ввода этих формул вы можете скрыть три столбца в середине, щелкнув правой кнопкой мыши их заголовки и выбрав Скрыть:
И это оставит вас с этим:
Формулы в четырех столбцах после Col1 и Col2 должны быть скопированы, по крайней мере, вдвое больше максимальной длины Col1 и Col2. Я предлагаю выбрать произвольное большое число, которое, по вашему мнению, никогда не превысит число строк Col1 и Col2, а затем просто забыть его.
Это предполагает, что ваши Col1 и Col2 находятся в столбцах A и B и что строка заголовка включена, а строка заголовка находится в строке 1. Вам придется немного их изменить, если строка заголовка не включена.
Формула комбинированного столбца:
=OFFSET($A$2, FLOOR((ROW() - ROW($2:$2)) / 2, 1), MOD(ROW() - ROW($2:$2), 2))
Формула отфильтрованного столбца:
=IF(C2 = 0, "", IF(ISERROR(MATCH(C2, C$1:C1, 0)), ROW(), ""))
Формула отсортированного столбца:
=SMALL(D:D, ROW() - ROW($1:$1))
Формула столбца Col3:
=IFERROR(INDEX(C:C, E2), "")
Способ, которым это работает, состоит в том, чтобы сначала объединить Col1 и Col2, начиная с первого ряда и далее вниз (ячейка A2, ячейка B2, ячейка A3, ячейка B3 и т.д.). Это достигается с помощью комбинации функции OFFSET
сочетании с функциями FLOOR
, MOD
и ROW
.
Затем мы отфильтровываем дубликаты, проверяя, существует ли значение в текущей строке во всех предыдущих строках. Для этого мы используем функцию MATCH
в сочетании с умным использованием абсолютных и относительных ссылок. Вместо значения возвращается номер строки, чтобы его можно было использовать в следующих двух столбцах.
Затем мы выводим все перечисленные номера строк в верхнюю часть с помощью комбинации функций SMALL
и ROW
.
И, наконец, нам просто нужно вернуть INDEX
столбца Combined, соответствующего строке столбца Sorted.