统计 Excel 列表中 400 多个不同项目的出现次数

统计 Excel 列表中 400 多个不同项目的出现次数

我有一个大约 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

一种简单的方法是将值导出到文本文件,然后在同一文件夹中f.txt运行以下脚本:.bat

@echo off
setlocal

rem Accumulate each occurrence in its corresponding array element
for /F %%a in (f.txt) do set /A "[%%a]+=1"

rem Show the result
for /F %%a in ('set [') do echo %%a

在样本数据上运行它,将返回:

在此处输入图片描述

答案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)

根据需要调整公式中的单元格引用。

相关内容