如何建立一個公式來計算重複項的數量,返回我選擇的儲存格中的值,然後刪除重複項?

如何建立一個公式來計算重複項的數量,返回我選擇的儲存格中的值,然後刪除重複項?

我有一個列表,排序後如下所示:

粗略清單

我需要一個公式來傳回每個條目列出的次數並刪除所有重複項。通常,我只是用眼睛計算數字或突出顯示相同的數字,並將計算的“計數”記錄在電子表格底部。然後我返回並刪除所有重複項,這是一個有點乏味的過程,我忍不住認為有一種更簡單的方法可以做到這一點。

我嘗試使用過濾器功能返回相鄰列中沒有數字的條目,但是當我去刪除重複項時,條目會向上移動,以便我已經手動輸入的數字不匹配。說實話,我有一種感覺,有一種方法可以讓 Excel 計算並記錄每個條目出現的次數(甚至不必先對其進行排序),但我對邏輯公式和我的搜索很弱萬維網的完成導致了相關查詢,但並沒有真正幫助我弄清楚如何做到這一點。

目前我使用 Microsoft 365 版本的 Excel。

最終,我希望清單看起來像這樣:

完成清單

但更省力。

對於那些想要了解更多詳細資訊的人,請繼續閱讀以了解更大的情況。作為一個對健康飲食感興趣的人,我會追蹤微量營養素的攝取量,以確保我攝取足夠的量並且不超過任何建議的限度。我每週一次查看這些數據並確定我攝取不足的營養素。我有一個主電子表格,其中列出了各種營養素最豐富的食物。它看起來像這樣:

營養素清單以及富含這些營養素的食物

正如您所看到的,某些食物出現在多個列表中,並且因為我一天只能吃這麼多食物,所以我想專注於那些對我來說更划算的食物,因為它們出現在多個列表中。通常,我只需將識別出缺陷的列複製並貼上到單個列中,然後按字母順序對其進行排序以獲得計數。我添加這個細節是因為我有一種感覺,真正的 Excel 超級用戶甚至不必像我那樣費心進行笨重的複製和粘貼,只需從這個食品主電子表格中按營養成分提取數字即可。

預先感謝任何可以幫助我更有效地使用 Excel 的人。

答案1

我的建議僅涉及第一部分(產品排序清單):
食物
您可以將清單放入 Excel 表格中,例如Table1,將此清單稱為Table1[List]
在列中CD您將獲得單鍊錶及其計數。
公式C2=UNIQUE(Table1[List])
公式D2=COUNTIF(Table1[List],C2#)
作為下一步,您可以對這兩個欄位進行排序,如列F和所示G
公式為F2=SORT(HSTACK(C2#,D2#),2,-1)

答案2

如果您有以下數據並且正在使用MS365,那麼您可以執行以下方法:

纖維 碳粉匣 氟化物
海軍豆 牛奶 強化穀物 南瓜子 牛肉 螃蟹 小麥胚芽 烤馬鈴薯 巴西堅果 紅茶
扁豆 優格 麥麩片 杏仁 南瓜子 龍蝦 紅薯 牛奶 葵花籽
斑豆 帕瑪森起司 粗粒 菠菜 葵花籽 香菇 羽衣甘藍 鮪魚 葡萄乾
鷹嘴豆 瑞士人 格蘭諾拉麥片 黑豆 扁豆 白色按鈕 豌豆 火雞 鮭魚 山莓
利馬豆 乾酪 碎小麥 鮭魚 火雞 波塔貝拉斯 松子 海軍豆 龍蝦 煮熟的燕麥片
酪梨 菠菜 奶油米 優格 克雷米尼斯 榛子 啤酒
南瓜子 羽衣甘藍 牛肉 牛奶 香菇 紅薯 胡桃 豬裡肌肉 紅葡萄酒
芝麻籽 蘿蔔青菜 碎牛肉 酪梨 蘿蔔青菜 燕麥 牛肉 烈性蘋果酒
杏仁 綠色花椰菜 牛裡肌肉 香蕉 烤馬鈴薯 利馬豆 羊肉 粗粒
開心果 黑眼豆豆 水牛牛腰肉 菠菜 鷹嘴豆 黑豆湯
胡桃 海軍豆 地面野牛 葵花籽 海軍豆 火雞 烤馬鈴薯
葵花籽 鮭魚 波特豪斯 南瓜子 扁豆 海軍豆 蘿蔔
橡子南瓜 橡子南瓜 牛肉燉肉 巴西堅果 菠菜 斑豆 菠菜
哈伯德南瓜 龍蝦 豬裡肌肉 核桃 鳳梨 利馬豆 哈密​​瓜

• 使用僅GROUPBY()適用於MS365--> 的函數Office Insiders

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     GROUPBY(_SingleCol,_SingleCol,ROWS,,0,-2))

或者,使用BYROW()MMULT()

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     _Uniq, UNIQUE(_SingleCol),
     _Counts, MMULT(N(_Uniq=TOROW(_SingleCol)),SEQUENCE(ROWS(_SingleCol))^0),
     HSTACK(_Uniq,_Counts))

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     _Uniq, UNIQUE(_SingleCol),
     _Counts, BYROW(_Uniq,LAMBDA(x,SUM(--(x=_SingleCol)))),
     HSTACK(_Uniq,_Counts))

  • 上述所有公式給出了每個唯一記錄的計數。
  • 使用TOCOL()函數將多個範圍資料轉換為單列數組,並排除重複項。
  • 方法一--> 在第一種方法中,使用了GROUPBY()設計為 的函數groupaggregatesort根據我們指定的欄位。但是,上述功能Office-Insiders一直存在,除非您啟用了該選項,否則這將無法運作並顯示為#NAME!錯誤。
  • 方法二--> 也從函數開始LET(),這樣更容易閱讀並減少冗餘範圍/公式的使用。
  • 與第一種方法一樣,它首先應用TOCOL()函數,然後使用UNIQUE()函數返回唯一值,最後使用MMULT()函數返回計數,即兩個給定數組的矩陣乘積。
  • 最後,使用 using組合使用和函數HSTACK()傳回的陣列以傳回所需的輸出。UNIQUE()MMULT()
  • 方法三--> 從與上面相同的步驟開始,除了它使用BYROW()函數來獲取每個項目的匹配計數。

