IP 주소별로 Excel 열 정렬


17

네트워크에있는 항목 (예 : 프린터, 서버, 워크 스테이션, 네트워크 프로젝터 등)을 나열하는 상당히 큰 (200 행 이상) Excel 스프레드 시트가 있으며 첫 번째 열 중 하나는 IP 주소 필드 192.168.x.y입니다. 정렬하려고 할 때 내 문제는 (예를 들어)에서로 이동 192.168.0.85한다는 것 192.168.0.9입니다. 내가보고 싶은 것은 그것이 처음 3 옥텟에 따라 분류하고, 논리적으로 다음 마지막 옥텟 (즉 .1, .2, .3, 등). 이게 가능해? 그렇다면 어떻게?

답변:


19

nixda가 의견에서 언급했듯이 도우미 열은이를 가능하게합니다. 이후에 시트를 유지 보수하는 두 가지 옵션이 있습니다.

  • split helper 열에 모든 새 IP를 추가하십시오.
  • 새로운 추가를 위해 텍스트-컬럼 절차를 반복하십시오.

절차는 다음과 같습니다.

  1. IP 열을 선택하고 Data>를 클릭하십시오Text-to-Columns 텍스트-컬럼

  2. Delimted 옵션을 선택하고 Next를 클릭하십시오. 체크 Other체크 박스를하고 기간을 입력 .. 다음을 클릭하십시오. 를 선택하십시오.  구분자로

  3. 모든 열을 유지하고 일반으로 유지하고 범위 아이콘을 클릭하여 Destination섹션 을 편집 하십시오. 대상 변경 1

  4. 새 텍스트를 표시 할 열을 선택하십시오. Enter 키를 누르십시오. 목적지 2 변경

  5. 범위가 선택되어 있는지 확인하고 Data>를 클릭하십시오 Sort. 정렬 기준을 입력하십시오. 각 옥텟에 대한 레벨을 계속 추가하십시오. 정렬

  6. 최종 결과는 다음과 같습니다. 결과


@nixda Yea, 느린 찌르기 : P 내가 당신의 길을 던질 수 있으면 좋겠다
Canadian Luke

죄송합니다, @nixda! 답변을 추가하는 것도 불법입니까?
rishimaharaj

글쎄, 그것은 효과가 있었다 ... 두 15 여분의 포인트를 넘어 싸울 시간
캐나다 루크

7

나는 이것이 오래된 게시물이라는 것을 알고 있지만 작동하는 솔루션을 제공하기 위해 다음을 제시합니다.

이 수식을 인접한 셀에 넣고 IP 주소를 포함하는 셀 (이 예에서는 A1)을 가리 키도록 참조를 업데이트하십시오. 이 결과는 010.121.008.030과 비슷한 결과를 생성하며 알파벳순으로 (정확하게) 정렬 될 수 있습니다. 그런 다음 새 열의 너비를 0으로 설정하십시오. 한 잔의 커피를 즐길 시간입니다.

=TEXT(MID(A1,1,FIND(".",A1)),"000")&"."&TEXT(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-1-FIND(".",A1)),"000")&"."&TEXT(MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-1-FIND(".",A1,FIND(".",A1)+1)),"000")&"."&TEXT(MID(A1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)+1,LEN(A1)),"000")

2
이것을 사랑하십시오. 하나의 공식, "도우미"단일 열. 감사.
Ears

모든 Excel 수식과 마찬가지로 시스템의 국가 별 설정에 따라 ;쉼표 ( ,) 대신 세미콜론 ( ) 을 사용해야 합니다 .
Scott

1
연결 된 기간 ( …&"."&…)을 생략하고 010121008030과 같은 일반 12 자리 숫자를 얻을 수 있습니다.이 숫자는 올바르게 정렬됩니다 (정렬 기능은 성가신 대화 상자를 표시 할 수는 있지만).
Scott

1
Sub IPSplit()

HeaderRow = 1
ColimnName = "A"
BeginIPaddsressData = 2

Dim HeaderArray As Variant
HeaderArray = Array("IP oct 1", "IP oct 2", "IP oct 3", "IP oct 4")

