
Общая формула
=SORTBY(data,LEN(data),-1)
Резюме
Чтобы отсортировать текстовые строки по длине в порядке возрастания или убывания, вы можете использовать формулу, основанную на функциях СОРТБИ и ДЛИН. В показанном примере формула в D5:
=SORTBY(B5:B15,LEN(B5:B15),-1)
который сортирует текстовые значения в столбце B по длине строки в порядке убывания.
Объяснение
Функция SORTBY может сортировать значения в диапазоне с массивом, который не существует на листе.
В этом примере мы хотим отсортировать значения в B5: B15 по количеству символов, содержащихся в каждой строке. Работая изнутри наружу, мы используем функцию LEN, чтобы получить длину каждого значения:
LEN(B5:B15) // get length of all strings
Поскольку мы передаем LEN массив с 11 значениями, мы получаем массив с 11 длинами:
(5;7;14;6;5;13;9;4;8;6;11)
Каждое число представляет длину символа значения в B5: B11.
Этот массив возвращается непосредственно в функцию SORTBY как аргумент by_array1:
=SORTBY(B5:B15,(5;7;14;6;5;13;9;4;8;6;11),-1)
Функция SORTBY позволяет выполнять сортировку на основе одного или нескольких массивов «сортировки по», если измерения совместимы с исходными данными. В этом случае имеется 11 строк в исходных данных и 11 строк в массиве, возвращаемом LEN, поэтому требование выполнено.
Функция SORTBY использует массив длин, возвращаемый LEN, для сортировки значений в B5: B15 и возвращает отсортированные результаты в D5 в динамическом массиве. Поскольку для порядка сортировки установлено значение -1, значения сортируются в обратном (убывающем) порядке по длине. Используйте положительный 1 для сортировки в порядке возрастания.