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

时间:2014-09-29 19:33:00

标签: excel count numbers

我想计算单个单元格中的数字数量。

示例:

在单元格A1中,我有以下内容:

=12+45+23+51+10总计(并显示)141

在单元格B1中,我想看看有多少个数字被加在一起,这意味着应该有5个(12个是数字,45个是另一个,等等...并且总共有5个数字在单元格A1)。

我知道这似乎是一个荒谬的问题,但我扫描了所有平台的问题并没有找到任何合适的解决方案。尝试了所有LENLEN SUBSTITUTE替代品,但不知何故它不起作用。

先谢谢你的帮助。最佳解决方案将是一个优秀的公式,或者VBA也可以。

6 个答案:

答案 0 :(得分:2)

使用以下VBA按Alt + F11和Insert->模块:

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

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

答案 1 :(得分:2)

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

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

enter image description here

答案 2 :(得分:0)

*如果不使用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建议的那样。如果您像我一样使用2010年或更早版本,则需要VBA。

答案 3 :(得分:0)

使用此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

enter image description here

这里的一个主要缺点是我假设一切都是+,如果你有 - ,*,/或其他运营商这更具挑战性。你或许可以为每个人使用替换,但是你总是被限制在4个基本的操作符......如果有人使用exponents或mod,那就更难了。

答案 4 :(得分:0)

也可以在没有VBA的早期Excel版本中 - 受(i)在单元格中始终至少有一个值,(ii)运算符总是+和(iii)单元格在列中

=替换为该列中的'=,应用替换,例如:

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

在另一列中并选择Paste Special,为其他列的结果赋值。然后在原始列上应用“文本到列”,并将'作为分隔符。

答案 5 :(得分:-1)

试试这个:

= LEN(SUBSTITUTE(F16, “+”, “+”))

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

示例:

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