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

Count number of numbers in a single cell

提问人:mythage 提问时间:9/30/2014 最后编辑:Gricemythage 更新时间:11/18/2023 访问量:12498

问:

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

例:

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

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

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

我知道这似乎是一个荒谬的问题,但我扫描了所有平台以查找此问题,但没有找到任何合适的解决方案。尝试了所有替代方案,但不知何故它不起作用。LENLEN SUBSTITUTE

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

Excel 计数 数字

评论

0赞 xQbert 9/30/2014
计算运算符的数量并添加一个。要获取公式,您需要使用包含在 Excel 加载项 office.microsoft.com/en-us/excel-help/ 中包含的 FormulaText或者您必须使用一些 VBA: dmcritchie.mvps.org/excel/formula.htm

答:

-1赞 Nikleotide 9/30/2014 #1

试试这个:

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

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

例:

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

评论

1赞 xQbert 9/30/2014
如果 F16 包含 45+46+47+48,它仍然返回 3。Len 和 substitute 对结果 186 进行操作,而不是对公式进行操作。
0赞 Nikleotide 9/30/2014
你是绝对正确的。但是,如果您复制 F16 并将带有总和的单元格(作为文本)粘贴到另一个单元格,它就会起作用。
0赞 Nikleotide 10/1/2014
显然,在某些版本的电子表格中,粘贴为文本(仅保留公式而不是获取结果值)不起作用。因此,您可以忽略该 completley,但像 teylyn 解释的那样,像 Gettheformula 函数这样的东西可以解决问题。
0赞 KCzar 9/30/2014 #2

如果不使用用 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。

0赞 xQbert 9/30/2014 #3

使用此 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

这里的一个主要缺点是我假设一切都是;如果您有 、 或其他运算符,这将变得更具挑战性。您可以对每个运算符使用 replace,但始终仅限于四个基本运算符。如果有人使用指数或模组,这将更难。+-*/

2赞 rsynnest 9/30/2014 #4

点击 + 并使用以下 VBA 插入 -> 模块:AltF11

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

然后,您可以调用任何单元格来获取该单元格公式中的数字数。=NumCount(A1)

2赞 teylyn 9/30/2014 #5

Excel 2013 有一个新函数,可以返回公式文本。使用这种方法是有效的。Formulatext()Len()Substitute()

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

enter image description here

评论

2赞 user229044 11/18/2023
请不要侮辱编辑您帖子的人,无论帖子有多旧。编辑客观上是好的,在改进网站上的内容时,您的帖子的年龄并不重要。
0赞 pnuts 9/30/2014 #6

在没有 VBA 的早期 Excel 版本中也可以 - 受以下条件:(i) 单元格中始终至少有一个值,(ii) 运算符始终是,以及 (iii) 单元格位于列中。+

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

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

在另一列中,然后选择性粘贴,对该另一列的结果进行值。然后将文本应用于原始列作为分隔符。'