在 Google 电子表格中将数据行转置为对角线

Transpose Data row to Diagonal in Google Spreadsheet

我试图找到一个 Google 电子表格公式,可以将 5 列数组的行转置为对角线,就像这样(假设数据在 A1:E20 中)

A1

A2 B1

A3 B2 C1

A4 B3 C2 D1

A5 B4 C3 D2 E1

A6 B5 C4 D3 E2

A7 B6 C5 D4 E3
...

我找到了相反问题的解决方案(从对角线到行或列 - 非常感谢您的帮助)但不是这个问题。

非常感谢您的帮助!

编辑:

我删除了我的旧评论,因为我误读了你的问题。以下代码适用于您只需要拖动到大小的所有单元格。该代码假定起始行为 1,列为 11,但可以将其调整为任何值。

=if((row()-(column()-11))>0,indirect(char(column()-10+64)&row()-(column()-11)),"")

编辑 2:

因此,要使这个完全可变,您只需要知道原始数据的左上角单元格与新块的左上角单元格之间的距离。让我们称列数差异 "dx" 行数差异 "dy"

=if(((row()-dy)-(column()-dx))>0,indirect(char(column()-dx+65)&(row()-dy)-(column()-dx)),"")

只需用数字或单元格引用替换 dX 和 dy,然后开始!

编辑 3:

最后一个我保证,这个修复了顶行的空白单元格(虽然我只得到一个)

=if(((row()-dy+1)-(column()-dx))>0,indirect(char(column()-dx+64)&(row()-dy+1)-(column()-dx)),"")

这里有另一种方法可以返回原来的 post

=iferror(if(columns($A1:A1)>rows(A:A1),"",index(A:A,rows(A:A1)-columns($A1:A1)+1)),"")

这是该任务的 ARRAYFORMULA。唯一的参数是范围本身 (A1:E20),它很容易更改。

将它放在一个单元格中:

=ARRAYFORMULA(
  IFNA(
    VLOOKUP(
      SEQUENCE(ROWS(A1:E20) + COLUMNS(A1:E20) - 1) - (COLUMN(A1:E20) - 1),
      {ROW(A1:E20), A1:E20},
      SEQUENCE(1, COLUMNS(A1:E20), 2, 1),
      0
    )
  )
)