Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在谷歌电子表格中将数据行转换为对角线_Arrays_Google Sheets_Google Sheets Formula_Transpose_Diagonal - Fatal编程技术网

Arrays 在谷歌电子表格中将数据行转换为对角线

Arrays 在谷歌电子表格中将数据行转换为对角线,arrays,google-sheets,google-sheets-formula,transpose,diagonal,Arrays,Google Sheets,Google Sheets Formula,Transpose,Diagonal,我试图找到一个谷歌电子表格公式,它可以将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,列为

我试图找到一个谷歌电子表格公式,它可以将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”

只要用数字或单元格引用替换dX和dy,就可以开始了

编辑3:

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

编辑:

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

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

因此,要使其完全可变,只需知道原始数据的左上角单元格和新块的左上角单元格之间的距离。让我们调用列数差“dx”和行数差“dy”

只要用数字或单元格引用替换dX和dy,就可以开始了

编辑3:

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


这里有另一种方法可以回到你原来的帖子

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

这里有另一种方法可以回到你原来的帖子

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

这是该任务的
数组公式。唯一的参数是容易更改的范围本身(
A1:E20

仅将其放在一个单元格中:

=数组公式(
伊夫纳(
瓦卢库普(
顺序(行(A1:E20)+列(A1:E20)-1)-(列(A1:E20)-1),
{行(A1:E20),A1:E20},
顺序(1,列(A1:E20),2,1),
0
)
)
)

这是该任务的
数组公式。唯一的参数是容易更改的范围本身(
A1:E20

仅将其放在一个单元格中:

=数组公式(
伊夫纳(
瓦卢库普(
顺序(行(A1:E20)+列(A1:E20)-1)-(列(A1:E20)-1),
{行(A1:E20),A1:E20},
顺序(1,列(A1:E20),2,1),
0
)
)
)

你可能在这篇文章中找到了“相反问题的解决方案”:?如果这里提供的答案回答了你的问题(在那篇文章中),你至少可以接受答案?正确,JPV!对不起,我不知道有接受应答功能。我添加了一个谢谢你的答案,但它显然被删除了。不管怎样,问题解决了,谢谢!你可能在这篇文章中找到了“相反问题的解决方案”:?如果这里提供的答案回答了你的问题(在那篇文章中),你至少可以接受答案?正确,JPV!对不起,我不知道有接受应答功能。我添加了一个谢谢你的答案,但它显然被删除了。不管怎样,问题解决了,谢谢!谢谢这是可行的,但如果将公式放在工作表的其他位置,则我在调整公式时遇到问题。特别是如果转置的单元格数组应该从与原始数据不同的行开始。再次感谢!我尝试了你的第二次编辑,现在它允许免费放置新块。但我仍然有一些问题。通过将“dx+65”更改为“dx+64”,我使其工作,但是,新块中的数据相对于其左上角单元格(公式所在的位置)向下推3行。不过,我想我可以接受。谢谢!这是可行的,但如果将公式放在工作表的其他位置,则我在调整公式时遇到问题。特别是如果转置的单元格数组应该从与原始数据不同的行开始。再次感谢!我尝试了你的第二次编辑,现在它允许免费放置新块。但我仍然有一些问题。通过将“dx+65”更改为“dx+64”,我使其工作,但是,新块中的数据相对于其左上角单元格(公式所在的位置)向下推3行。不过,我想我可以接受。