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

CvR*_*CvR 6 excel vba excel-vba excel-formula

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

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

  • "7号"和
  • "3个字母".

我想不出一种方法来使用len()可行的函数,countif只计算细胞本身.

任何帮助,将不胜感激.

dan*_*rak 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,""))
Run Code Online (Sandbox Code Playgroud)

这个公式给出了总数:(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,""))
Run Code Online (Sandbox Code Playgroud)

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

注意

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

=x & " Numbers / Letters" 
Run Code Online (Sandbox Code Playgroud)

其中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},"")))
Run Code Online (Sandbox Code Playgroud)

  • 它在Excel 2007以后可以使用,但是会超出先前版本中的八个嵌套函数限制.总数的替代方案是:`= SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},""))) ` (5认同)