如何在Google表格中返回指定文本区域内出现频率最高的文本值?
嘿,这个需求我之前帮朋友处理过好几次,给你几个不同场景下好用的方法,根据你的Excel版本来挑就行:
方法1:MODE.SNGL + INDEX/MATCH组合(适配绝大多数Excel版本)
这个方法兼容性拉满,不管你用的是老版本还是新版都能用。核心思路是把文本转成数字让MODE函数能识别,再转回去:
- 先给每个文本分配一个「专属编号」:用
MATCH(B2:B7,B2:B7,0),这个公式会返回每个单元格里的文本在区域首次出现的位置(比如你的例子里,"green"首次出现在第2位,所以所有"green"对应的编号都是2) - 用
MODE.SNGL()找出这个编号数组里出现次数最多的那个(也就是对应出现最频繁的文本的编号) - 最后用
INDEX()把编号转回到对应的文本
完整公式直接复制到目标单元格就行:
=INDEX(B2:B7,MODE.SNGL(MATCH(B2:B7,B2:B7,0)))
👉 小贴士:如果有多个文本出现次数相同(比如两个文本都出现3次),这个公式会返回第一个出现的那个文本。
方法2:动态数组公式(适用于Excel 365/2021及以上)
如果你用的是支持动态数组的新版Excel,这个方法更简洁直观:
=INDEX(FILTER(B2:B7,COUNTIF(B2:B7,B2:B7)=MAX(COUNTIF(B2:B7,B2:B7))),1)
拆解一下逻辑:
COUNTIF(B2:B7,B2:B7)会算出每个文本在区域里的出现次数MAX()找出这些次数里的最大值FILTER()筛选出所有出现次数等于最大值的文本INDEX(...,1)取筛选结果里的第一个(如果有多个并列的话)
要是想把所有并列的文本都显示出来,用TEXTJOIN拼起来就行:
=TEXTJOIN(", ",TRUE,FILTER(B2:B7,COUNTIF(B2:B7,B2:B7)=MAX(COUNTIF(B2:B7,B2:B7))))
比如如果"green"和"blue"都出现3次,这个公式会返回green, blue。
方法3:Power Query(适合数据量大或需要重复更新的场景)
如果你的数据经常更新,或者区域很大,用Power Query更省心,一次设置好之后刷新就行:
- 选中B2:B7区域,点击「数据」选项卡的「从表格/区域」(如果弹窗问是否有标题,选「我的表格没有标题」)
- 进入Power Query编辑器后,点击「转换」选项卡的「分组依据」
- 分组设置:「分组依据」选「无」,新列名填「出现次数」,「操作」选「行数」,「列」选对应的文本列(默认是「列1」)
- 点击「排序」按钮,按「出现次数」降序排列
- 选中第一行的文本值,点击「关闭并上载」,把结果放到你想要的单元格里
之后只要数据源更新了,右键点击结果单元格选「刷新」就能自动更新最新的高频文本。
内容的提问来源于stack exchange,提问作者user8028410
相关产品推荐
相关产品推荐

