我想计算单个单元格中的数字数量。
示例:
在单元格 A1 中,我添加了以下内容:
=12+45+23+51+10
总计(并显示)141
。
在单元格 B1 中,我想查看有多少个数字相加在一起,这意味着应该有 5 个(12 是一个数字,45 是另一个数字,等等......总共,单元格 A1 中有 5 个数字).
我知道这似乎是一个荒谬的问题,但我扫描了这个问题的所有平台,但没有找到任何合适的解决方案。尝试了所有的
LEN
和 LEN SUBSTITUTE
替代方案,但不知何故它不起作用。
首先感谢您的帮助。最佳解决方案是 Excel 公式,或者 VBA 也可以。
Excel 2013 有一个新函数
Formulatext()
,它返回公式文本。使用 Len()
和 Substitute()
方法是有效的。
=LEN(FORMULATEXT(A1))-LEN(SUBSTITUTE(FORMULATEXT(A1),"+",""))+1
点击 Alt+F11 并插入 -> 具有以下 VBA 的模块:
Function NumCount(Rng As Range)
x = Split(Rng.Formula, "+")
NumCount = UBound(x) + 1
End Function
然后您可以在任何单元格上调用
=NumCount(A1)
来获取该单元格公式中的数字数量。
在没有 VBA 的早期 Excel 版本中也是可能的 - 前提是 (i) 单元格中始终至少有一个值,(ii) 运算符始终为
+
并且 (iii) 单元格位于一列中。
将该列中的
=
替换为 '=
,应用替换,例如:
=LEN(A1)-LEN(SUBSTITUTE(A1,"+",""))+1
在不同的列中并选择性粘贴,评估该其他列的结果。然后在原始列上应用“文本到列”,并使用
'
作为分隔符。
使用这个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
这里的一个主要缺点是我假设一切都是
+
;如果您有 -
、*
、/
或其他运算符,这会变得更具挑战性。您也许可以对每个操作符使用替换,但您始终仅限于四个基本操作符。如果有人使用指数或 mod,这会更难。
如果不使用用 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,显然有is一种方法,正如@teylyn在接受的答案中建议的那样。如果您像我一样使用 Excel 2010 或更早版本,您仍然需要 VBA。
试试这个:
=LEN(SUBSTITUTE(F16,"+","+"))
注意: F16 只是您要进行计数的单元格的示例名称。
示例:
F16=45+65+76 # Gives 186
F17=LEN(SUBSTITUTE(F16,"+","+")) # Gives 3