如何在Excel列中提取出现频率第二高的文本?
提取多词文本列中出现频率第二高的字符串
先解决核心问题:文本格式不一致导致的计数误差
你之前得到错误结果,很大概率是因为数据里的标点/格式不统一(比如CMBS和CMBS,被COUNTIF判定为不同值)。先新增辅助列B,统一格式:
=IF(RIGHT(A1,1)=",",LEFT(A1,LEN(A1)-1),A1)
这个公式会去掉单元格末尾的逗号,确保同一文本的写法一致。如果还有其他格式问题(比如ABS, CMBS和ABS,CMBS),可以用:
=SUBSTITUTE(A1, ", ", ",")
把所有逗号加空格替换成纯逗号,统一多词组合的分隔格式。
方法1:Excel 365/2021(动态数组,一步到位)
直接用以下公式提取第二高频文本:
=INDEX(UNIQUE(B:B),MATCH(LARGE(COUNTIF(B:B,UNIQUE(B:B)),2),COUNTIF(B:B,UNIQUE(B:B)),0))
公式拆解:
UNIQUE(B:B):提取B列所有唯一的文本值(包括单/多词组合)COUNTIF(B:B,UNIQUE(B:B)):计算每个唯一值的出现次数LARGE(...,2):取出次数中的第二高值MATCH+INDEX:找到第二高次数对应的文本
如果有多个文本并列第二高,要返回所有结果的话,用:
=FILTER(UNIQUE(B:B),COUNTIF(B:B,UNIQUE(B:B))=LARGE(COUNTIF(B:B,UNIQUE(B:B)),2))
方法2:旧版Excel(非动态数组)
- 提取唯一值:复制B列到C列,选中C列→「数据」→「删除重复值」
- 计算出现次数:在D1输入
=COUNTIF(B:B,C1),下拉填充到所有唯一值行 - 提取第二高频文本:
先找第二高的次数:=LARGE(D:D,2)
再匹配对应文本:=INDEX(C:C,MATCH(LARGE(D:D,2),D:D,0))
(若有多个并列第二高,用数组公式=INDEX(C:C,SMALL(IF(D:D=LARGE(D:D,2),ROW(D:D)-ROW(D1)+1),ROW(A1))),按Ctrl+Shift+Enter确认后下拉)
为什么你之前的方法失效?
MODE函数仅对数值型数据友好,对文本只能返回第一个出现频率最高的结果,无法处理多词组合的排序- 未统一文本格式导致COUNTIF计数错误,把
CMBS和CMBS,当成不同值,误判了频率 - 单纯的INDEX+MATCH没有结合
LARGE函数筛选第二高的频率,导致返回了错误的结果
内容的提问来源于stack exchange,提问作者NeedtoLearnMore
相关产品推荐
相关产品推荐

