簡體   English   中英

根據列中的最大值有條件地刪除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排序(因此單詞按字母順序排列: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

宏非常易於安裝和使用:

  1. ALT-F11彈出VBE窗口
  2. ALT-I ALT-M打開一個新模塊
  3. 將內容粘貼並關閉VBE窗口

如果您保存工作簿,則宏將隨其一起保存。 如果您在2003年以后使用Excel版本,則必須將文件另存為.xlsm而不是.xlsx

刪除宏:

  1. 如上調出VBE窗口
  2. 清除代碼
  3. 關閉VBE窗口

要從Excel使用宏:

  1. ALT-F8
  2. 選擇宏
  3. 觸摸運行

要總體上了解有關宏的更多信息,請參見:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM