【问题标题】:In Excel, remove duplicates from one column based on the values in another column, either through VBA or a combination of formulas/functions在 Excel 中,通过 VBA 或公式/函数的组合,根据另一列中的值从一列中删除重复项
【发布时间】:2017-03-24 03:24:54
【问题描述】:

我在尝试以准确和自动化的方式实现这一目标时遇到了麻烦。我已经尝试过hereherehere 讨论的方法,但在我的场景中都没有。

我有一个包含数千行数据的电子表格。数据组织如下:

  • A 列包含常规格式的 IP 地址
  • B 列包含以下自定义格式的日期/时间 (d/mm/yyyy h:mm)
  • C 列包含以下自定义格式的持续时间 (h:mm:ss)

根据 A 列中的 IP 地址,此数据包含我需要删除的多个重复项。但是,我需要的标准是删除不是持续时间最长的重复项。为了更好地解释我的场景,请参见下面的示例图片:

我需要一种方法来删除不包含该 IP 地址最长持续时间的特定 IP 地址的所有重复项。因此,使用上面的示例,第 3 行将被删除,因为 1 分钟的持续时间比包含相同 IP 地址的第 4 行中的 36 分钟短。

另一个例子是第 5、6 和 7 行也将被删除,因为它们的所有持续时间都短于具有相同 IP 地址但持续时间较长的第 8 行。当然,任何已经包含唯一 IP 地址的行都将被单独保留。使用我上面的示例的最终结果如下:

当然,在我上面的示例中,所有数据都很好地按 IP 地址第一和持续时间排序。在现实生活中并非如此,但如果有必要,在任何解决方案之前我都可以轻松做到这一点。

关键是,在某些情况下,一个 IP 地址可能会重复一次,而在其他情况下,它可能会重复多次。我只需要确保只剩下持续时间最长的那个。如果 IP 地址的多个实例具有相同的最长持续时间,那么我希望它们全部保留。也就是说,如果一个 IP 地址重复了十次,其中两次最长持续时间是一个小时,那么它们都需要保留。

我对任何解决方案都很满意,无论是使用公式、函数还是宏。

【问题讨论】:

  • 所以日期不重要?
  • C列从大到小排序,并在A列上使用Excel函数“删除重复项”?编辑:不适用于您的最终标准(保持具有相同持续时间的重复项)。
  • 如果日期无关紧要,并且您只是在 A 列中查找唯一值,然后在 C 列中获取所有这些唯一值的 max,那么您应该使用这篇文章获取所有唯一的 IP 值:stackoverflow.com/questions/40514343/…(因为 IP 值是文本值)。然后根据A 列中的文本在C 列中获取max,然后根据A 列和C 列的匹配在B 列中获取date

标签: excel excel-formula excel-2010 vba


【解决方案1】:

您可以使用帮助列(D 列)解决您的任务。

  1. 将以下数组公式插入单元格 D2:

    =IF($C2=MAX(IF($A2=$A$2:$A$50,$C$2:$C$50,-1)),"Remain","Remove")

    其中 50 - 表格的最后一行

    记得按Ctrl+Shift+Enter正确完成数组公式。

  2. 将公式复制/粘贴到其他单元格。

  3. 通过“删除”值对 D 列应用过滤器

  4. 删除过滤的行。

【讨论】:

  • 谢谢!这为我节省了很多时间。 :)
猜你喜欢
  • 2021-12-02
  • 2018-12-01
  • 2015-08-03
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
相关资源
最近更新 更多