Excel中行内D、P单独及连续组出现次数统计公式求助
Excel统计D/P连续段次数的公式实现
核心逻辑
统计每行中单独出现的D/P、连续的D/P组合的总次数,本质是把所有非D/P的字符作为分隔符,统计分割后非空片段的总数。
公式方案
方案1:适用于Excel 365/2021(动态数组版本)
假设目标数据在A列,在B2单元格输入以下公式后下拉填充:
=COUNTA(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A2,"D","|"),"P","|")&"</s></t>","//s[normalize-space()]"))
原理:
- 用两次
SUBSTITUTE把所有D和P替换为统一分隔符|,将原字符串拆分为以非D/P字符分隔的片段 - 通过
FILTERXML提取所有非空的片段 - 用
COUNTA统计非空片段的数量,即为符合规则的次数
方案2:适用于所有Excel版本(兼容旧版)
在B2单元格输入以下数组公式(输入后按Ctrl+Shift+Enter确认,Excel 365可直接回车):
=SUMPRODUCT(--(MID("X"&A2,ROW(INDIRECT("1:"&LEN(A2)+1)),1)<>"D")*(MID("X"&A2,ROW(INDIRECT("2:"&LEN(A2)+2)),1)="D") + --(MID("X"&A2,ROW(INDIRECT("1:"&LEN(A2)+1)),1)<>"P")*(MID("X"&A2,ROW(INDIRECT("2:"&LEN(A2)+2)),1)="P"))
原理:
- 在原字符串前加非D/P字符
X,避免开头就是D/P的情况漏统计 - 逐字符对比相邻位置,统计从非D/P字符切换到D/P字符的次数,这个次数就是连续段的总数量
示例验证
| 输入字符串 | 统计结果 | 说明 |
|---|---|---|
AADDPXPPY | 2 | DDPP是一段,PP是一段 |
D | 1 | 单个D计1次 |
PXD | 2 | 单独的P和单独的D各计1次 |
XYZZ | 0 | 无D/P出现 |
内容的提问来源于stack exchange,提问作者user3471438
相关产品推荐
相关产品推荐

