Excel – 在单个单元格中分别计算字母和数字
我需要一种方法来在一个单元格内分别统计数字和字母。
例如,如果一个单元格包含1234567ABC
我需要能够输出这个
- “7号”和
- “3个字母”。
我想不出一种方法来使用len()
函数,而countif
只计数单元格本身。
任何帮助,将不胜感激。
如果每个单元格只填充了数字和字母,用一种非vba的快速方法来完成这个操作就是将一个替代函数嵌套10次,以除去10个数字字符。 你留下的只是阿尔法。 然后你可以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解决scheme。
注意
要满足原始文章中的要求,请将以下后缀添加到上述公式的末尾:
=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},"")))
从我的答案中分析字母数字string的格式 :
对于更详细的答案,这个string1234567ABC456
将被报告为7N3L3N
像这样的正则expression式可以完成这项工作
- 按alt f11一起走VBE
- 插入模块
- 复制并粘贴下面的代码
- 按alt f11一起回到Excel
那么你可以使用Excel中的函数(也可以检测无效的string),即在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+|[az]+)" 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