В настоящее время я работаю с большим списком IP-адресов (их тысячи).
Однако, когда я сортирую столбец, содержащий IP-адреса, они не сортируются интуитивно понятным или простым способом.
Например, если я введу IP-адреса следующим образом:
И тогда, если я сортирую в порядке возрастания, я получаю это:
Можно ли отформатировать ячейки так, чтобы, например, IP-адрес 17.255.253.65 появлялся после 1.128.96.254 и до 103.236.162.56 при сортировке в порядке возрастания?
Если нет, есть ли другой способ для меня достичь этой конечной цели?
microsoft-excel
ip-address
sorting
Monomeeth
источник
источник
Ответы:
Как вы, возможно, поняли, ваши IP-адреса рассматриваются как текст, а не как числа. Они сортируются как текстовые, что означает, что адреса, начинающиеся с «162», будут предшествовать адресам, начинающимся с «20». (потому что символ «1» предшествует символу «2».
Вы можете использовать формулу, представленную в этом ответе: https://stackoverflow.com/a/31615838/4424957, чтобы разделить IP-адрес на его части.
Если ваши IP-адреса находятся в столбцах A, добавьте столбцы BE, как показано ниже.
Введите формулу
в ячейке B2 и скопируйте его в столбцы BE во всех строках, чтобы получить четыре части каждого IP-адреса. Теперь рассортируйте весь диапазон по столбцам от B до E (в указанном порядке), как показано ниже:
Если вы не хотите видеть вспомогательные столбцы (BE), вы можете их скрыть.
источник
first*256^3+second*256^2+third*256+fourth
в одном столбце?Самое простое, трехэтапное решение, которое я могу предложить вам ,,,
Выберите столбец IP-адрес, примените текст к столбцу команду « .
В соседней колонке напишите эту формулу
= СЦЕПИТЬ (В3, "", С3, "", D3, "", Е3)
Наконец сортировка в порядке возрастания.
Проверьте снимок экрана.
NB:
красный - это оригинальный IP-адрес (в столбце A).
зеленый после применения текста к столбцу (столбец от B до E).
черныйПосле нанесения цвета происходит конкатенация и сортировка (столбец F).
Причина заключается в том, что изначально IP-адрес очень прост: текстовые данные, и Excel не принимает формат ячейки, чтобы превратить его в номер.
Надеюсь, это поможет вам.
источник
Text To Column
столбцов там. @MaxW, макет только для демонстрации. Если вы хотите, чтобы исходный IP-адрес был отсортирован, просто пропустите шаг 2. Эту массивную формулу «VALUE (TRIM (MID (SUBSTITUTE») в принятом ответе следует заменить на «Текст в столбцы», а остальная часть ответа по сути такая же, как эта.Вот функция VBA, которую я написал некоторое время назад для решения той же проблемы. Он генерирует версию IPv4-адреса с добавками, которая сортируется правильно.
Простой пример:
Результат
Формулы
Вы можете отсортировать по столбцу «Сортируемый» и скрыть его.
источник
Вот ответ, который займет только 1 столбец вашей таблицы и преобразует адрес IPv4 в нумерацию с основанием 10.
Поскольку вы помещаете свои данные в столбец «M», это начинается в ячейке M2 (метка M1). Инкапсуляция в виде кода дает один ужасный беспорядок, поэтому я использовал blockquote:
Не совсем легко читаемая формула, но вы можете просто скопировать и вставить в свою ячейку (предпочтительно N2 или что-то еще в той же строке, что и ваш первый IP-адрес). Это предполагает правильное форматирование IP-адреса, так как исправление ошибок в формуле сделает его еще хуже при разборе человеком.
источник
Если вы не хотите использовать формулы или VBA, используйте Power Query. (В Excel 2016, Get & Transform, в Excel 2010 или 2013 установите надстройку PowerQuery, чтобы следовать ей).
источник
Это похожая строка, которая преобразует октеты в 3-значные поля, что позволяет выполнять надлежащую сортировку.
10.1.0.15
становится10001000015
.источник
Получив хорошие ответы от каждого, вот мое решение. Требуется только 1 вспомогательный столбец. Мы пытаемся отформатировать адреса IPv4 в
012.198.043.009
формат, а затем отсортировать их:12.198.43.9
чтобы12 198 43 9
потом012.198.043.009
Отформатируйте адреса IPv4 в
012.198.043.009
формат, введя в N2 , и заполните вниз:Сортировать по столбцу N
Explaination
С
SUBSTITUTE
помощью точки.
с 6 пробелами мы получаем следующее, чтобы их можно было правильно извлечь:А затем, извлеките и отформатируйте каждую часть
TEXT(..., "000")
.источник
Если вы используете последнюю версию Excel в Windows, вы можете использовать следующую формулу для вычисления 32-разрядного десятичного значения IP-адреса.
Затем вы можете сортировать, используя производное десятичное значение. Замените
[@ipbase]
ячейкой действительный адрес IP4.Функция «FILTERXML» работает только в Windows, поэтому вам не повезло, если вы используете другую операционную систему.
источник
У меня также есть одна строка, которая даст вам IP в мягком формате (000.000.000.000) для альфа-сортировки.
источник