From 0d7d0d8523efb5c713b015661fe92d328b7b1108 Mon Sep 17 00:00:00 2001 From: daryl Date: Fri, 18 Nov 2022 13:25:56 +1030 Subject: [PATCH] Fixups now it's working in excel for real --- excel/network_ip_masks | 57 +++++++++++------------------------------- 1 file changed, 15 insertions(+), 42 deletions(-) diff --git a/excel/network_ip_masks b/excel/network_ip_masks index 3ddfd49..7c96723 100644 --- a/excel/network_ip_masks +++ b/excel/network_ip_masks @@ -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)) -Calculate start of IP range: -============================ +Calculate start of IP range (i.e. 'network' address, FIRST HOST is +1 from this): +================================================================================= =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))) ) &"."& 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)) ) ) &"."& 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))) ) &"."& 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)) ) -Calculate end of IP range: -========================== +Calculate end of IP range (i.e. 'broadcast' address, LAST HOST is -1 from this): +================================================================================ =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))) ) &"."& 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)) ) ) &"."& 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))) ) &"."& 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))) -)-1 + 255-bin2dec(mid(REPT("1",B1)&rept("0",32-B1),25,8)) +) -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: ========================== @@ -109,6 +82,6 @@ Calculate number of hosts: 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/)