Excel公式需求:统计文本中独立部件编号的数量
解决Excel中格式各异单元格内独立部件统计问题
方法一:VBA自定义函数(适配全Excel版本)
针对你提供的部件特征(字母开头、由数字/横杠/字母组成的独立标识),可以用正则表达式精准匹配统计:
- 按
Alt+F11打开VBA编辑器,插入新模块 - 粘贴以下代码:
Function CountParts(cell As Range) As Integer Dim regEx As Object, matches As Object Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True .Pattern = "\b[A-Z0-9-]+\b" '匹配大写字母/数字/横杠组成的独立标识 End With Set matches = regEx.Execute(cell.Value) Dim count As Integer, m As Object count = 0 For Each m In matches '排除纯数字开头的非部件内容(比如示例中的"5") If Not IsNumeric(Left(m.Value, 1)) Then count = count + 1 Next m CountParts = count End Function
- 返回Excel,在目标单元格输入
=CountParts(A1)即可统计对应单元格的部件数量。
测试结果完全匹配你的示例:
- A1返回1(HS669)
- A2返回3(ESW617、ESW618、ESW648)
- A3返回9(TX开头的9个部件)
- A4返回16(FW开头的16个部件)
方法二:Excel 365/2021动态数组公式
如果使用新版Excel,无需VBA,直接用动态数组结合正则函数实现:
=COUNTA(FILTER(TEXTSPLIT(REGEXREPLACE(A1,"[^A-Z0-9- ]","")," "),NOT(ISNUMBER(--LEFT(TEXTSPLIT(REGEXREPLACE(A1,"[^A-Z0-9- ]","")," "),1)))))
逻辑说明:
REGEXREPLACE移除所有非字母/数字/横杠/空格的字符TEXTSPLIT按空格拆分内容为数组FILTER筛选出非数字开头的项COUNTA统计有效部件数量
方法三:辅助列分步处理(适合旧版无正则的Excel)
- 替换逗号为空格:
=SUBSTITUTE(A1,","," ") - 替换冒号为空格:
=SUBSTITUTE(B1,":"," ") - 清理多空格:
=TRIM(CLEAN(SUBSTITUTE(C1," "," ")))(重复执行直到无多空格) - 按空格分列拆分清理后的内容到多列
- 用
COUNTIF(拆分区域,"*[A-Z]*")统计含字母的单元格数量(排除纯数字)
内容的提问来源于stack exchange,提问作者Chris Elwell
相关产品推荐
相关产品推荐

