You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中统计某一列单元格内文本类别的出现次数

Excel多类别单元格频次统计方案

针对你提出的「单列单元格含多类别,统计各类别出现次数」的需求,给你三种实用解决方法:

方法一:Power Query批量处理(推荐)

  • 选中目标数据列,点击「数据」选项卡 → 「从表格/区域」,将数据导入Power Query编辑器
  • 选中导入的列,点击「转换」→ 「拆分列」→ 「按分隔符拆分」,选择对应分隔符(如逗号、空格),并勾选「拆分为行」
  • 拆分完成后,点击「开始」→ 「分组依据」,分组列选目标列,操作选「计数行」,新列名设为「出现次数」
  • 点击「关闭并上载」,即可得到统计结果

方法二:Excel公式组合(适合轻量需求)

假设数据在A列,操作步骤:

  1. 提取不重复类别:在空白单元格输入=UNIQUE(TEXTSPLIT(TEXTJOIN(",",TRUE,A:A),","))(仅支持Excel 365/2021),按回车得到所有不重复类别列表(比如放在C列)
  2. 统计频次:在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:02:04