将 Excel 表格转换为自定义行 * 列

将 Excel 表格转换为自定义行 * 列

我想做类似的事情此主题,但出现#REF!错误。我想将其转换为自定义行*列,例如将 3 * 4 表格转换为 6 * 2 格式。如何实现?

在此处输入图片描述

答案1

以下方法使用非常灵活的Let函数,但该函数仅在 Excel 365 和 Excel 2021 中可用:

=LET(Matrix,$A$1:$D$3,rowsMatrix,ROWS(Matrix),colsMatrix,COLUMNS(Matrix),
cellValues,SEQUENCE((rowsMatrix*colsMatrix)/2,2,0),
INDEX(Matrix,INT(cellValues/colsMatrix)+1,MOD(cellValues,colsMatrix)+1))

编辑:评论中的其他问题

在上述方法中,矩阵逐行分布在各列中,即第一行以 1、2 开头,依此类推。

要按列分配矩阵,即第 1 列的值为 1-6,第 2 列的值为 7-12,SEQUENCE必须相应地调整语句。特别是,SEQUENCE语句控制分配机制,并且您希望获得垂直移动而不是水平移动的。因此,只需将函数中的语句SEQUENCE替换为以下内容:SEQUENCELET

TRANSPOSE(SEQUENCE(2,(rowsMatrix*colsMatrix)/2,0))

如果你想了解两者的SEQUENCES区别程度,只需在Excel中输入以下公式:

=SEQUENCE((3*4)/2,2,0)
=TRANSPOSE(SEQUENCE(2,(3*4)/2,0))

另一种切实可行的方法是通过以下方式将数据转换为单列(例如,$F$1 是目标范围的顶部单元格):

选项1:

=OFFSET($A$1,INT((ROW()-ROW($F$1))/COLUMNS($A$1:$D$1)),
MOD(ROW()-ROW($F$1),COLUMNS($A$1:$D$1)))

选项 2:

=INDEX($A$1:$D$3,INT((ROW()-ROW($F$1))/COLUMNS($A$1:$D$1))+1,
MOD(ROW()-ROW($F$1),COLUMNS($A$1:$D$1))+1)

因此,选项 1 和 2 都只是辅助列,然后您可以对其应用下面的函数。由于该函数在输入整个列时也会起作用,因此这种方法似乎也相当灵活:

=INDEX($F:$F,SEQUENCE(6,2))

相关内容