在Excel中,根据另一列中的值,通过VBA或公式/函数的组合删除一列中的重复项

我无法准确自动地实现这一点。 我试过这里和这里讨论的方法,但是没有一个适用于我的scheme。

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

  • 列A包含通用格式的 IP地址
  • B列包含以下自定义格式的date/时间( d / mm / yyyy h:mm
  • 列C包含以下自定义格式的持续时间( h:mm:ss

这个数据包含了我需要删除的一些重复项,这些重复项是根据A列中的IP地址来决定的。但是,我所需要的标准是删除那些不是最长持续时间的重复项。 为了更好地解释我的情况,请参阅下面的示例图:

在这里输入图像说明

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

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

在这里输入图像说明

当然,在我的示例中,首先所有的数据都很好地按照IP地址和持续时间秒sorting。 在现实生活中,情况并非如此,但如果有必要的话,这对于我来说在任何解决scheme之前都可以做到。

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

我很高兴与任何解决scheme,无论是使用公式,函数或macros。

您可以使用助手列(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. 删除过滤的行