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

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

例:

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

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

在B1单元格中,我想看看有多less个数字加在一起,这就意味着应该有5个数字(12是一个数字,45是另一个数字,等等,所有这些数字一起在单元格A1中有5个数字) 。

我知道这似乎是一个荒谬的问题,但我扫描了这个问题的所有平台,并没有find任何合适的解决scheme。 尝试了所有的LENLEN SUBSTITUTE替代品,但不知何故,这是行不通的。

感谢您的帮助。 最佳的解决scheme将是一个优秀的公式,或者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: 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每个,但你总是被限制在4个基本的操作符…如果有人使用指数或国防部,这将是更困难的。

也可以在没有VBA的早期Excel版本中使用 – 受(i)单元格中总是至less有一个值,(ii)操作符总是+和(iii)单元格在列中。

在该列中replace为= '= ,应用replace,说:

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

在不同的列和“select性粘贴”中,对其他列的结果进行评估。 然后应用'作为分隔符'在原始列上应用“文本到列'

*如果不使用在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,如泰林build议。 如果您使用2010或更早版本,您将需要VBA。

尝试这个:

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

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

例:

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