根据列中的最高值有条件地删除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 & Filter
selectCustom Sort
。
首先按order : A to Z
然后按order: Smallest to Largest
Add Level
和sortingorder: Smallest to Largest
。
用下面的公式创build一个列Key
(我假设你的数据有标题,从单元格A1
开始,然后在单元格C2
input公式=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很容易安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果您保存该工作簿,该macros将与它一起保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除macros:
- 如上所示调出VBE窗口
- 清除代码
- closuresVBE窗口
从Excel使用macros:
- ALT-F8
- selectmacros
- 触摸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。