[英]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排序(因此單詞按字母順序排列:AZ),其次按列1排序(從最大到最小,因此,最大值始終是每個單詞的第一個值)。
我一直在嘗試使用Excel for Mac 2011中的advanced filtering
來執行此操作,但是我似乎無法包括刪除所有重復條目的條件,但第1列中具有最大值的條目除外。
所需的輸出如下:
2 cat
3 dog
2 milk
2 juice
我一直在尋找基於查詢的答案conditionally removing duplicates
, 這里和這里 ,但每種方法提供的解決方案似乎是基於布爾條件(即有信息或沒有),而不是確定哪個值最大為是否要刪除重復項的條件。
關於如何解決這個問題的任何想法?
如果您不想使用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)
並向下復制。
然后復制和粘貼special作為值列C
並在Key
Descending
列上排序或在1
過濾
最后,復制過濾后的表格並將其粘貼到其他位置,然后全部選擇,然后選擇“ Data -> Remove Duplicates
然后完成。 或者,您可以先完成最后一部分,然后再執行上述步驟。
如果您將日期設置為多列,則當您從特定列(例如貓,狗等)中刪除重復項時(也會刪除該數據選擇的整個行),刪除重復項功能會將第一個重復項保留在列並刪除其余部分。 (這是假設您已對要從中刪除重復項的列的數據集az進行了排序)。 因此,如果您首先將重復項排序為AZ來對數據集進行排序,然后添加一個將value列排序為“最高-最低”的圖層,那么當您自動刪除重復項時,您將保留具有最高值的重復項並刪除其他的。 不幸的是,這是一種特別適合您的情況的方案。 我不知道有條件刪除將有更多選擇的任何其他方法。
試試這個簡短的宏:
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/zh-CN/library/ee814735(v=office.14).aspx
必須啟用宏才能使其正常工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.