#google-sheets
#google-листы
Вопрос:
У меня есть список данных, которые я хочу отсортировать в естественном порядке, однако он сортируется в лексическом порядке. Как я могу сортировать в естественном порядке?
Данные, которые у меня есть, которые сортируются как таковые:
A1 A10 A11 A12 A13 A14 A2 A3 A4 A5 A6 A7 A8 A9 B1 B2 B3 B4
Порядок, в котором я хотел бы, чтобы он был отсортирован:
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 B1 B2 B3 B4
Ответ №1:
Предположим, что исходные данные, перечисленные в вашем сообщении, находятся в диапазоне A2:A19. Поместите следующую формулу в B2 открытого диапазона B2:B (или в ячейку строки 2 любого другого открытого столбца, в котором вы хотите отсортировать результаты):
=SORT(A2:A19,REGEXEXTRACT(A2:A19,"D "),1,TEXT(REGEXEXTRACT(A2:A19,"d ")*1,"000"),1)
Эта формула предполагает, что числовая часть ваших строк никогда не бывает длиннее трех цифр. Если он действительно превышает, просто измените 000
, чтобы включить количество нулей, соответствующих максимальным цифрам, которые могут отображаться в числовой части ваших строк.
Конечно, вам нужно будет настроить A2:A19
его в соответствии с фактическим диапазоном исходных данных в вашем листе.
Комментарии:
1. Отлично, спасибо.
2. @Erik, возможно
=SORT(A2:A19,REGEXEXTRACT(A2:A19,"D "),1,value(REGEXEXTRACT(A2:A19,"d ")),1)
, вам не нужно будет корректировать формат 0003. Согласен, Майк. Спасибо за дополнение.