根据列中的最大值有条件地删除 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 duplicates
、here 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
宏非常易于安装和使用:
- ALT-F11 调出 VBE window
- ALT-I
ALT-M 打开一个新模块
- 粘贴内容并关闭 VBE window
如果您保存工作簿,宏也会随之保存。
如果您使用的 Excel 版本晚于 2003,则必须保存
文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE window
- 清除代码
- 关闭 VBE window
要使用来自 Excel 的宏:
- ALT-F8
- Select宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
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
.
首先按 word
和 order : A to Z
排序,然后按 Add Level
排序,然后按 value
和 order: 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 对数据集进行排序,然后添加一个层,并将值列排序为最高 - 最低,然后当您自动删除重复项时,您将保留具有最高值的重复项并删除其他的。不幸的是,这是一种专门针对您的情况的方案。我不知道有条件删除会有更多选择的任何其他方法。
我在 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 duplicates
、here 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
宏非常易于安装和使用:
- ALT-F11 调出 VBE window
- ALT-I ALT-M 打开一个新模块
- 粘贴内容并关闭 VBE window
如果您保存工作簿,宏也会随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE window
- 清除代码
- 关闭 VBE window
要使用来自 Excel 的宏:
- ALT-F8
- Select宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
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
.
首先按 word
和 order : A to Z
排序,然后按 Add Level
排序,然后按 value
和 order: 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 对数据集进行排序,然后添加一个层,并将值列排序为最高 - 最低,然后当您自动删除重复项时,您将保留具有最高值的重复项并删除其他的。不幸的是,这是一种专门针对您的情况的方案。我不知道有条件删除会有更多选择的任何其他方法。