Excel, удалить первые 0 с IP-адреса

8

У меня есть список IP-адресов в следующей форме:

    010.125.015.013
    010.125.153.012
    010.125.012.135

Я не могу выполнить ping с этой формой, поскольку Windows думает, что это пунктирная восьмеричная форма. Мне нужно удалить ведущие 0 после каждой точки.

Это не так просто, поскольку некоторые из них вообще не имеют ведущих нулей после точек, а некоторые из них имеют только последний октет, а некоторые - третий или оба.

Если нет решения для принудительной интерпретации ping, это будет точечный десятичный IP-адрес.

Кто-нибудь может помочь?

Спасибо

Michal
источник
2
Должны ли мы считать, что вы хотите сохранить 0 в чем-то вроде 123.234.000.276? (Да, фиктивный пример.)
CVn
в моем примере не должно быть никаких нулей: '010.125.015.013' '010.125.153.012' '010.125.012.135' Они должны быть: '10 .125.15.13 ''10 .125.153.12' '10 .125.12.135 'Но когда это для пример: '010.155.105.013' Это должно быть: '10 .155.105.13 '
Михал
Вы можете сделать это довольно легко с помощью регулярных выражений! Используйте эту ссылку, чтобы начать. Регулярное выражение так же просто, как ^0(соответствует нулю в начале строки!)
Dudemanword
2
Удаление начальных нулей изменяет IP, поскольку начальный ноль означает восьмеричные числа.
CodesInChaos
1
@CodesInChaos В общем да. Но входные данные выглядят так, будто кто-то просто добавляет нули, чтобы каждый октет был длиной в три цифры. Кажется маловероятным, чтобы кто-то также изменил нотацию на восьмеричную при выполнении этой операции, кроме того, она не будет работать для октетов в диапазоне от 64 до 99. Я предполагаю, что задача состоит в том, чтобы преобразовать IP-адреса из нестандартной нотации с десятичной дробью числа с ведущими нулями в стандартную запись с десятичными числами без ведущих нулей.
Касперд

Ответы:

11

Вот что вы можете сделать:

  1. Я предполагаю, что каждый IP находится в одной ячейке в виде текста. Теперь преобразуйте эту отдельную ячейку в столбцы (используя функцию Text-to-Columns), указав .(точку) в качестве разделителя. Теперь они будут распределены в виде чисел в следующих 4 последовательных ячейках, ведущий ноль теперь должен исчезнуть

  2. Используйте функцию Concatenate (см. Справку Excel для получения подробной информации и объедините 4 числа, добавив .после каждой строки. Теперь у вас должна быть ячейка с одинаковым IP, исключая все начальные нули.

patkim
источник
12

Что о

=INT(MID(A1,1,3)) & "." & 
 INT(MID(A1,5,3)) & "." & 
 INT(MID(A1,9,3)) & "." & 
 INT(MID(A1,13,3))
sgmoore
источник
6

Этот использует SUBSTITUTE:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("@."&TRIM(C5),".0","."),".0","."),"@.","")

введите описание изображения здесь

Во- первых, он обрезает пустое пространство вокруг IP (в C5), добавляет префикс @., заменители .0с .дважды , а затем удаляет добавленный префикс @..

g.kov
источник
Уф! Я нахожу этот ответ таким "боковым мышлением" по сравнению с другими до сих пор :) +1, потому что (шучу) вы выигрываете в Codegolf (более серьезно) использование, TRIMчтобы убедиться, что вы не оставляете возможный пробел (... и до сих пор пока выиграл Codegolf! ;-D)
Даникотра
3

Избитый вовремя (я должен перевести формулы с итальянского на английский ... также я распоряжаюсь только LibreOffice ...) В любом случае, если предположить, что IP-адреса находятся в столбце A, я бы предложил это:

=CONCATENATE(VALUE(MID(A1,1,3)),".",VALUE(MID(A1,5,3)),".",VALUE(MID(A1,9,3)),".",VALUE(MID(A1,13,3)))
danicotra
источник
@fheub: большое спасибо за благодарность. Итальянская версия Ms-Excel имеет почти все названия различных формул ; тем не менее, мы используем ;не ,как разделитель параметров формул, поэтому требуется их изменить - кстати, в Италии мы используем запятую (не точку) в качестве разделителя для десятичной части для чисел. И последнее, но не менее важное: я использую Excel на работе, но дома у меня есть только LibreOffice, и я должен признать, что он не так хорошо документирован, как Excel (я всегда надеюсь, что имена формул остаются одинаковыми между двумя) и определенно не имеет некоторых приятных функций по сравнению с ним. ...
Даникотра
PS Я забыл ... LibreOffice отличается от Excel даже тем, что ссылки на листы / ячейки создаются .в LibreOffice, тогда как в Excel вы должны использовать !вместо этого ( 'Sheet 1'.A1<=> 'Sheet 1'!A1).
Даникотра