답변:
nixda가 의견에서 언급했듯이 도우미 열은이를 가능하게합니다. 이후에 시트를 유지 보수하는 두 가지 옵션이 있습니다.
절차는 다음과 같습니다.
IP 열을 선택하고 Data
>를 클릭하십시오Text-to-Columns
Delimted 옵션을 선택하고 Next를 클릭하십시오. 체크 Other
체크 박스를하고 기간을 입력 .
. 다음을 클릭하십시오.
모든 열을 유지하고 일반으로 유지하고 범위 아이콘을 클릭하여 Destination
섹션 을 편집 하십시오.
새 텍스트를 표시 할 열을 선택하십시오. Enter 키를 누르십시오.
범위가 선택되어 있는지 확인하고 Data
>를 클릭하십시오 Sort
. 정렬 기준을 입력하십시오. 각 옥텟에 대한 레벨을 계속 추가하십시오.
최종 결과는 다음과 같습니다.
나는 이것이 오래된 게시물이라는 것을 알고 있지만 작동하는 솔루션을 제공하기 위해 다음을 제시합니다.
이 수식을 인접한 셀에 넣고 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")
;
쉼표 ( ,
) 대신 세미콜론 ( ) 을 사용해야 합니다 .
…&"."&…
)을 생략하고 010121008030과 같은 일반 12 자리 숫자를 얻을 수 있습니다.이 숫자는 올바르게 정렬됩니다 (정렬 기능은 성가신 대화 상자를 표시 할 수는 있지만).
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
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)