如何创建一个公式来计算重复项的数量,返回我选择的单元格中的值,然后删除重复项?

如何创建一个公式来计算重复项的数量,返回我选择的单元格中的值,然后删除重复项?

我有一个列表,排序后如下所示:

粗略清单

我需要一个公式来返回每个条目列出的次数并删除所有重复项。通常,我只是用眼睛计算数字,或者突出显示相同的数字,并在电子表格底部记录计算出的“计数”。然后我返回并删除所有重复项,这是一个有点繁琐的过程,我不禁想到有一种更简单的方法来做到这一点。

我曾尝试使用筛选功能返回相邻列中没有数字的条目,但当我删除重复项时,条目会上移,因此我手动输入的数字会不匹配。说实话,我觉得有一种方法可以让 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()函数将多个范围的数据转换为单列数组,排除重复项。
  • 方法 1--> 在第一种方法中,使用了GROUPBY()专门设计的函数groupaggregatesort根据我们指定的字段。但是,所述函数处于启用Office-Insiders状态,因此,除非您启用了该选项,否则它将不起作用并显示为#NAME!错误。
  • 方法 2--> 也从函数开始LET(),这使得更容易阅读并减少冗余范围/公式的使用。
  • 与第一种方法一样,它首先应用TOCOL()函数,然后使用UNIQUE()函数返回唯一值,最后使用MMULT()函数返回计数,即两个给定数组的矩阵乘积。
  • 最后,使用和函数HSTACK()组合返回的两个数组来返回所需的输出。UNIQUE()MMULT()
  • 方法 3--> 从与上面相同的步骤开始,只是它使用BYROW()函数来获取每个项目的匹配计数。

但是,如果您发现这些方法很复杂,那么您也可以使用下面显示的最简单的方法:

在此处输入图片描述


  • 首先,使用TOCOL()&UNIQUE()函数将多个范围返回到一个数组中(不包括空值和重复值)。然后将其放在一个单元格中,比如说L2

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

  • 最后,输入以下函数来获取计数。请记住,我已经取了数据范围,A3:A16您可能需要根据您的情况进行更改。以下内容不需要填写,因为它会溢出。使用和L2从上面返回的公式在哪里TOCOL()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-Code,然后按Done

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()函数来获得所需的输出


只需将此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)

相关内容