Excel, usuń wiodące zera z adresu IP

8

Mam listę adresów IP w następującej formie:

    010.125.015.013
    010.125.153.012
    010.125.012.135

Nie mogę wykonać polecenia ping za pomocą tego formularza, ponieważ system Windows uważa, że ​​jest to ósemkowa kropka. Muszę usunąć wiodące zera po każdej kropce.

To nie jest takie proste, ponieważ niektóre z nich w ogóle nie mają początkowych zer po kropkach, a niektóre mają go tylko w ostatnim oktecie, a niektóre w trzecim lub w obu.

Chyba że istnieje rozwiązanie wymuszające interpretację polecenia ping jako dziesiętny kropkowy adres IP.

Czy ktoś może pomóc?

Dzięki

Michał
źródło
2
Czy założymy, że chcesz zachować 0 w czymś takim 123.234.000.276? (Tak, fałszywy przykład.)
CVn
w moim przykładzie nie może być żadnych zer: „010.125.015.013” „010.125.153.012” „010.125.012.135” Muszą być: „10 .125.15.13” „10 .125.153.12” „10 .125.12.135” Ale kiedy to dla przykład: „010.155.105.013” Musi to być: „10 .155.105.13”
Michał
Możesz to zrobić dość łatwo za pomocą wyrażenia regularnego! Użyj tego linku, aby rozpocząć. Wyrażenie regularne jest tak proste jak ^0(dopasuj zero na początku łańcucha!)
Dudemanword
2
Usunięcie początkowych zer zmienia IP, ponieważ wiodące zero oznacza liczby ósemkowe.
CodesInChaos
1
@CodesInChaos Ogólnie tak. Ale dane wejściowe wyglądają, jakby ktoś po prostu wstawił zera, aby każdy oktet miał trzy cyfry. Wydaje się mało prawdopodobne, że ktoś zmieniłby również notację ósemkową podczas wykonywania tej operacji, poza tym nie działałoby to dla oktetów z zakresu od 64 do 99. Myślę, że zadaniem jest konwersja adresów IP z niestandardowej notacji dziesiętnej liczby z zerami wiodącymi do standardowej notacji z liczbami dziesiętnymi bez zer wiodących.
kasperd

Odpowiedzi:

11

Oto, co możesz zrobić:

  1. Zakładam, że każdy adres IP znajduje się w jednej komórce jako tekst. Teraz przekonwertuj tę pojedynczą komórkę na kolumny (za pomocą funkcji zamiany tekstu na kolumny), określając .(kropka) jako separator. Będą teraz rozprowadzane jako liczby w kolejnych 4 kolejnych komórkach, wiodące zero powinno zniknąć

  2. Użyj funkcji konkatenacji (szczegóły w pomocy programu Excel i dołącz 4 cyfry, umieszczając .po każdym łańcuchu. Teraz powinieneś mieć komórkę o tym samym adresie IP z wyłączeniem wszystkich zer wiodących.

patkim
źródło
12

Co powiesz na

=INT(MID(A1,1,3)) & "." & 
 INT(MID(A1,5,3)) & "." & 
 INT(MID(A1,9,3)) & "." & 
 INT(MID(A1,13,3))
sgmoore
źródło
6

Ten używa SUBSTITUTE:

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

wprowadź opis zdjęcia tutaj

Najpierw przycina puste miejsce wokół adresu IP (in C5), dodaje prefiks @., zastępuje .0go .dwukrotnie, a następnie usuwa dodany prefiks @..

g.kov
źródło
Uff! Uważam tę odpowiedź za „myślenie lateralne” w porównaniu do innych do tej pory :) +1, ponieważ (żartujesz) wygrywasz w codegolf (poważniej), TRIMaby upewnić się, że nie zostawisz żadnej białej przestrzeni (... i nadal jak dotąd zwycięski codegolf! ;-D)
danicotra
3

Pobity na czas (muszę tłumaczyć formuły z włoskiego na angielski ... również pozbywam się tylko LibreOffice ...) W każdym razie, zakładając, że adresy IP są w kolumnie A, sugerowałbym to:

=CONCATENATE(VALUE(MID(A1,1,3)),".",VALUE(MID(A1,5,3)),".",VALUE(MID(A1,9,3)),".",VALUE(MID(A1,13,3)))
danicotra
źródło
@fheub: dziękuję bardzo za uznanie. Włoska wersja Ms-Excel ma prawie wszystkie nazwy różnych formuł ; nie używamy ;jednak ,jako separatora parametrów formuł, więc trzeba je zmienić - między innymi we Włoszech używamy przecinka (nie kropki) jako separatora części dziesiętnej liczb. Wreszcie, używam Excela w pracy, ale w domu mam tylko LibreOffice i muszę przyznać, że nie jest tak dobrze udokumentowany jak Excel (zawsze mam nadzieję, że nazwy formuł pozostają takie same między nimi) i zdecydowanie brakuje w nim kilku fajnych funkcji ...
danicotra
PS Zapomniałem ... LibreOffice różni się od Excela nawet tym, że odwołania do arkuszy / komórek są tworzone .w LibreOffice, podczas gdy w Excelu należy użyć !zamiast tego ( 'Sheet 1'.A1<=> 'Sheet 1'!A1).
danicotra