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

问题描述 投票:0回答:6

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

示例:

在单元格 A1 中,我添加了以下内容:

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

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

我知道这似乎是一个荒谬的问题,但我扫描了这个问题的所有平台,但没有找到任何合适的解决方案。尝试了所有的

LEN
LEN SUBSTITUTE
替代方案,但不知何故它不起作用。

首先感谢您的帮助。最佳解决方案是 Excel 公式,或者 VBA 也可以。

excel count numbers
6个回答
2
投票

Excel 2013 有一个新函数

Formulatext()
,它返回公式文本。使用
Len()
Substitute()
方法是有效的。

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

enter image description here


2
投票

点击 Alt+F11 并插入 -> 具有以下 VBA 的模块:

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

然后您可以在任何单元格上调用

=NumCount(A1)
来获取该单元格公式中的数字数量。


0
投票

在没有 VBA 的早期 Excel 版本中也是可能的 - 前提是 (i) 单元格中始终至少有一个值,(ii) 运算符始终为

+
并且 (iii) 单元格位于一列中。

将该列中的

=
替换为
'=
,应用替换,例如:

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

在不同的列中并选择性粘贴,评估该其他列的结果。然后在原始列上应用“文本到列”,并使用

'
作为分隔符。


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

这里的一个主要缺点是我假设一切都是

+
;如果您有
-
*
/
或其他运算符,这会变得更具挑战性。您也许可以对每个操作符使用替换,但您始终仅限于四个基本操作符。如果有人使用指数或 mod,这会更难。


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,显然有is一种方法,正如@teylyn在接受的答案中建议的那样。如果您像我一样使用 Excel 2010 或更早版本,您仍然需要 VBA。


-1
投票

试试这个:

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

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

示例:

F16=45+65+76 # Gives 186
F17=LEN(SUBSTITUTE(F16,"+","+")) # Gives 3
© www.soinside.com 2019 - 2024. All rights reserved.