提问人:mythage 提问时间:9/30/2014 最后编辑:Gricemythage 更新时间:11/18/2023 访问量:12498
计算单个单元格中的数字数
Count number of numbers in a single cell
问:
我想计算单个单元格中的数字数。
例:
在单元格 A1 中,我添加了以下内容:
=12+45+23+51+10
其中总计(并显示)。141
在单元格 B1 中,我想看看有多少个数字被加在一起,这意味着应该有 5 个(12 是一个数字,45 是另一个数字,依此类推......总共有 5 个数字在单元格 A1 中)。
我知道这似乎是一个荒谬的问题,但我扫描了所有平台以查找此问题,但没有找到任何合适的解决方案。尝试了所有替代方案,但不知何故它不起作用。LEN
LEN SUBSTITUTE
感谢您的帮助。最佳解决方案是excel公式,或者VBA也可以。
答:
试试这个:
=LEN(SUBSTITUTE(F16,"+","+"))
注意:F16 只是要进行计数的单元格的示例名称。
例:
F16=45+65+76 # Gives 186
F17=LEN(SUBSTITUTE(F16,"+","+")) # Gives 3
评论
如果不使用用 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在接受的答案中建议的那样。如果您像我一样使用 Excel 2010 或更早版本,您仍然需要 VBA。
使用此 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,但始终仅限于四个基本运算符。如果有人使用指数或模组,这将更难。+
-
*
/
点击 + 并使用以下 VBA 插入 -> 模块:AltF11
Function NumCount(Rng As Range)
x = Split(Rng.Formula, "+")
NumCount = UBound(x) + 1
End Function
然后,您可以调用任何单元格来获取该单元格公式中的数字数。=NumCount(A1)
Excel 2013 有一个新函数,可以返回公式文本。使用这种方法是有效的。Formulatext()
Len()
Substitute()
=LEN(FORMULATEXT(A1))-LEN(SUBSTITUTE(FORMULATEXT(A1),"+",""))+1
评论
在没有 VBA 的早期 Excel 版本中也可以 - 受以下条件:(i) 单元格中始终至少有一个值,(ii) 运算符始终是,以及 (iii) 单元格位于列中。+
替换为,应用替换,例如:=
'=
=LEN(A1)-LEN(SUBSTITUTE(A1,"+",""))+1
在另一列中,然后选择性粘贴,对该另一列的结果进行值。然后将文本应用于原始列作为分隔符。'
下一个:计算单个单元格中的数字数
评论