Еще одно, что нужно добавить в BoK. Для этого требуется Excel 365. Он отменяет поворот B1: E5 на A1: A5.
=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<>"")
)
NB: byMatrix может быть диапазоном с несколькими столбцами, и он будет копировать значения строк столбцов. например у вас может быть byMatrix из A1: C5 и unPivMatrix из D1: H5, и он будет реплицировать значения столбца A2: C5 (игнорируя A1).
person
mark fitzpatrick
schedule
25.06.2021