Сортировать электронную таблицу по столбцу, содержащему IP-адреса (один IP-адрес на ячейку) - PullRequest
0 голосов
/ 19 октября 2011

При использовании механизма сортировки по умолчанию следующий список считается отсортированным:

10.0.0.219
10.0.0.22
10.0.0.223

Это неверно.Сортировка должна быть такой:

10.0.0.22
10.0.0.219
10.0.0.223

Не безопасно предполагать, что первые три октета будут статическими.Например, другие IP-адреса включают в себя:

10.35.10.11
10.28.66.30

Ответы [ 2 ]

4 голосов
/ 19 октября 2011

Есть несколько способов сделать это, не уверен, что это для более постоянного использования или только один раз.

  1. Текст в столбцы

    Выможно разбить IP-адрес на столбцы и отсортировать данные в виде таблицы, используя предварительную сортировку.

  2. Сортировка

    Использование встроенного сортировщика,Вы можете создать собственный порядок сортировки.Если вы просто делаете адреса в одном и том же октете (например, 10.0.0.x), вы можете добавить 10.0.0.как ваш заказ, и он будет делать числовую сортировку слева за кадром.Вероятно, это не так, как задумано, но опять же это работает.

  3. Скрытый столбец

    Google предлагает несколько ответов, включающих дополнительный столбец, в котором вы разбиваетеIP-адрес в виде числового значения, а затем сортировать по этому столбцу.

  4. VBA

    Может сделать все это в VBA и отбросить вседанные в память и переписать список.Преимуществом здесь будет возможность повторного использования и расширения.

2 голосов
/ 16 января 2015

Я понимаю, что это старый пост, но в интересах предоставления рабочего решения я представляю следующее.

Просто поместите эту формулу в соседнюю ячейку и обновите ссылки, чтобы указать ячейку, содержащую ваш IP-адрес (A1 в этом примере). Это приведет к результату, подобному 010.121.008.030, который затем можно будет отсортировать (правильно) по алфавиту. Затем установите ширину столбца на ноль и вуаля. Время насладиться чашечкой кофе.

=TEXT(MID(A1,1,FIND(".",A1)),"000")&"."&TEXT(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-1-FIND(".",A1)),"000")&"."&TEXT(MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-1-FIND(".",A1,FIND(".",A1)+1)),"000")&"."&TEXT(MID(A1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)+1,LEN(A1)),"000")
...