【问题标题】:Iterating a function over several cells在多个单元格上迭代函数
【发布时间】:2018-04-02 14:38:15
【问题描述】:

我有一张数字表,表示几名员工每天工作的小时数。每个单元格是一名员工的一天。一些单元格包含一个“*”字符,表示这些时间不计入部门总数。在计算部门总数时,我只是对所有单元格进行求和,然后 calc 会忽略那些包含星号的值。但是,当我计算单个员工的工时总和时,我想包括这些工时。

经过一些实验,我得出了以下笨拙的公式:

=SUM(VALUE(SUBSTITUTE(C22,"*","")),VALUE(SUBSTITUTE(D22,"*","")),VALUE(SUBSTITUTE(E22,"*","")),VALUE(SUBSTITUTE(F22,"*","")),VALUE(SUBSTITUTE(G22,"*","")),VALUE(SUBSTITUTE(H22,"*","")),VALUE(SUBSTITUTE(I22,"*","")))

虽然这有效,但很糟糕!有没有办法在一组单元格上迭代一组函数?比如:

=SUM(ITERATE_FUNCTION(VALUE(SUBSTITUTE(X,"*","")),C22:I22))

或者有没有更简单的方法来实现我的目标?

谢谢!

【问题讨论】:

    标签: libreoffice libreoffice-calc


    【解决方案1】:

    对于 Calc,有一个超级幂函数可以处理多个值:SUMPRODUCT。只要有一点创意,它几乎可以做任何事情。

    =SUMPRODUCT(VALUE(SUBSTITUTE(C22:I22;"*";"")))
    

    它充当一个数组函数,但不需要 Ctrl+Shift+Enter,使得事情很多更容易。

    【讨论】:

      【解决方案2】:

      我相信这会奏效:

      =SUM(NUMBERVALUE(SUBSTITUTE(CONCATENATE(D22:I22),"*","")))
      

      输入完成后按 CTRL-SHIFT-ENTER 使公式变为数组公式,然后公式将如下所示:

      {=SUM(NUMBERVALUE(SUBSTITUTE(CONCATENATE(D3:H3),"*","")))}
      

      【讨论】:

      • 我将单元格范围更改为所有单个单元格(d3、e3 等)。这清除了错误,但我只是将单元格的值粘在一起。
      • 由于某种原因<CTRL><SHIFT><ENTER> 没有出现在我的回答中。现已修复
      • ctrl-shift-enter 不起作用,但我确实使用函数向导“数组”复选框让它工作。
      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      相关资源
      最近更新 更多