我在Excel中有一个2列数据,如下所示: 第一列是值,第二列包含相应的单词。但是,我想删除此数据集中的行,以便最后,对于第二列中的每个唯一字,只保留一行,第一列中的值对于该字最大,甚至删除那些行每个唯一单词的最大值的副本,并为每个唯一单词留下一行。
2 cat
2 cat
1 cat
3 dog
2 dog
1 dog
2 milk
1 milk
2 juice
1 juice
列首先由第2列排序(因此单词按字母顺序排列:AZ),其次是第1列(从最大到最小,因此最大值始终是每个单词的第一个值)。
我一直在尝试使用Excel for Mac 2011中的advanced filtering
来执行此操作,但我似乎无法包含删除所有重复条目的条件,但条目1中具有最大值的条目除外。< / p>
所需的输出如下:
2 cat
3 dog
2 milk
2 juice
我一直在根据查询conditionally removing duplicates
,here和here搜索答案,但是所提供的每个解决方案似乎都基于布尔条件(即有信息)或者没有),并且没有确定哪个值是最大的值作为删除副本的条件。
关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
如果您不想使用VBA,可以试试这个:
选择表格,然后从HOME -> Sort & Filter
选择Custom Sort
。
首先按word
与order : A to Z
然后Add Level
排序,然后按value
与order: Smallest to Largest
排序。
使用以下公式创建列Key
(我假设您的数据包含标题并从单元格A1
开始。然后在单元格C2
中输入公式=IF(B2<>B3,0,1)
和复制下来。
然后复制并粘贴特殊值列C
,并对列Key
Descending
进行排序或对1
最后,复制已过滤的表格并将其粘贴到其他位置,然后选择全部并Data -> Remove Duplicates
完成。或者你可以先完成最后一部分然后再执行上述步骤。
答案 1 :(得分:1)
试试这个短宏:
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
宏非常易于安装和使用:
如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除宏:
要使用Excel中的宏:
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其生效!
答案 2 :(得分:1)
如果您设置了包含多个列的日期,当您从特定列(即cat,dog等)中删除重复项时(它还会删除该数据选择的整行),删除重复功能会保留第一个在列中复制并删除其余部分。 (这假设您已为要从中删除重复项的列对数据集a-z进行了排序)。因此,如果首先使用重复列将数据集排序为AZ,则添加一个值为“最高 - 最低”的值列,然后当您自动删除重复项时,可以保留具有最高值的副本并删除其他的。不幸的是,这是一个专门针对您的情况的方案。我不知道有条件删除会有更多选择的任何其他方法。