Это старенький, и есть несколько решений, но я придумал более короткую и простую формулу , чем любая другая, с которой я столкнулся, и она может быть полезна всем, кто проходит мимо.
Я назвал список цветов Colors
(A2: A7), и формула массива помещена в ячейку C2 :
=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")
Используйте Ctrl+Shift+Enter
для ввода формулы в C2 и скопируйте C2 до C3: C7 .
Объяснение с примерами данных {"красный"; «Синий»; «Красный»; «Зеленый»; «Синий»; "Черный"}:
COUNTIF(Colors,"<"&Colors)
возвращает массив (# 1) с количеством значений, меньшим, чем каждый элемент данных {4; 1; 4; 3; 1; 0} (черный = 0 элементов меньше, синий = 1 пункт, красный = 4 пункта). Это может быть переведено в значение сортировки для каждого элемента.
COUNTIF(C$1:C...,Colors)
возвращает массив (# 2) с 1 для каждого элемента данных, который уже находится в отсортированном результате. В C2 он возвращает {0; 0; 0; 0; 0; 0}, а в C3 {0; 0; 0; 0; 0; 1}, поскольку «черный» является первым в сортировке и последним в данных. В C4 {0; 1; 0; 0; 1; 1} он обозначает «черный», и все вхождения «синий» уже присутствуют.
-
SUM
возвращает значение сортировки k-й , подсчитывая все вхождения меньших значений, которые уже присутствуют (сумма массива # 2).
MATCH
находит первый индекс k-го значения сортировки (индекс в массиве # 1).
-
IFERROR
только для того, чтобы скрыть ошибку #N/A
в нижних ячейках, когда отсортированный уникальный список завершен.
Чтобы узнать, сколько уникальных предметов у вас есть, вы можете использовать эту обычную формулу :
=SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1))