Сортування списку у MS EXCEL за довжиною рядка
Є список (діапазон) з текстовими значеннями, потрібно відсортувати його за зменшенням довжини рядка.
У стовпціА є список, у сусідньому стовпці наведено той самий список, але відсортований за довжиною рядка (див. файл прикладу).

Для отримання відсортованого списку використовується формула масиву та екстравагантний підхід.
Формула для сортування: =ЯКІ ПОМИЛКА(ІНДЕКС(Список; ПОШУКПОЗ(Найбільший((ДЛСТР(Список)&","&СТРОКА(Список))*1; ЧСТРОК(B$1:$B1))) ;(ДЛСТР(Список)&","&РЯДОК(Список))*1;0));"")
- Тут Список - Іменований діапазон являє собою вихідний список;
- Так як функція ДЛСТР() завжди повертає ціле число, то конструкція (ДЛСТР(A2)&","&СТРОКА(A2))*1 формує число, де ціла частина – довжина рядка (текстового значення з вихідного списку), а дробова – номер рядка. Це дозволяє сформувати масив неповторних значень;
- Функція НАЙБІЛЬШИЙ сортує список, природно по довжині рядка;
- І нарешті стандартна зв'язка функцій ІНДЕКС()+ПОШУКПОЗ() формує сортований список: визначає позицію значень із вихідного списку у відсортованому списку, точніше конструкції ДЛСТР(A2)&","&СТРОКА(A2))*1 , а потім з Вихідного списку виводить значення вже з урахуванням сортування.
У файлі прикладу також наведено інший варіант – з двома службовими стовпцями та формулою масиву.
ПОРАДА: При розборі формул не забувайте користуватися клавішеюF9.