wps/excel函数技巧:pivotby/groupby字段顺序调整的几种办法
发布时间:2026-08-25 18:40 浏览量:1
如图,源数据U2:W681是化学式的元素列表,同时会有重复,要求进行透视,但透视后的化学式名称顺序,及元素顺序有要求,顺序如下表:
一般的公式如下:
=PIVOTBY(U2:U681,V2:V681,W2:W681,LAMBDA(x,IF(SUM(x)=0,"",SUM(x))),0,0,,0)
透视后结果如下:
我们可以看到数据都是对的,但顺序不符合要求。有以下办法可以实现按要求顺序呈现数据:
方法一:
根据顺序要求表格,在前面加上排序数字 ,后面再用textafter函数去除。整体公式如下:
=LET(a,XLOOKUP(U2:U681,A2:A11,ROW(A2:A11)+100&"-"&A2:A11),b,XLOOKUP(V2:V681,TRANSPOSE(B1:R1),TRANSPOSE(COLUMN(B1:R1)+100&"-"&B1:R1)),r,PIVOTBY(a,b,W2:W681,LAMBDA(x,IF(SUM(x)=0,"",SUM(x))),0,0,,0),IFERROR(TEXTAFTER(r,"-"),r))
方法二:
后期根据顺序要求使用reduce和xlookup重新排列
=LET(a,PIVOTBY(U2:U681,V2:V681,W2:W681,LAMBDA(x,IF(SUM(x)=0,"",SUM(x))),0,0,,0),REDUCE(A1:R1,A2:A11,LAMBDA(x,y,VSTACK(x,XLOOKUP(HSTACK(y,B1:R1),IF(TAKE(a,1)="",y,TAKE(a,1)),FILTER(a,TAKE(a,,1)=y))))))
方法三:
后期使用sortby函数进行两次排序
=LET(a,PIVOTBY(U2:U681,V2:V681,W2:W681,LAMBDA(x,IF(SUM(x)=0,"",SUM(x))),0,0,,0),b,SORTBY(a,XMATCH(TAKE(a,,1),VSTACK("",A2:A11)),SORTBY(b,XMATCH(TAKE(a,1),HSTACK("",B1:R1)))