如何在Excel中统计某一列单元格内文本类别的出现次数
Excel多类别单元格频次统计方案
针对你提出的「单列单元格含多类别,统计各类别出现次数」的需求,给你三种实用解决方法:
方法一:Power Query批量处理(推荐)
- 选中目标数据列,点击「数据」选项卡 → 「从表格/区域」,将数据导入Power Query编辑器
- 选中导入的列,点击「转换」→ 「拆分列」→ 「按分隔符拆分」,选择对应分隔符(如逗号、空格),并勾选「拆分为行」
- 拆分完成后,点击「开始」→ 「分组依据」,分组列选目标列,操作选「计数行」,新列名设为「出现次数」
- 点击「关闭并上载」,即可得到统计结果
方法二:Excel公式组合(适合轻量需求)
假设数据在A列,操作步骤:
- 提取不重复类别:在空白单元格输入
=UNIQUE(TEXTSPLIT(TEXTJOIN(",",TRUE,A:A),","))(仅支持Excel 365/2021),按回车得到所有不重复类别列表(比如放在C列) - 统计频次:在D2单元格输入
=COUNTIF(A:A,"*"&C2&"*"),下拉填充即可得到每个类别的出现次数
注意:如果类别本身包含分隔符,该公式可能误判,需确保类别与分隔符无重叠
方法三:VBA宏(适合重复操作场景)
按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码(需根据你的分隔符修改代码里的逗号):
Sub CountCategoryFrequency() Dim ws As Worksheet Dim lastRow As Long, i As Long Dim categoryArr As Variant, category As Variant Dim freqDict As Object Set ws = ActiveSheet Set freqDict = CreateObject("Scripting.Dictionary") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 遍历单元格拆分类别并统计 For i = 2 To lastRow ' 假设第一行为表头 categoryArr = Split(ws.Cells(i, "A").Value, ",") ' 修改此处分隔符匹配你的数据 For Each category In categoryArr category = Trim(category) If freqDict.Exists(category) Then freqDict(category) = freqDict(category) + 1 Else freqDict(category) = 1 End If Next category Next i ' 输出结果到C、D列 ws.Range("C1").Value = "类别" ws.Range("D1").Value = "出现次数" i = 2 For Each category In freqDict.Keys ws.Cells(i, "C").Value = category ws.Cells(i, "D").Value = freqDict(category) i = i + 1 Next category End Sub
运行宏后,统计结果会自动输出到C、D列
内容的提问来源于stack exchange,提问作者Hitesh Goyal
相关产品推荐
相关产品推荐

