按列包含IP地址(每个单元格一个IP地址)对电子表格进行排序

时间:2011-10-18 20:15:51

标签: excel sorting ip-address spreadsheet google-sheets

使用默认排序引擎,以下列表被视为已排序:

10.0.0.219
10.0.0.22
10.0.0.223

这是不正确的。排序应该是:

10.0.0.22
10.0.0.219
10.0.0.223

假设前三个八位字节是静态的是不安全的。例如,其他IP地址包括:

10.35.10.11
10.28.66.30

2 个答案:

答案 0 :(得分:4)

有几种方法可以做到这一点,不确定这是为了更长久的使用还是仅仅一次性使用。

  1. 文字到列

      

    您可以将IP地址拆分为列,并使用高级排序将数据排序为表格。

  2. 排序

      

    使用内置的分拣机,您可以创建自定义排序顺序。如果您只是在同一个八位字节(例如10.0.0.x)中执行地址,则可以添加10.0.0。作为您的订单,它将在左侧进行数字排序。这可能不是预期的,但它再次起作用。

  3. 隐藏栏

      

    Google提出了一些涉及额外列的答案,其中您将IP地址分解为数字值,然后对该列进行排序。

  4. VBA

      

    可以在VBA中完成所有操作并将所有数据压入内存并重写列表。这里的优点是重用和扩展的能力。

答案 1 :(得分:1)

我意识到这是一个老帖子,但为了提供有效的解决方案,我提出以下内容。

只需将此公式放在相邻的单元格中,并更新引用以指向包含IP地址的单元格(本例中为A1)。这将产生类似于010.121.008.030的结果,然后可以按字母顺序(正确)对其进行排序。然后将列宽设置为零并瞧。是时候享用一杯咖啡了。

=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")