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

我在Excel中有一个2列文件,看起来像这样:第一列是一个值,第二列包含一个相应的单词。 但是,我需要删除所有在第1列中的值不是最高的副本。 基本上,清理这个数据表,有数百万条目。

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

我想删除第2列中没有第1列中最高值的所有重复项。列首先按列2sorting(因此这些词按字母顺序排列:AZ),其次排列为第1列(从最高到最低,因此最高值始终是每个单词的第一个值)。

我一直在尝试在Excel 2011中使用advanced filtering来实现此advanced filtering ,但似乎无法包括除列1中具有最高值的条目以外的所有重复条目的条件。

所需的输出如下所示:

 -2 cat -3 dog -2 milk -2 juice 

我一直在寻找答案的基础上conditionally removing duplicates的查询, 这里和这里 ,然而每个提供的解决scheme似乎是基于布尔条件(即有信息与否),而不是确定哪个值是最高的要删除重复的条件。

任何想法如何去解决这个问题?

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

select表格,然后从HOME -> Sort & FilterselectCustom Sort

首先按order : A to Z然后按order: Smallest to Largest Add Level和sortingorder: Smallest to Largest

用下面的公式创build一个列Key (我假设你的数据有标题,从单元格A1开始,然后在单元格C2input公式=IF(B2<>B3,0,1)并复制下来。

然后复制并粘贴特殊的值列C并在列Key Descending或筛选1上sorting

最后,复制已过滤的表格并将其粘贴到其他位置,然后将其全部选中,然后selectData -> Remove Duplicates并完成。 或者你可以先做最后一部分,然后运行上面的步骤。

试试这个简短的macros:

 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 

macros很容易安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开一个新的模块
  3. 粘贴东西,closuresVBE窗口

如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx

要删除macros:

  1. 如上所示调出VBE窗口
  2. 清除代码
  3. closuresVBE窗口

从Excel使用macros:

  1. ALT-F8
  2. selectmacros
  3. 触摸RUN

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

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

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

macros必须启用这个工作!

如果你有一个多列的date设置,当你从一个特定的列(即猫,狗等),删除重复项(它也删除整个行的数据select),删除重复函数保持第一个重复列并删除其余。 (这是假设你已经对你想删除重复的列的数据集az进行sorting)。 因此,如果您首先使用重复列将数据集sorting为AZ,然后添加一个图层,并将值列sorting为Highest – Lowest,那么当您删除重复项时,将自动保留具有最高值的副本并删除其他的。 不幸的是,这是一个特别适合你的情况。 我不知道有什么其他的方法有条件的删除将有更多的select。