但是,如果您發現這些方法很複雜,那麼您也可以使用最簡單的方法,如下所示:

在此輸入影像描述


  • 首先,使用TOCOL()&UNIQUE()函數將多個範圍傳回到一個陣列中,排除空值和重複項。並放入一個單元格中,比如說L2

=UNIQUE(TOCOL(A3:J16,1))

  • 最後,輸入以下函數來取得計數。請記住,我已經採用了A3:A16您可能需要根據您的套裝進行更改的資料範圍。下面的內容不需要填寫,因為它會溢出。L2上面使用TOCOL()and返回的公式在哪裡UNIQUE()

=COUNTIFS(A3:J16,L2#)

如果您仍然不願意遵循上述內容,那麼您可以使用POWER QUERY從 開始可用的Excel 2010+,可用在Windows Excel 2010+Excel 365 (Windows or Mac)

在此輸入影像描述


若要使用 Power Query,請執行下列步驟:

  • 首先將來源範圍轉換為表並相應命名,在本例中我將其命名為Table1

  • Data接下來,從Tab --> Get & Transform Data--> Get Data--> From Other Sources-->開啟一個空白查詢Blank Query

  • 上面的內容讓Power Query視窗打開,現在從HomeTab --> --> 並透過刪除您看到的任何內容來Advanced Editor貼上以下內容,然後按M-CodeDone

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Value"}, {{"Count", each Table.RowCount(_), Int64.Type}})
in
    #"Grouped Rows"

  • 最後,要將其導入回Excel--> 單擊Close & LoadClose & Load To--> 單擊的第一個將創建一個New Sheet具有所需輸出的文件,而後者將提示一個窗口,詢問您將結果放在哪裡。

注意:公式無法刪除重複項,而是在遵循特定條件放置在儲存格中時提取值。就像我上面展示的。您基本上需要UNIQUE(), TOCOL()&COUNTIF()COUNTIFS()function 來獲得所需的輸出


Rough List只需將此公式放在任何空白單元格中,其中List的名稱是Table

在此輸入影像描述


=LET(
     _Uniq, UNIQUE(List),
     _Output, SORT(HSTACK(_Uniq, COUNTIF(List,_Uniq)),2,-1),
     VSTACK({"Nutrients","Counts"},_Output))

如果適用的話,函數會比較容易GROUPBY()

=GROUPBY(List,List,ROWS,,0,-2)

相關內容