如何统计Excel单元格中数字字符的出现频次?
Excel统计单元格内数字的最高出现次数(无重复则返回0)
假设你的数字列表在A列,以下是几种实现需求的方法:
方法一:数组公式(兼容Excel 2019及更早版本)
在B1单元格输入以下公式,按Ctrl+Shift+Enter组合键确认输入(数组公式需按此组合键),然后下拉填充到所有需要计算的行:
=IF(MAX(LEN(A1)-LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},"")))=1,0,MAX(LEN(A1)-LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},""))))
公式说明:
LEN(A1)-LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},"")):逐个计算0-9每个数字在当前单元格中的出现次数MAX(...):提取这些次数里的最大值IF判断:如果最大值为1(即所有数字仅出现1次,无重复),返回0;否则返回该最大值
方法二:动态数组公式(适用于Excel 365/2021)
Excel 365及2021支持动态数组,公式更简洁,输入后会自动向下填充:
=LET(counts,LEN(A1)-LEN(SUBSTITUTE(A1,SEQUENCE(10,,0),)),max_count,MAX(counts),IF(max_count=1,0,max_count))
公式说明:
SEQUENCE(10,,0):自动生成0-9的数字序列,替代手动输入的数组LET函数给中间计算结果命名,让公式逻辑更清晰- 后续判断逻辑和数组公式一致
方法三:VBA自定义函数
如果需要更灵活的批量处理,可自定义函数:
- 按下
Alt+F11打开VBA编辑器 - 点击菜单栏「插入」→「模块」,粘贴以下代码:
Function MaxDigitCount(rng As Range) As Integer Dim cellText As String, i As Integer, digitCounts(9) As Integer, maxCount As Integer cellText = rng.Value ' 遍历每个字符统计次数 For i = 1 To Len(cellText) digitCounts(Mid(cellText, i, 1)) = digitCounts(Mid(cellText, i, 1)) + 1 Next i maxCount = Application.Max(digitCounts) ' 判断是否返回0或最大值 MaxDigitCount = IIf(maxCount = 1, 0, maxCount) End Function
- 返回Excel界面,在B1单元格输入
=MaxDigitCount(A1),下拉填充即可
以上三种方法都能得到你期望的结果,比如:
- A1单元格为
11111时,B1返回5 - A2单元格为
12345时,B2返回0 - A3单元格为
23222时,B3返回4
内容的提问来源于stack exchange,提问作者Amod
相关产品推荐
相关产品推荐

