@ > Home > Inhalt > IP-Adresse wandeln und zurück Excel 97+

Gegeben sei eine IP-Adresse als String (Zeichenfolge):

A1: 192.1.20.3

Diese IP4 ist zu wandeln in eine 12stellige Zahl:

B1: =SUMMENPRODUKT(WECHSELN(TEIL(WECHSELN(A1;".";":::::::::");ZEILE(1:4)*10-9;10);":";)*10^(3*(4-ZEILE(1:4))))

also 192001020003. Diese Zahl kann natürlich mit #.##0 formatiert auch als 192.001.020.003 dargestellt werden. 

Nun wird zum String zurückgewandelt (nur dann kann auf führende Dezimal-Nullen in einem Byte verzichtet werden):

C1: =WENN(B1<10^9;"0.";"")&WENN(B1<10^6;"0.";"")&WENN(B1<10^3;"0.";"")&WECHSELN(WECHSELN(
WECHSELN(WECHSELN(TEXT(B1;"#.##0");".00";".");".0";".");"..";".0.");"..";".0.")&WENN(RECHTS(B1;3)="000";"0";"") 

ergibt wieder '192.1.20.3.

Die drei einleitenden WENN sind zwar nicht schön, aber verständlich (und Pocket-Excel-fähig) - und das elegante

=WIEDERHOLEN("0.";SUMMENPRODUKT(--(A1<10^(3*ZEILE(1:3)))))&... 

an deren Stelle ist auch nicht so viel kürzer.

Verwendet man von der ganzen langen Formel nur =TEXT(B1;"#.##0"), erhält man einen String mit byte-führenden Nullen: '192.001.020.003

Die Typ-Konversion "String-Zahl" funktioniert vor xl2007 nur für IP4 (also die 4-Byte-IP), da 12 signifikante Stellen durch Excel dargestellt werden können. IP6 würde jedoch 18 Stellen benötigen.

Für eine Hexadezimal-Darstellung von IP4 benötigt man vor xl2007 aufgrund der Verschachtelungstiefe von 11 zwei Schritte:

D1: =KÜRZEN(B1/16/10^9)&"."&REST(KÜRZEN(B1/10^9);16)&"."&
KÜRZEN(REST(B1;10^9)/16/10^6)&"."&REST(KÜRZEN(REST(B1;10^9)/10^6);16)&"."&
KÜRZEN(REST(B1;10^6)/16/10^3)&"."&REST(KÜRZEN(REST(B1;10^6)/10^3);16)&"."&
KÜRZEN(REST(REST(B1;10^6);10^3)/16)&"."&REST(KÜRZEN(REST(REST(B1;10^6);10^3));16)

ergibt den Zwischenschritt '12.0.0.1.1.4.0.3, und die Formel

E1: =WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(WECHSELN(
D1;"10";"A");"11";"B");"12";"C");"13";"D");"14";"E");"15";"F");".";)

ergibt dann das gewünschte 'C0011403. Ab xl2007 kann man D1 in E1 einsetzen, wodurch man dann nur eine Formel erhält.

Anmerkungen

Ein Kuriosum ist in der letzten Zeile der Formel D1 der Term REST(B1;10^6). Er muss - statt einfach nur B1 - verwendet werden, da bei IP-Zahlen ab 134.217.255.255 sonst ein Fehler auftaucht - ein Bug in der Formel REST().

Die "Dezimalzahl" ist keine fortlaufende Zahl, sondern eine "sprechende" Zahl. Das bedeutet, dass jedes ihrer 3stelligen Segmente nicht von 0-999, sondern von 0-255 reicht. Damit werden fast 3/4 jedes Segments nicht genutzt, oder in anderen Worten: Die notwendige Information für eine IP4 ist nicht 1000^4, sondern nur 256^4.

Nun kommt die erfreuliche Nachricht für IP6: 1000^6 bewältigt Excel vor xl2007 nicht, aber 256^6 passt gerade noch! Das bedeutet, dass man den numerischen Gehalt von IP6 auch in älteren Excel-Versionen gerade noch abspeichern kann.

http://excelformeln.de/formeln.html?welcher=117 und http://excelformeln.de/formeln.html?welcher=262 wandeln zwischen HEX- und echten DEZ-Zahlen.