根据列中的最大值有条件地删除 Excel 中的重复项

Conditionally removing duplicates in Excel based on largest value in a Column

我在 Excel 中有一个 2 列数据,如下所示: 第一列是一个值,第二列包含一个对应的词。但是,我想删除此数据集中的行,这样,最后,对于第二列中的每个唯一单词,只保留一行,其中第一列中的值是该单词的最大值,甚至删除那些具有为每个独特的词重复最大值,并为每个独特的词留下一行。

2   cat
2   cat
1   cat
3   dog
2   dog
1   dog
2   milk
1   milk
2   juice
1   juice

列首先按第 2 列排序(因此单词按字母顺序:A-Z)然后按第 1 列排序(从大到小,因此最大值始终是每个单词的第一个值)。

我一直在尝试使用 Excel 中的 advanced filtering 为 Mac 2011 执行此操作,但我似乎无法包含删除除条目之外的所有重复条目的条件在第 1 列中具有最大值的值。

期望的输出如下:

2   cat
3   dog
2   milk
2   juice

我一直在根据查询 conditionally removing duplicateshere and here 寻找答案,但是提供的每个解决方案似乎都基于布尔条件(即是否有信息),并不确定哪个值最大作为删除重复项的条件。

关于如何解决这个问题有什么想法吗?

试试这个简短的宏:

Sub SaveTheFirstItem()
    Dim N As Long, i As Long

    N = Cells(Rows.Count, 1).End(xlUp).Row
    For i = N To 2 Step -1
        If Cells(i, 2) = Cells(i - 1, 2) Then
            Cells(i, 2).EntireRow.Delete
        End If
    Next i
End Sub

宏非常易于安装和使用:

  1. ALT-F11 调出 VBE window
  2. ALT-I ALT-M 打开一个新模块
  3. 粘贴内容并关闭 VBE window

如果您保存工作簿,宏也会随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx

删除宏:

  1. 如上所述调出 VBE window
  2. 清除代码
  3. 关闭 VBE window

要使用来自 Excel 的宏:

  1. ALT-F8
  2. Select宏
  3. 触摸运行

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

必须启用宏才能运行!

如果你不想使用 VBA 你可以试试这个:

Select table 从 HOME -> Sort & Filter select Custom Sort.

首先按 wordorder : A to Z 排序,然后按 Add Level 排序,然后按 valueorder: Smallest to Largest 排序。

使用以下公式创建列 Key(我假设您的数据有 headers 并从单元格 A1 开始。然后在单元格 C2 中输入公式=IF(B2<>B3,0,1) 并抄下来。

然后复制并粘贴 special as values 列 C 并在 Key Descending 列上排序或在 1

上过滤

最后,复制过滤后的 table 并将其粘贴到其他地方,然后 select 全部和 Data -> Remove Duplicates 就完成了。或者您可以先执行最后一部分,然后 运行 上述步骤。

如果您有一个包含多列的日期集,当您从特定列(即猫、狗等)中删除重复项时(它还会删除该数据选择的整行),删除重复项功能会保留列中的第一个副本并删除其余部分。 (这是假设您已经为要从中删除重复项的列对数据集 a-z 进行了排序)。因此,如果您首先将重复列作为 A-Z 对数据集进行排序,然后添加一个层,并将值列排序为最高 - 最低,然后当您自动删除重复项时,您将保留具有最高值的重复项并删除其他的。不幸的是,这是一种专门针对您的情况的方案。我不知道有条件删除会有更多选择的任何其他方法。