Excel-在单个单元格中分别计算字母和数字

Excel-在单个单元格中分别计算字母和数字,excel,excel-formula,vba,alt,f11,Excel,Excel Formula,Vba,Alt,F11,我需要一种在一个单元格内分别计算数字和字母的方法 例如,如果一个单元格包含1234567ABC,我需要能够将其输出为 “7个数字”和 “3封信” 我想不出一种方法来使用len()函数,而countif只对单元格本身进行计数 任何帮助都将不胜感激。如果每个单元格都只填充数字和字母,那么实现这一点的快速非vba方法是将替换函数嵌套10次以删除10个数字字符。你只剩下阿尔法了。然后您可以len()alpha文本/从原始长度中减去该数字以获得数字长度 假设“1234567ABC”位于单元格A1中:

我需要一种在一个单元格内分别计算数字和字母的方法

例如,如果一个单元格包含
1234567ABC
,我需要能够将其输出为

  • “7个数字”和
  • “3封信”
我想不出一种方法来使用
len()
函数,而
countif
只对单元格本身进行计数


任何帮助都将不胜感激。

如果每个单元格都只填充数字和字母,那么实现这一点的快速非vba方法是将替换函数嵌套10次以删除10个数字字符。你只剩下阿尔法了。然后您可以
len()
alpha文本/从原始长度中减去该数字以获得数字长度

假设“1234567ABC”位于单元格A1中:

这个公式给出了字母数。(三)

这个公式给出了总数:(7)

如果您想开始以其他方式/更深入地处理数据,可能需要VBA解决方案

注意

为了满足您原始帖子中的要求,请在上述公式的末尾添加此后缀:

=x & " Numbers / Letters" 
其中x=上述两个公式。这将在计算的数字后添加文本

进一步阅读:

以下链接详细介绍了执行类似操作的VBA UDF:

附加更新(谢谢lori\m)

此公式更易于阅读/更新:

=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},"")))
从我的回答来看:

要获得更详细的答案,请单击此字符串
1234567ABC456
将被报告为
7N3L3N

这样的regexp可以完成这项工作

  • 按在一起以转到VBE
  • 插入模块
  • 复制并粘贴下面的代码
  • 同时按下返回Excel
然后您可以使用Excel中的函数(该函数还检测无效字符串),即B1
=字母数字(A1)


嘿,Excel。您是否尝试过使用宏?这是否仍然需要我知道计算单个数字和字母的代码?它在Excel 2007以后的版本中工作,但这将超出以前版本中的八个嵌套函数限制。总数的另一种选择是:
=SUM(LEN(A1)-LEN(替换为(A1,{1,2,3,4,5,6,7,8,9,0},”))
Ah!!!我试着用代词来表示{},但它不起作用,我忘了求和了!(我今天工作太忙了)我将把这个作为更新添加。谢谢你,萝莉。
=x & " Numbers / Letters" 
=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},"")))
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