计算单个单元格中的数字个数
我想要统计单个单元格中的数字的数量。
例:
在单元格A1中,我添加了以下内容:
=12+45+23+51+10
,总计(并示出) 141
。
在B1单元格中,我想看看有多less个数字加在一起,这就意味着应该有5个数字(12是一个数字,45是另一个数字,等等,所有这些数字一起在单元格A1中有5个数字) 。
我知道这似乎是一个荒谬的问题,但我扫描了这个问题的所有平台,并没有find任何合适的解决scheme。 尝试了所有的LEN
和LEN 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