Excel中如何统计字符串中重叠出现的特定文本(如MM)次数?
重叠"MM"次数统计解决方案
针对你需要统计Excel字符串中重叠连续"MM"次数(如"MMM"计2次、"MMMM"计3次)的需求,以下是可行的实现方案:
一、Excel公式方案
1. 适用于Excel 365/2021(支持动态数组)
单个单元格统计公式:
=SUM(--(MID(B2,SEQUENCE(LEN(B2)-1),2)="MM"))
- 逻辑:生成从1到字符串长度-1的位置序列,逐个提取连续2个字符判断是否为"MM",将布尔结果转为1/0后求和,直接得到重叠次数。
- 批量总统计:若要计算B2:B99区域的总重叠次数:
=SUM(--(MID(B2:B99,SEQUENCE(LEN(B2:B99)-1),2)="MM"))
2. 适用于旧版Excel(无动态数组)
单个单元格数组公式(输入后需按Ctrl+Shift+Enter确认):
=SUM(IF(MID(B2,ROW(INDIRECT("1:"&LEN(B2)-1)),2)="MM",1,0))
- 逻辑:通过
ROW(INDIRECT)生成位置序列,逐个判断连续2字符是否为"MM",求和符合条件的次数。
3. 连续M段统计思路(Excel 365)
=SUM(MAX(0,LEN(TEXTSPLIT(B2,"F",,TRUE))-1))
- 逻辑:按"F"拆分字符串得到所有连续M的子串,每个子串长度减1即为该段的MM重叠次数,求和后得到总次数。
二、VBA自定义函数方案
若需更灵活的批量复用,可创建自定义函数:
- 按下
Alt+F11打开VBA编辑器; - 右键工作簿→插入→模块,粘贴以下代码:
Function CountOverlapMM(inputStr As String) As Integer Dim count As Integer count = 0 Dim i As Integer ' 遍历字符串每个位置,检查连续两字符是否为MM For i = 1 To Len(inputStr) - 1 If Mid(inputStr, i, 2) = "MM" Then count = count + 1 End If Next i CountOverlapMM = count End Function
- 返回Excel,在单元格输入
=CountOverlapMM(B2)即可得到对应结果,下拉填充可批量处理98行数据。
验证结果
用你提供的测试数据验证,结果完全符合预期:
| Day | Sequence | MM Count |
|---|---|---|
| 1 | MFFFM | 0 |
| 2 | FMMM | 2 |
| 3 | FF | 0 |
| 4 | MMMMM | 4 |
| 5 | M | 0 |
| 6 | MFMMMFF | 2 |
内容的提问来源于stack exchange,提问作者Ellka
相关产品推荐
相关产品推荐

