Формула Excel: сортування тексту та цифр за формулою -

Загальна формула

=COUNTIF(data,"<="&A1)+(COUNT(data)*ISTEXT(A1))

Резюме

Для динамічного сортування даних як з числами, так і з текстом в алфавітному порядку, ви можете використовувати формулу для створення числового рангу в допоміжному стовпці, а потім за допомогою INDEX та MATCH відображати значення на основі рангу. У наведеному прикладі формула в С5:

=COUNTIF(data,"<="&B5)+(COUNT(data)*ISTEXT(B5))

де "дані" - названий діапазон B5: B13.

Пояснення

Ця формула спочатку генерує значення рангу за допомогою виразу на основі COUNTIF:

=COUNTIF(data,"<="&B5)

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

+(COUNT(data)*ISTEXT(B7))

Тут ми використовуємо функцію COUNT, щоб отримати підрахунок числових значень у даних, а потім помножимо результат на логічний результат ISTEXT, який перевіряє, чи є значення текстовим, і повертає або TRUE, або FALSE. Це фактично скасовує результат COUNT, коли ми працюємо з числом у поточному рядку.

Обробка дублікатів

Якщо дані містять дублікати, формулу можна змінити, як показано нижче, щоб присвоїти послідовний ранг значенням, які з’являються більше одного разу:

=COUNTIF(data,"<"&B5)+(COUNT(data)*ISTEXT(B5))+COUNTIF($B$5:B5,B5)

Ця версія коригує логіку початкової функції COUNTIF і додає ще COUNTIF із розширеним посиланням для збільшення дублікатів.

Відображення відсортованих значень

Для отримання та відображення значень, відсортованих в алфавітному порядку за допомогою обчисленого значення рангу, E5 містить наступну формулу INDEX та MATCH:

=INDEX(data,MATCH(ROWS($E$5:E5),rank,0))

де "дані" - іменований діапазон B5: B13, а "ранг" - іменований діапазон C5: C13.

Для отримання додаткової інформації про те, як працює ця формула, див. Приклад тут.

Робота з заготовками

Порожні комірки генерують нульовий ранг. Якщо припустити, що ви хочете ігнорувати порожні комірки, це працює нормально, оскільки формула INDEX і MATCH вище починається з 1. Однак у кінці відсортованих значень ви побачите # N / A помилок, по одній для кожної порожньої комірки. Найпростіший спосіб вирішити це - обернути формулу INDEX і MATCH у IFERROR так:

=IFERROR(INDEX(data,MATCH(ROWS($E$5:E5),rank,0)),"")

Цікаві статті...