Dim Octet() As String
Dim RangeSearch As Range, RangeFound As Range, LastCell As Range
Dim LastCellRowNumber As Long, LastCellColumnNumber As Long, RowNumber As Long

With ActiveSheet
Set LastCell = .Cells(HeaderRow, .Columns.Count).End(xlToLeft)
LastHeaderColumnNumber = LastCell.Column

Set RangeSearch = Range("1:1")
Set RangeFound = RangeSearch.Find(What:=HeaderArray(0), LookIn:=xlValues)

If RangeFound Is Nothing Then
RowNumber = 2
    If .Cells(RowNumber, .Columns.Count) <> vbNullString Then
        Set LastCell = .Cells(RowNumber, .Columns.Count)
        LastCellColumnNumber = LastCell.Column
    Else
        Set LastCell = .Cells(RowNumber, .Columns.Count).End(xlToLeft)
'Specifies the last column LastCellColumnNumber.

        LastCellColumnNumber = LastCell.Column
    End If

Range(Cells(HeaderRow, LastCellColumnNumber + 1), Cells(HeaderRow, LastCellColumnNumber + 4)).Value = HeaderArray
'Insert Header

Else
LastCellColumnNumber = RangeFound.Column - 1
End If

Set LastCell = .Cells(.Rows.Count, ColimnName).End(xlUp)
'Specifies the last cell number in the column ColimnName.

LastCellRowNumber = LastCell.Row   
End With

    For I = BeginIPaddsressData To LastCellRowNumber

    Octet = Split(Cells(I, ColimnName).Value, ".")
    For O = 0 To 3       
'cells populate the values of octets 1-4.
      If (UBound(Octet) - O) >= 0 Then      
         Cells(I, ColimnName).Offset(0, LastCellColumnNumber + O).Value = Octet(O)
      End If
    Next
Next
End Sub

나는 지금 (직장이 아닌) 그것을 테스트 할 수는 없지만 일할 때 시도 할 것입니다. 이 매크로를 실행하기 위해 '리조트'버튼을 추가하면 더 긴 목록에 더 적합 할 것 같습니다.
캐나다 Luke

@CanadianLuke BigIntIP 열을 만들 수도 있습니다. 그런 다음 모든 IP 주소를 정렬하고 그 반대로 AZ를 정렬 할 수 있습니다.
STTR

이것은 잘 작동합니다! 내 유일한 요청은 프린터가 추가 될 때 기존 열을 재사용한다는 것입니다.
Canadian Luke

@CanadianLuke 제목 "IP oct 1"의 이름을 바꾸면 열이 오른쪽에 추가됩니다. 그리고 오래된 것이 남아 있습니다. 이야기가 필요한 경우입니다. 예를 들어 한 네트워크에서 다른 네트워크로 마이그레이션 할 때. 어쩌면 나는 그 질문을 잘 이해하지 못했을 것입니다 ...
STTR

0

John Homer의 답변 외에도 TEXT함수가 존재하지 않기 때문에 Apple의 Numbers 응용 프로그램에서도 작동하는 수식을 제공합니다 . Google 문서에서도 테스트되었습니다.

=DEC2HEX(LEFT(B2,FIND(".",B2)-1),2)
&
DEC2HEX(MID(
    B2,
    FIND(".",B2)+1,
    FIND(
        ".",
        B2,
        FIND(".",B2)+1
    ) - FIND(".",B2) - 1
),2)
&
DEC2HEX(MID(
    B2,
    FIND(
        ".",
        B2,
        FIND(".",B2)+1
    ) + 1,
    FIND(
        ".",
        B2,
        FIND(
            ".",
            B2,
            FIND(".",B2)+1
        )+1
    ) - FIND(
        ".",
        B2,
        FIND(".",B2)+1
    ) - 1
),2)
&
DEC2HEX(RIGHT(
    B2,
    LEN(B2) - FIND(
        ".",
        B2,
        FIND(
            ".",
            B2,
            FIND(".",B2)+1
        )+1
    )
),2)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.