Chuck的工作表在一个列中包含一系列IP地址。这些格式为192.168.2.1。如果他对地址进行排序,则不会对它们进行数字排序。例如,Excel将192.168.1.100放在192.168.1.1和192.168.1.2之间。查克想知道是否有一种方法可以对一列IP地址进行排序,以便它们以正确的顺序出现。

发生这种情况是因为Excel将IP地址视为文本而不是数字或一系列数字。有几种方法可以解决此问题,在本技巧中,我将讨论其中的几种方法。您应该根据数据以及如何使用这些数据来选择适合您需求的方法。

一种方法是确保IP地址的每个八位位组由三位数字组成。 (八位位组是IP地址的每个部分,以句点分隔。)例如,您可以使用192.168.001.001代替192.168.1.1之类的地址。该“前填充”每个八位位组为零,如果您的所有IP地址都采用这种格式,则它们将正确排序。

如果您更喜欢使用公式来确保每个八位位组的前填充,则可以使用以下命令:

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

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

该公式很长,但仍然是一个公式。将其放在您的第一个IP地址旁边的列中(假设该地址位于单元格A1中),然后根据需要向下复制它。当您进行排序时,请按B列排序,然后地址将按照正确的顺序排列。

如果您使用大量IP地址,则可能需要创建一个用户定义的函数,该函数会将IP地址的每个八位字节前加零,然后返回完全格式化的IP。以下将执行任务:

Function FormatIP(IPAddr As String) As String     Dim Dot1 As Integer     Dim Dot2 As Integer     Dim Dot3 As Integer     Dim Octet1 As String     Dim Octet2 As String     Dim Octet3 As String     Dim Octet4 As String

Dot1 = InStr(1, IPAddr, ".", vbTextCompare)

Dot2 = InStr(Dot1 + 1, IPAddr, ".", vbTextCompare)

Dot3 = InStr(Dot2 + 1, IPAddr, ".", vbTextCompare)



Octet1 = Left(IPAddr, Dot1-1)

Octet2 = Mid(IPAddr, Dot1+1, Dot2-Dot1-1)

Octet3 = Mid(IPAddr, Dot2+1, Dot3-Dot2-1)

Octet4 = Mid(IPAddr, Dot3+1, Len(IPAddr))



FormatIP = Right("000" & Octet1, 3) & "."

FormatIP = FormatIP & Right("000" & Octet2, 3) & "."

FormatIP = FormatIP & Right("000" & Octet3, 3) & "."

FormatIP = FormatIP & Right("000" & Octet4, 3)

End Function

然后,在Excel中,您可以以这种方式使用UDF,假设您的原始IP地址在单元格A1中:

=FormatIP(A1)

另一种方法是将IP地址简单地划分为单独的列,将每个八位位组放在自己的列中。如果以这种方式使用“文本到列”工具,这很容易做到:

。确保IP地址右侧有三个空白列。

。选择包含IP地址的单元格范围。

。显示功能区的“数据”选项卡。

。单击“数据工具”组中的“文本到列”工具。 Excel启动“将文本转换为列”向导。 (请参见图1。)

。选择定界单选按钮。

。单击下一步。

。选中其他旁边的复选框,然后在该复选框的右侧输入句点。

。单击完成。

完成后,您可以像通常对数字进行排序一样对四列进行排序。然后,当您想将IP地址重新放在一起时,可以使用如下公式:

=A1 & "." & B1 & "." & C1 & "." & D1

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13481)适用于Microsoft Excel 2007、2010、2013和2016。