再添加一个到 BoK。这需要 Excel 365。它通过 A1:A5 取消透视 B1:E5。
=LET( unPivMatrix, B1:E5,
byMatrix, A1:A5,
upC, COLUMNS( unPivMatrix ),
byC, COLUMNS( byMatrix ),
dmxR, MIN( ROWS( unPivMatrix ), ROWS( byMatrix ) ) - 1,
dmxSeq, SEQUENCE( dmxR ) + 1,
upCells, dmxR * upC,
upSeq, SEQUENCE( upCells,, 0 ),
upHdr, INDEX( INDEX( unPivMatrix, 1, ), 1, SEQUENCE( upC ) ),
upBody, INDEX( unPivMatrix, dmxSeq, SEQUENCE( 1, upC ) ),
byBody, INDEX( byMatrix, dmxSeq, SEQUENCE( 1, byC ) ),
attr, INDEX( upHdr, MOD( upSeq, upC ) + 1 ),
mux, INDEX( upBody, upSeq/upC + 1, MOD( upSeq, upC ) + 1 ),
demux, IFERROR( INDEX(
IFERROR( INDEX( byBody,
IFERROR( INT( SEQUENCE( upCells, byC,0 )/byC/upC ) + 1, MOD( upSeq, upC ) + 1 ),
SEQUENCE( 1, byC + 1 ) ),
attr ),
upSeq + 1, SEQUENCE( 1, byC + 2 ) ),
mux ),
FILTER(demux, mux<>"")
)
注意: byMatrix 可以是具有多列的范围,它将复制列的行值。例如,您可以拥有 A1:C5 的 byMatrix 和 D1:H5 的 unPivMatrix,它会复制 A2:C5 列值(忽略 A1)。