可以在动态(溢出)范围和 return 一个(2d)数组上做一个 sumif(s)吗?
Can one do a sumif(s) on a dynamic (spilled) range and return a (2d) array?
只是好奇是否可以从 excel 中的 sum 或 sumif 公式获得溢出范围输出。给定一个二维数组,我想对一些行求和但保留列。我担心的是,一旦将 sum 或 sumif 添加到溢出公式(序列、过滤器等)中,就会失去溢出效果。我这样做的兴趣是在输入 table 改变大小时保持 tables 自动更新。
一张图片可能对此进行了最好的描述:我的 table 有一些行带有一些重复的标签;我想将它们折叠成具有独特行标签的较短的 table。例如,B 和 D 行重复,这些行应在最终输出中求和。 (此处示例中的输出是手动完成的,我在输出的每个 row/column 中做了一个求和。)
非常感谢!
使用 MAKEARRAY
和 LAMBDA
函数是可能的。
公式如下:
=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:F8
和G2# = 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
和列号c
和INDEX
来获得条件值。
只是好奇是否可以从 excel 中的 sum 或 sumif 公式获得溢出范围输出。给定一个二维数组,我想对一些行求和但保留列。我担心的是,一旦将 sum 或 sumif 添加到溢出公式(序列、过滤器等)中,就会失去溢出效果。我这样做的兴趣是在输入 table 改变大小时保持 tables 自动更新。
一张图片可能对此进行了最好的描述:我的 table 有一些行带有一些重复的标签;我想将它们折叠成具有独特行标签的较短的 table。例如,B 和 D 行重复,这些行应在最终输出中求和。 (此处示例中的输出是手动完成的,我在输出的每个 row/column 中做了一个求和。)
非常感谢!
使用 MAKEARRAY
和 LAMBDA
函数是可能的。
公式如下:
=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:F8
和G2# = 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
和列号c
和INDEX
来获得条件值。