我尝试过使用 SUMIF,但我不知道如何在整行数据上实现自动化。我相信应该有更好的函数/方法来做到这一点。预期是一个具有唯一 ID、值和描述的表。
已编辑
=LET(data,A1:E10,
uIDs, UNIQUE(CHOOSECOLS(data,1,4,5)),
aValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(r,c, MIN(IF(INDEX(data,,1),INDEX(uIDs,r,1),INDEX(data,,c+1))))
),
bValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(j,k, MAX(IF(INDEX(data,,1),INDEX(uIDs,j,1),INDEX(data,,k+1))))
),
CHOOSECOLS(HSTACK(uIDs,aValues, bValues),1,4,5,2,3))
=LET(data,A2:E10,
uIDs, UNIQUE(CHOOSECOLS(data,1,4,5)),
sValues,MAKEARRAY(ROWS(uIDs),2,LAMBDA(r,c,
SUMIF(INDEX(data,,1),INDEX(uIDs,r,1),INDEX(data,,c+1)))),
CHOOSECOLS(HSTACK(uIDs,sValues),1,4,5,2,3))
sValues
创建每个唯一 ID 的总和。
GROUPBY()
与
MS365
配合使用Beta 版本。
=CHOOSECOLS(GROUPBY(HSTACK(A1:A10,D1:E10),B1:C10,SUM,3,0),1,4,5,2,3)
编辑:根据OP的新更新
=CHOOSECOLS(DROP(GROUPBY(HSTACK(A1:A10,D1:E10),B1:C10,HSTACK(MAX,MIN),3,0),1),1,4,5,2,3)
LAMBDA()
辅助函数
MAKEARRAY()
和
AGGREGATE()
函数来获得
MIN
和
MAX
值的所需输出:
=LET(
_Data,A2:E10,
_Uniq, UNIQUE(CHOOSECOLS(_Data,1,4,5)),
_MinMax, MAKEARRAY(ROWS(_Uniq),2,LAMBDA(r,c,
INDEX(AGGREGATE({15,14},6,
INDEX(HSTACK(INDEX(_Data,,2),INDEX(_Data,,3)),,c)/
(INDEX(_Data,,1)=INDEX(_Uniq,r,1)),1),c))),
_Answer, CHOOSECOLS(HSTACK(_Uniq,_MinMax),1,4,5,2,3),
VSTACK({"ID","Min","Max","Descr 1","Descr 2"},_Answer))
MAX
和
MIN
,需要互换
AGGREGATE()
函数中的 function_num:
测试用例:
=LET(data,A2:A10,
uIDs, UNIQUE(CHOOSECOLS(data,1,4,5)),
startValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(r,c, MINIFS(INDEX(data,,c+1), INDEX(data,,1), INDEX(uIDs,r,1)))
),
endValues, MAKEARRAY(ROWS(uIDs), 1, LAMBDA(j,k, MAXIFS(INDEX(data,,k+2), INDEX(data,,1), INDEX(uIDs,j,1)))
),
CHOOSECOLS(HSTACK(uIDs,startValues, endValues),1,2,3,4,5))