Excel统计CIM-10编码I00-I30等疾病序列出现次数求助
统计ICD-10编码子区间出现次数的解决方案
针对单元格含单个/多个ICD-10编码,需统计I00-I30这类子区间出现次数的问题,以下是几种实用方法:
方法一:辅助列分步处理(适合新手)
- 拆分编码:假设数据在A列,在B列使用
TEXTSPLIT(Excel 365+)拆分每个单元格内的编码:
旧版Excel可直接用「数据→分列」功能,按逗号+空格分隔。拆分后每个编码单独占一行。=TEXTSPLIT(A1, ", ") - 判断编码是否在目标区间:在C列添加判断公式,验证编码是否属于I00-I30:
用=AND(LEFT(UPPER(B1), 1)="I", VALUE(MID(B1, 2, 2))>=0, VALUE(MID(B1, 2, 2))<=30)UPPER避免大小写干扰,提取编码首字母确认是"I",再将后续两位数字转数值,判断是否在0-30范围内(对应I00到I30)。 - 统计符合条件的数量:最后用
COUNTIF统计C列中TRUE的个数:=COUNTIF(C:C, TRUE)
方法二:单数组公式(无需辅助列,Excel 365)
直接用数组公式一次性完成拆分、判断、求和:
=SUM(--(BYROW(A:A, LAMBDA(cell, IF(cell="", 0, SUM(--(AND(LEFT(TEXTSPLIT(cell, ", "),1)="I", VALUE(MID(TEXTSPLIT(cell, ", "),2,2))>=0, VALUE(MID(TEXTSPLIT(cell, ", "),2,2))<=30)))))))
逻辑说明:
TEXTSPLIT拆分每个单元格的编码- 对每个编码执行区间判断,统计单个单元格内符合条件的编码数
- 最后累加所有单元格的统计结果
方法三:Google Sheets适配方案
Google Sheets中用SPLIT替代TEXTSPLIT,公式如下:
=SUM(BYROW(A:A, LAMBDA(cell, IF(cell="",0,SUM(--(AND(LEFT(UPPER(SPLIT(cell, ", ")),1)="I", VALUE(MID(SPLIT(cell, ", "),2,2))>=0, VALUE(MID(SPLIT(cell, ", "),2,2))<=30))))))
注意事项
- 若编码分隔符不是「逗号+空格」,需调整公式中的分隔符参数
- 若存在不规范编码(如I3而非I03),需先统一编码格式,确保是「字母+两位数字」的标准ICD-10格式
内容的提问来源于stack exchange,提问作者Rahmoune Med El-habib
相关产品推荐
相关产品推荐

