Excel, rimuovi gli 0 iniziali dall'indirizzo IP


8

Ho un elenco di indirizzi IP nel seguente formato:

    010.125.015.013
    010.125.153.012
    010.125.012.135

Non riesco ad eseguire il ping con quel modulo poiché Windows pensa che sia un modulo ottale punteggiato. Devo rimuovere gli 0 iniziali dopo ogni punto.

Non è così semplice in quanto alcuni di essi non hanno alcun punto iniziale dopo 0 e alcuni di essi lo hanno solo sull'ultimo ottetto, mentre altri lo hanno sul terzo ottetto o entrambi.

A meno che non ci sia una soluzione per forzare l'interpretazione del ping è come un indirizzo IP decimale puntato.

Qualcuno può aiutare?

Grazie


2
Supponiamo che tu voglia conservare uno 0 in qualcosa del genere 123.234.000.276? (Sì, esempio falso.)
un CVn del

non ci devono essere 0 quindi nel mio esempio: '010.125.015.013' '010.125.153.012' '010.125.012.135' Devono essere: '10 .125.15.13 ''10 .125.153.12' '10 .125.12.135 'Ma quando è per esempio: '010.155.105.013' Deve essere: '10 .155.105.13 '
Michal

Puoi farlo abbastanza facilmente con il potere di regex! Usa questo link per iniziare. Il regex è semplice come ^0(abbina uno zero all'inizio della stringa!)
Dudemanword

2
La rimozione degli zeri iniziali modifica l'IP, poiché lo zero iniziale indica i numeri ottali.
CodesInChaos,

1
@CodesInChaos In generale sì. Ma l'input sembra che qualcuno abbia semplicemente anteposto zeri per rendere ogni ottetto lungo tre cifre. Sembra improbabile che qualcuno cambierebbe anche la notazione in ottale durante l'esecuzione di tale operazione, inoltre non funzionerebbe per ottetti nell'intervallo da 64 a 99. Immagino che il compito sia convertire gli IP da una notazione non standard con decimale numeri con zeri iniziali in una notazione standard con numeri decimali senza zeri iniziali.
Kasperd,

Risposte:


11

Ecco cosa puoi fare:

  1. Presumo che ogni IP sia in una singola cella come testo. Ora converti questa singola cella in colonne (usando la funzione Testo in colonne) specificando .(punto) come delimitatore. Ora devono essere distribuiti come numeri nelle successive 4 celle consecutive, lo zero iniziale dovrebbe ora scomparire

  2. Usa la funzione Concatena (vedi la guida di Excel per i dettagli e unisci i 4 numeri includendo .dopo ogni stringa. Ora dovresti avere una cella con lo stesso IP escludendo tutti gli zeri iniziali.


12

Che dire

=INT(MID(A1,1,3)) & "." & 
 INT(MID(A1,5,3)) & "." & 
 INT(MID(A1,9,3)) & "." & 
 INT(MID(A1,13,3))

6

Questo usa SUBSTITUTE:

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

inserisci qui la descrizione dell'immagine

Innanzitutto, taglia lo spazio vuoto attorno all'IP (in C5), aggiunge un prefisso @., lo sostituisce .0con .due volte e quindi rimuove il prefisso aggiunto @..


Meno male! Trovo questa risposta così "pensiero laterale" rispetto alle altre finora :) +1 perché (scherzando) si vince su codegolf (più seriamente) l'uso di TRIMper assicurarsi di non lasciare alcuno spazio bianco (... e ancora codegolf vincente finora! ;-D)
danicotra

3

Picchiato in tempo (devo tradurre le formule dall'italiano all'inglese ... inoltre dispongo solo di LibreOffice ...) Comunque, supponendo che gli indirizzi IP siano nella colonna A, suggerirei questo:

=CONCATENATE(VALUE(MID(A1,1,3)),".",VALUE(MID(A1,5,3)),".",VALUE(MID(A1,9,3)),".",VALUE(MID(A1,13,3)))

@fheub: grazie mille per l'apprezzamento. La versione italiana di Ms-Excel ha quasi tutti i nomi di formule diverse ; tuttavia, usiamo ;non ,come parametri formule separatore in modo che ci vuole per cambiare loro - btw in Italia usiamo virgola (non dot) come separatore per la parte decimale per i numeri. Ultimo ma non meno importante, uso Excel al lavoro ma a casa ho solo LibreOffice e devo ammettere che non è ben documentato come Excel (spero sempre che i nomi delle formule rimangano gli stessi tra i due) e manchi sicuramente alcune belle funzionalità rispetto ad esso ...
Danicotra,

PS Mi stavo dimenticando ... LibreOffice differisce da Excel anche per il fatto che .in LibreOffice si fa riferimento a fogli / celle mentre invece in Excel devi usare !( 'Sheet 1'.A1<=> 'Sheet 1'!A1).
Danicotra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.