所有,我的目标是获得溢出公式的摘要输出,该公式生成前 x 行,但最后一行对所有其他行进行分组,以便总数将与数据源相关联。 (第一张图显示了它的工作原理,第二张图显示了我想要的效果。包含用于测试的 Markdown 表格。)如果有更好的方式来表达标题,请告诉我,我会进行调整。
源表是通过针对数据透视表的溢出公式生成的。我这样做是为了在开始组合字段之前获得我想要关联的总数,而数据透视表没有一个干净的解决方案(要对前 x 个字段进行分组,您需要手动选择它们,但我需要它是动态的)。
图中,第一个表(左侧)都是溢出公式。生成顶部的部门编号和侧面下方的 ID,以及值。
第二个表试图取前5名,然后将前5名之后的所有内容汇总到“其他”中;然而,正如您所看到的,这是获取 ID 6 的数据,而不是大于 6 的所有数据。我尝试了几种方法,但无法让它在执行此操作的同时立即对所有列求和。一种解决方案要求我复制附加列的公式,或者在数量较少时将其删除,因为这不是静态的。
该公式适用于除“其他”行之外的所有内容:
=MAKEARRAY( ROWS(I2#), COLUMNS(K1#), LAMBDA(r,c,SUM(C2#*--(A2#=INDEX(I2#,r))*--(C1#=INDEX(K1#,1,c)) )))
我尝试将 K2 中的公式修改为以下,但结果是#N/A:
=MAKEARRAY( ROWS(I2#), COLUMNS(K1#), LAMBDA(r,c,SUM(C2#*--IF(I2#>5,(A2#>=INDEX(I2#,r)),(A2#=INDEX(I2#,r)))*--(C1#=INDEX(K1#,1,c)) )))
这是所需的输出:
(用于测试的Markdown)
ID/部门 | 姓名 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
1 | 汤姆 | 2.00 | 3.25 | 4.50 | 5.75 | 7.00 |
2 | 乔 | 2.75 | 4.00 | 5.25 | 6.50 | 7.75 |
3 | 克里斯汀 | 3.50 | 4.75 | 6.00 | 7.25 | 8.50 |
4 | 马克 | 4.25 | 5.50 | 6.75 | 8.00 | 9.25 |
5 | 本 | 5.00 | 6.25 | 7.50 | 8.75 | 10.00 |
6 | 简 | 5.75 | 7.00 | 8.25 | 9.50 | 10.75 |
7 | 凯里 | 6.50 | 7.75 | 9.00 | 10.25 | 11.50 |
8 | 杰克 | 7.25 | 8.50 | 9.75 | 11.00 | 12.25 |
9 | 玫瑰 | 8.00 | 9.25 | 10.50 | 11.75 | 13.00 |
10 | 米歇尔 | 8.75 | 10.00 | 11.25 | 12.50 | 13.75 |
11 | 迈克尔 | 9.50 | 10.75 | 12.00 | 13.25 | 14.50 |
12 | 保罗 | 10.25 | 11.50 | 12.75 | 14.00 | 15.25 |
13 | 何塞 | 11.00 | 12.25 | 13.50 | 14.75 | 16.00 |
14 | 珊达 | 11.75 | 13.00 | 14.25 | 15.50 | 16.75 |
15 | 埃里克 | 12.50 | 13.75 | 15.00 | 16.25 | 17.50 |
您也可以尝试使用以下内容,以及
VSTACK()
+TAKE()
+BYCOL()/MMULT()
的组合:
=VSTACK(
A1:G1,
TAKE(A2:G16, 5),
HSTACK(
6,
"Others",
BYCOL(
DROP(A2:G16, 5, 2),
LAMBDA(x, SUM(x))
)
)
)
或者,使用
MMULT()
=VSTACK(
A1:G1,
TAKE(A2:G16, 5),
HSTACK(
6,
"Others",
MMULT(
SEQUENCE(
,
ROWS(A2:G16) -
5
) ^ 0,
DROP(A2:G16, 5, 2)
)
)
)
或者,建议使用
Structured References
,即Tables
,这是比以下更好的选择,但是,公式替代方案以A列为基础并将其用作lastRow
的参考。但我的钱在Tables
,我永远不会选择以下,这只是一个替代方案。
=LET(
_LastRow, MATCH(2,1/(A:A<>"")),
_Data, A1:INDEX(A:G, _LastRow, ),
VSTACK(TAKE(_Data,6), HSTACK(6, "Others", BYCOL(DROP(_Data,6,2), LAMBDA(x,SUM(x))))))