【Excel】IP 주소의 각 옥텟·Prefix를 빼는 함수

목적



IP 주소 관리 효율성
네트워크 엔지니어의 작업 방식 개혁

전제


  • IP 주소는 A1 셀에 설명되어 있습니다.
  • B1 셀 ~ F1 셀을 계산에 사용한다.
  • Prefix 있어·없음의 ​​양쪽의 IP 주소에 대응한다.
  • Prefix 있는 경우, Prefix장을 뽑아낸다. (/없음)
  • Prefix 없는 경우, 공백을 돌려줍니다.


  • 기능



    B1 셀:1 옥텟 눈=LEFT(A1,FIND(".",A1)-1)
    C1 셀: 2 옥텟 눈=MID(LEFT(A1,FIND(".",A1,LEN(B1)+2)-1),LEN(B1)+2,3)
    D1 셀:3 옥텟 눈=MID(LEFT(A1,FIND(".",A1,LEN(B1&C1)+3)-1),LEN(B1&C1)+3,3)
    E1 셀: 4 옥텟 눈=SUBSTITUTE(RIGHT(A1,LEN(A1)-LEN(B1&C1&D1)-3),"/"&IFERROR(MID(A1,FIND("/",A1)+1,3),""),"")
    F1 셀: Prefix=SUBSTITUTE(RIGHT(A1,LEN(A1)-LEN(B1&C1&D1&E1)-3),"/","")
    덤: 추출한 각 수치를 결합하는 함수
    (E1을 E1+1로 하여 대향 기기에 할당할 때 등에 사용)=B1&"."&C1&"."&D1&"."&E1&IF(F1="","","/"&F1)

    이미지





    추가: Prefix 표기법에서 서브넷 마스크를 출력하는 함수



    A1 셀의 Prefix 서브넷 마스크를 표시합니다./16~/32까지 대응. 드디어 와일드 카드 마스크도.
    사실 IP 주소처럼 옥텟마다 1셀을 사용하는 것이 편하지만, 아무래도 하나의 셀에 들어갈 필요가 있어, 함수를 진짜로 짜서 실현.

    서브넷 마스크:


    =IF($A1="","",IF(RIGHT($A1,2)*1=16,"255.255.0.0",IF(RIGHT($A1,2)*1>24,"255.255.255."&256-2^(7-MOD(RIGHT($A1,2)-1,8)),"255.255."&256-2^(7-MOD(RIGHT($A1,2)-1,8))&".0")))
    들여쓰기를 붙인다.
    =IF($A1="","",
        IF(RIGHT($A1,2)*1=16,"255.255.0.0",
            IF(RIGHT($A1,2)*1>24,
               "255.255.255."&256-2^(7-MOD(RIGHT($A1,2)-1,8)),
               "255.255."&256-2^(7-MOD(RIGHT($A1,2)-1,8))&".0"
               )
           )
       )
    

    와일드 카드 마스크


    =IF($A1="","",IF(RIGHT($A1,2)*1=16,"0.0.255.255",(IF(RIGHT($A1,2)*1>24,"0.0.0."&2^(7-MOD(RIGHT($A1,2)*1-1,8))-1,"0.0."&2^(7-MOD(RIGHT($A1,2)*1-1,8))-1&".255"))))구조는 서브넷 마스크와 동일하다.

    ※처음에 A1셀이 공백인가를 확인하고 있는 것은, 이 함수를 복수행에 쭉 복사해 사용하는 것을 상정하고 있기 때문. 이것이 없으면 빈 줄에 대해 #VALUE를 반환하기 때문에 아름답지 않고 셀의 수만큼 RIGHT를 처리 해 버리기 때문에 늦어질지도,라고 생각하고 있다.
    ※Prefix는 RIGHT($A1,2) 로 취득하고 있다. RIGHT의 결과는 문자열로 반환되므로 거기에서 *1하여 숫자의 대소를 비교할 수 있도록 하고 있다. 위 그림과 같이 다른 셀에서 Prefix만 출력되어 있다면 RIGHT($A1,2)*1$F1 로 바꾸어도 OK.

    Prefix의 값 (F1 셀)에서 서브넷 마스크를 한 발 출력


    =IF($F1=0,"0.0.0.0",IF(INT(($F1-1)/8)>=1,"255."&IF(INT(($F1-1)/8)>=2,"255."&IF(INT(($F1-1)/8)>=3,"255.",""),""),"")&256-2^(8-(MOD($F1-1,8)+1))&IF(INT(($F1-1)/8)<3,".0"&IF(INT(($F1-1)/8)<2,".0"&IF(INT(($F1-1)/8)<1,".0",""),""),""))
    =IF($F1=0,"0.0.0.0",
        IF(INT(($F1-1)/8)>=1,"255."&
            IF(INT(($F1-1)/8)>=2,"255."&
                IF(INT(($F1-1)/8)>=3,"255."
                ,"")
            ,"")
        ,"")&
        256-2^(8-(MOD($F1-1,8)+1))&
        IF(INT(($F1-1)/8)<3,
            ".0"&
            IF(INT(($F1-1)/8)<2,".0"&
                IF(INT(($F1-1)/8)<1,.0",
                "")
            ,"")
        ,"")
    )
    

    ※/0~/32라면, 전부 33종류. 옥텟 수 4 × 각 옥텟 8 패턴의 처리라면 하나 부족하다. 그 때문에,/0을 특수 패턴으로서, 최초로 판별하고 있다.

    추가 _20201205 : Prefix가없는 네트워크 주소 (A1 셀)에서 첫 번째 호스트 주소를 출력


    =LEFT($A$1,FIND("Γ",SUBSTITUTE($A$1,".","Γ",LEN($A$1)-LEN(SUBSTITUTE($A$1,".","")))))&MID($A$1,FIND("Γ",SUBSTITUTE($A$1,".","Γ",LEN($A$1)-LEN(SUBSTITUTE($A$1,".",""))))+1,3)+1
    =LEFT($A$1,
        FIND("Γ",
            SUBSTITUTE($A$1,".","Γ",
                LEN($A$1)-
                LEN(UBSTITUTE($A$1,".",""))
            )
        )
    )&
    MID($A$1,
        FIND("Γ",
            SUBSTITUTE($A$1,".","Γ",
                LEN($A$1)-
                LEN(SUBSTITUTE($A$1,".",""))
            )
    +1,3)
    +1
    

    참고 : htp : // bg. 에 xse l-sys. 코m/엔트리/165/

    좋은 웹페이지 즐겨찾기