excel - 可以在动态(溢出)范围上执行 sumif(s)并返回(2d)数组吗?

标签 excel sumifs spill-range

只是好奇是否可以从 excel 中的 sum 或 sumif 公式获得溢出范围输出。给定一个二维数组,我想对一些行求和,但保留列。我担心的是,一旦将 sum 或 sumif 添加到溢出公式(序列、过滤器等),就会失去溢出效应。我这样做的兴趣是在输入表更改大小时保持表自动更新。
一张图片可能最好地描述了这一点:我的表有一些重复标签的行;我想将它们折叠到具有唯一行标签的较短表格中。例如,B 行和 D 行重复,这些行应该在最终输出中求和。 (此处示例中的输出是手动完成的,我在输出的每一行/列中执行 sumif。)
非常感谢!
sample image

最佳答案

MAKEARRAYLAMBDA功能是可能的。
公式如下:

=MAKEARRAY(
   ROWS(F3#),
   COLUMNS(G2#),
   LAMBDA(
      r,
      c,
      SUM(
          B3:D10 * 
          --(A3:A10=INDEX(F3#,r)) * 
          --(B2:D2=INDEX(G2#,1,c))
      )
   )
)
MAKEARRAY公式通过前两个参数 ROWS(F3#) 跨越具有所需行数和列数的数组和 COLUMNS(G2#) (注意 F3# = F3:F8G2# = G2:I2 )。MAKEARRAY的第三个参数采取LAMBDA函数并提供了行数r和列 c到它的前两个参数。LAMBDA的第三个参数带这里SUM模拟 SUMIFS 的函数计算。它有三个因素:
  • 数据范围B3:D10
  • 行条件--(A3:A10=INDEX(F3#,r))
  • 列条件--(B2:D2=INDEX(G2#,1,c))2) 和 3) 中的条件在适用与否时得出 1 或 0。所以SUM在匹配的地方计算一个值,在不匹配的地方计算 0。此外,2)和3)中的公式使用行号r和列号cINDEX获取条件值。

  • Using MAKEARRAY and LAMBDA creates the 2d spilling sumifs
    The formula used to create the 2d spilling sumifs

    关于excel - 可以在动态(溢出)范围上执行 sumif(s)并返回(2d)数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69655057/

    相关文章:

    Excel count/sumifs 带数字的通配符

    google-sheets - 谷歌表格: How to sum multiple unique criteria

    excel - 使用新的 Excel 动态数组公式的累积和公式

    excel - 溢出范围 : casting arrays to intersection value with @

    excel - 返回到按下按钮的工作表

    c# - 删除行时防止 Excel 删除公式中的引用

    excel - VBA/如何过滤精确字符串上的数组?

    excel - 假期费用,总结谁支付了什么

    vba - 如何让 Excel VBA 在 If and Then 之后停止