我有一个大约 5K 行的列表,我想计算每个项目的出现次数。
此列表中约有 300 - 400 种不同的物品。
无需输入 300 多个独特的公式,如下所示
=COUNTIF(A1:A5000,"A")
=COUNTIF(A1:A5000,"B")
=COUNTIF(A1:A5000,"C")
=COUNTIF(A1:A5000,"D")
=COUNTIF(A1:A5000,"E")
ETC to 300...
,有没有办法通过某种增强的公式来实现这个目标?
下面是我从以前发布的问题中借用的一个列表示例,因为它演示了我想要完成的任务,但是在我的例子中,我有 300 到 400 个不同的项目,而不仅仅是 A、B、C、D 和 E:
“我有一份如下的物品清单:”
A
B
C
A
A
B
D
E
A
“现在我想计算每个项目的出现次数。结果应该是这样的:”
A 4
B 2
C 1
D 1
E 1
感谢 RoflcoptrException 发布原始问题。
答案1
答案2
我建议不要使用公式,而是使用最快的方法,即VBA Macro
计算各种项目的出现次数。
怎么运行的:
要创建要计数的项目的唯一列表,单元格中的数组(CSE)公式
C68
:{=IFERROR(INDEX($A$68:$A$78, MATCH(0,COUNTIF($C$67:C67, $A$68:$A$78), 0)),"")}
完成配方Ctrl+Shift+Enter& 向下填充。
按下Alt+F11或者R右键单击工作表 TAB 并点击五查看代码。
在 VB 编辑器窗口中我nsert 命令单击米模块。
C奥皮&磷粘贴此代码。
Public Function CountString(SearchFor As String, InRange As Range) As Long Dim wbcs As Long, rng As Range, addr As String For Each s In Worksheets addr = InRange.Address Set rng = s.Range(addr) wbcs = wbcs + Application.WorksheetFunction.CountIf(rng, "*" & SearchFor & "*") Next s CountString = wbcs End Function
将工作簿另存为启用宏 (.xlsm)。
在单元格中输入此公式
D68
,向下填充:
=CountString($C68,A$68:A$78)
- 要计算多列中的出现次数,您可以使用如下公式。
=CountString($C68,A:C)
根据需要调整公式中的单元格引用。