【问题标题】:Count number of numbers in a single cell计算单个单元格中的数字数量
【发布时间】:2014-11-24 07:00:49
【问题描述】:

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

例子:

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

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

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

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

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

【问题讨论】:

标签: excel count numbers


【解决方案1】:

试试这个:

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

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

例子:

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

【讨论】:

  • 如果 F16 包含 45+46+47+48 它仍然返回 3。Len 和 Substitute 对结果 186 而不是公式进行操作。
  • 你是绝对正确的。但是,如果您复制 F16 并将带有总和的单元格粘贴(作为文本)到另一个单元格,它就可以工作。
  • 显然在某些版本的电子表格中,粘贴为文本(仅保留公式而不是获取结果值)不起作用。所以你可以忽略那个完整的,但是像 teylyn 在那里解释的 Gettheformula 函数可以解决问题。
【解决方案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 模块后,您可以在电子表格的任何单元格中将其用作函数。

*Edit - 正如 teylyn 建议的那样,如果您有 Excel 2013,显然有一种方法。如果您像我一样使用 2010 或更早版本,则需要 VBA。

【讨论】:

    【解决方案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

    这里的一个主要缺点是我假设所有内容都是 +,如果您有 -、* 或其他运算符,这将变得更具挑战性。您也许可以对每个使用 replace ,但您总是被限制为 4 个基本运算符...如果有人使用指数或 mod,这会更难。

    【讨论】:

      【解决方案4】:

      按 Alt+F11 并使用以下 VBA 插入->模块:

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

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

      【讨论】:

        【解决方案5】:

        Excel 2013 有一个新函数 Formulatext(),它返回公式文本。使用 Len() 和 Substitute() 方法有效。

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

        【讨论】:

          【解决方案6】:

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

          在该列中将= 替换为'=,应用替换,例如:

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

          在不同的列中并选择性粘贴,对其他列的结果进行赋值。然后在以'为分隔符的原始列上应用Text To Columns。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-03-22
            • 1970-01-01
            • 2014-12-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多