excel 计算单个单元格中的数字个数

yws3nbqq  于 2023-05-30  发布在  其他
关注(0)|答案(6)|浏览(95)

我想数一个单元格中的数字。
示例:
在单元格A1中,我添加了以下内容:
=12+45+23+51+10总计(并显示)141
在单元格B1中,我想看看有多少个数字加在一起,这意味着应该有5个(12是一个数字,45是另一个数字,等等...在单元格A1中总共有5个数字)。
我知道这似乎是一个荒谬的问题,但我扫描了所有平台的这个问题,并没有找到任何合适的解决方案。尝试了所有的LENLEN SUBSTITUTE替代品,但不知何故,它不起作用。
谢谢你的帮助。最佳的解决方案将是一个excel公式,或者VBA也可以工作。

kkbh8khc

kkbh8khc1#

Excel 2013有一个新函数Formulatext(),它返回公式文本。使用Len()Substitute()方法可以工作。

=LEN(FORMULATEXT(A1))-LEN(SUBSTITUTE(FORMULATEXT(A1),"+",""))+1

xjreopfe

xjreopfe2#

点击Alt+F11并使用以下VBA插入->模块:

Function NumCount(Rng As Range)
x = Split(Rng.Formula, "+")
NumCount = UBound(x) + 1
End Function

然后,您可以在任何单元格上调用=NumCount(A1),以获取该单元格的公式中的数字数量。

thigvfpy

thigvfpy3#

在没有VBA的早期Excel版本中也是可能的-受制于(i)单元格中总是至少有一个值,(ii)运算符总是+,以及(iii)单元格在列中。
将该列中的=替换为'=,应用替换,例如:

=LEN(A1)-LEN(SUBSTITUTE(A1,"+",""))+1

在另一列中,选择性粘贴,为另一列的结果赋值。然后对原始列应用“列的文本”,并使用'作为分隔符。

klsxnrf1

klsxnrf14#

使用此VBA:

Function GetFormula(Cell as Range) as String
   GetFormula = Cell.Formula
End Function

然后得到数字的个数

=LEN(GetFormula(D99))-LEN(SUBSTITUTE(GetFormula(D99),"+",""))

作为我的D99内容

=45+46+47+50+100

这里的一个主要缺点是我假设所有内容都是+;如果你有-*/或其他运算符,这就变得更有挑战性了。您可能可以对每一个操作符使用replace,但您始终限于使用四个基本操作符。如果有人使用指数或mod,这将是困难的。

798qvoo8

798qvoo85#

如果不使用Excel VBA编写的用户定义函数(UDF),则无法实现此操作。类似这样的东西应该可以工作:

Public Function numsAdded(cell1 As Range)
    Dim formulaString As String
    formulaString = cell1.Formula
    numsAdded = Len(formulaString) - Len(Replace(formulaString, "+", "")) + 1
End Function

一旦您将其添加到VBA模块中,您就可以将其用作电子表格中任何单元格中的函数。

***编辑:***显然,如果你有Excel 2013,就像@teylyn在接受的答案中建议的那样。如果你使用Excel 2010或更早版本,像我一样,你仍然需要VBA。

uajslkp6

uajslkp66#

试试这个:

=LEN(SUBSTITUTE(F16,"+","+"))

***注意:***F16只是要计数的单元格的示例名称。

示例:

F16=45+65+76 # Gives 186
F17=LEN(SUBSTITUTE(F16,"+","+")) # Gives 3

相关问题