我需要一种方法在一个单元格内分别计算数字和字母。
例如,如果单元格包含1234567ABC
,我需要能够将其输出为
我想不出一种方法可以使用可行的len()
函数,countif
只计算单元格本身。
任何帮助都将不胜感激。
答案 0 :(得分:6)
如果每个单元格只用数字和字母填充,快速非vba方法就是将替换函数嵌套10次以删除10个数字字符。你剩下的只是alpha。然后你可以len()
alpha文本/从原始长度中减去该数字以获得数字长度。
假设“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},"")))
答案 1 :(得分:2)
来自Analyse 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