我需要一种方法来分别计算一个单元格中的数字和字母。
例如,如果一个单元格包含1234567ABC
我需要能够将其输出为
- “7个数字”和
- “三个字母”。
我想不出一种方法来使用可行的len()
功能,countif
只计算单元格本身。
任何帮助,将不胜感激。
我需要一种方法来分别计算一个单元格中的数字和字母。
例如,如果一个单元格包含1234567ABC
我需要能够将其输出为
我想不出一种方法来使用可行的len()
功能,countif
只计算单元格本身。
任何帮助,将不胜感激。
如果每个单元格仅填充数字和字母,则实现此目的的一种快速非 vba 方法是嵌套一个替换函数 10 次以删除 10 个数字字符。你剩下的只是阿尔法。然后你可以len()
从原始长度中减去字母文本/减去该数字以获得数字长度。
假设“1234567ABC”在单元格 A1 中:
这个公式给出了字母的数量。(3)
=LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,""))
这个公式给出了总数: (7)
=LEN(A1)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,""))
如果您想开始以其他方式/更深入地处理数据,则可能需要 VBA 解决方案。
笔记
为了满足您原始帖子中的要求,请将此后缀添加到上述公式的末尾:
=x & " Numbers / Letters"
其中 x = 上述两个公式。这将在计算的数字之后添加文本。
延伸阅读:
以下链接详细说明了执行类似操作的 VBA UDF: http ://www.mrexcel.com/forum/excel-questions/16364-how-remove-numbers.html
附加更新(感谢 lori_m)
这个公式更容易阅读/更新:
=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},"")))
从我在“ Analyze format of alpha-numeric string”中的回答:
要获得更详细的答案,此字符串
1234567ABC456
将报告为
7N3L3N
像这样的正则表达式将完成这项工作
那么您可以在 Excel 中使用该函数(它也检测无效字符串),即在 B1 中
=AlphaNumeric(A1)
Function AlphaNumeric(strIn As String) As String
Dim objRegex As Object
Dim objRegMC As Object
Dim objRegM As Object
Dim strOut As String
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Global = True
.ignorecase = True
.Pattern = "[^\w]"
If .test(strIn) Then
AlphaNumeric = "One or more characters is invalid"
Else
.Pattern = "(\d+|[a-z]+)"
Set objRegMC = .Execute(strIn)
For Each objRegM In objRegMC
strOut = strOut & (objRegM.Length & IIf(IsNumeric(objRegM), "N", "L"))
Next
AlphaNumeric = strOut
End If
End With
End Function