我想计算单个单元格中的数字数量。
示例:
在单元格A1中,我有以下内容:
=12+45+23+51+10
总计(并显示)141
。
在单元格B1中,我想看看有多少个数字被加在一起,这意味着应该有5个(12个是数字,45个是另一个,等等...并且总共有5个数字在单元格A1)。
我知道这似乎是一个荒谬的问题,但我扫描了所有平台的问题并没有找到任何合适的解决方案。尝试了所有LEN
和LEN SUBSTITUTE
替代品,但不知何故它不起作用。
先谢谢你的帮助。最佳解决方案将是一个优秀的公式,或者VBA也可以。
答案 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
答案 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
这里的一个主要缺点是我假设一切都是+,如果你有 - ,*,/或其他运营商这更具挑战性。你或许可以为每个人使用替换,但是你总是被限制在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