Fixups now it's working in excel for real

This commit is contained in:
daryl
2022-11-18 13:25:56 +10:30
parent a1e88c0c40
commit 0d7d0d8523

View File

@@ -13,89 +13,62 @@ bin2dec(mid(REPT("1",B1)&rept("0",32-B1),17,8))&"."&
bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8)) bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8))
Calculate start of IP range: Calculate start of IP range (i.e. 'network' address, FIRST HOST is +1 from this):
============================ =================================================================================
=BITAND( =BITAND(
(LEFT(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),0))-1)) (LEFT(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160)))-1))
, ,
(bin2dec(mid(REPT("1",B1)&rept("0",32-B1),1,8))) (bin2dec(mid(REPT("1",B1)&rept("0",32-B1),1,8)))
) )
&"."& &"."&
BITAND( BITAND(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-find(char(160),SUBSTITUTE(C1,".",CHAR(160),1)))) (MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))-1))
, ,
(bin2dec(mid(REPT("1",B1)&rept("0",32-B1),9,8)) ) (bin2dec(mid(REPT("1",B1)&rept("0",32-B1),9,8)) )
) )
&"."& &"."&
BITAND( BITAND(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),2)))) (MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-1))
, ,
(bin2dec(mid(REPT("1",B1)&rept("0",32-B1),17,8))) (bin2dec(mid(REPT("1",B1)&rept("0",32-B1),17,8)))
) )
&"."& &"."&
BITAND( BITAND(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))+1,find(char(160),SUBSTITUTE(A1&".",".",CHAR(160),4))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))-1)) (MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))+1,len(A2)-find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))))
, ,
bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8)) bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8))
) )
Calculate end of IP range: Calculate end of IP range (i.e. 'broadcast' address, LAST HOST is -1 from this):
========================== ================================================================================
=BITOR( =BITOR(
(LEFT(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),0))-1)) (LEFT(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160)))-1))
, ,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),1,8))) (255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),1,8)))
) )
&"."& &"."&
BITOR( BITOR(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-find(char(160),SUBSTITUTE(C1,".",CHAR(160),1)))) (MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))-1))
, ,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),9,8)) ) (255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),9,8)) )
) )
&"."& &"."&
BITOR( BITOR(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),2)))) (MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-1))
, ,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),17,8))) (255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),17,8)))
) )
&"."& &"."&
BITOR( BITOR(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))+1,find(char(160),SUBSTITUTE(A1&".",".",CHAR(160),4))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),3)))) (MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))+1,len(A2)-find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))))
, ,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8))) 255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8))
)-1 )
Calculate Broadcast IP:
=======================
=BITOR(
(LEFT(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),0))-1))
,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),1,8)))
)
&"."&
BITOR(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),1))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))-find(char(160),SUBSTITUTE(C1,".",CHAR(160),1))))
,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),9,8)) )
)
&"."&
BITOR(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))+1,find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),2))))
,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),17,8)))
)
&"."&
BITOR(
(MID(A1, find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))+1,find(char(160),SUBSTITUTE(A1&".",".",CHAR(160),4))-find(char(160),SUBSTITUTE(A1,".",CHAR(160),3))))
,
(255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8)))
)
Calculate number of hosts: Calculate number of hosts:
========================== ==========================
@@ -109,6 +82,6 @@ Calculate number of hosts:
Convert traditional netmask in A1 to CIDR: Convert traditional netmask in A1 to CIDR:
="/"&32-LEN(SUBSTITUTE(TEXT(DEA1BIN(MID(A1,1,FIND(".",A1)-1)),"00000000")&TEXT(DEA1BIN(MID(A1,1+FIND(".",A1),FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)),"00000000")&TEXT(DEA1BIN(MID(A1,1+FIND(".",A1,FIND(".",A1)+1),FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1)),"00000000")&TEXT(DEA1BIN(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))),"00000000"),"1","")) ="/"&32-LEN(SUBSTITUTE(TEXT(DEC2BIN(MID(A1,1,FIND(".",A1)-1)),"00000000")&TEXT(DEC2BIN(MID(A1,1+FIND(".",A1),FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)),"00000000")&TEXT(DEC2BIN(MID(A1,1+FIND(".",A1,FIND(".",A1)+1),FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-FIND(".",A1,FIND(".",A1)+1)-1)),"00000000")&TEXT(DEC2BIN(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))),"00000000"),"1",""))
(ref https://www.reddit.com/r/excel/comments/9ivaal/simple_formula_ip_subnet_masks_to_cidr/) (ref https://www.reddit.com/r/excel/comments/9ivaal/simple_formula_ip_subnet_masks_to_cidr/)