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