Сортировка буквенно-цифровых данных в естественном порядке в таблицах Google

#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) , вам не нужно будет корректировать формат 000

3. Согласен, Майк. Спасибо за дополнение.