将对角线转置为 Google 电子表格中的行?
Transpose Diagonal to row in Google Spreadsheet?
我试图找到一个公式 return 数组的对角线 A1:D4
如下:
A1 B2 C3 D4
我找到了这个,它 return 是一列,但我找不到如何对一行中的值进行排序。
=INDEX(A1:D1,,ROWS(:1))
(粘贴在下面的列中)
A TRANSPOSE
结果当然可以解决问题,但我希望稍微优雅一些。谢谢!
这个怎么样,然后当你把它拉过去时,它会沿着对角线向下
=index($A:$D,columns($A1:A1),columns($A1:A1))
或者你的原始公式的等价物是
=index(A1:A4,COLUMNS($A1:A1))
如果您使用您提到的确切范围 (A1:D4),那么这应该有效
=ARRAYFORMULA(TRIM(QUERY(IF(ROW(A1:D4)=COLUMN(A1:D4), A1:D4,),,ROWS(A1:A4))))
(无需填写。)
如果你想获得任何范围的对角线值(这里:B11:E14),试试
=ARRAYFORMULA(TRIM(QUERY(IF(ROW(B11:E14)-ROW(B11)+1=COLUMN(B11:E11)-COLUMN(B11)+1, B11:E14,),,ROWS(B11:B14))))
使用未记录的FLATTEN
救生功能:
=TRANSPOSE(
QUERY(
FLATTEN(
ARRAYFORMULA(
IF(COLUMN(A1:D4) = ROW(A1:D4), A1:D4, "")
)
),
"WHERE Col1 IS NOT NULL",
0
)
)
如果范围不在左上角:
=TRANSPOSE(
QUERY(
FLATTEN(
ARRAYFORMULA(
IF(
COLUMN(F15:I18) - COLUMN(INDEX(F15:I18, 1, 1)) + 1 = ROW(F15:I18) - ROW(INDEX(F15:I18, 1, 1)) + 1,
F15:I18,
""
)
)
),
"WHERE Col1 IS NOT NULL",
0
)
)
有意使用 INDEX(F15:I18, 1, 1)
而不是 F15
以仅将范围 F15:I18
(例如它可以是命名范围)作为参数。
获取所有对角线:
∕
=SORT({ FLATTEN(ARRAYFORMULA(ROW(A5:E9) + COLUMN(A5:E9))), FLATTEN(A5:E9) })
∖
=SORT({ FLATTEN(ARRAYFORMULA(ROW(A5:E9) - COLUMN(A5:E9))), FLATTEN(A5:E9) })
我试图找到一个公式 return 数组的对角线 A1:D4
如下:
A1 B2 C3 D4
我找到了这个,它 return 是一列,但我找不到如何对一行中的值进行排序。
=INDEX(A1:D1,,ROWS(:1))
(粘贴在下面的列中)
A TRANSPOSE
结果当然可以解决问题,但我希望稍微优雅一些。谢谢!
这个怎么样,然后当你把它拉过去时,它会沿着对角线向下
=index($A:$D,columns($A1:A1),columns($A1:A1))
或者你的原始公式的等价物是
=index(A1:A4,COLUMNS($A1:A1))
如果您使用您提到的确切范围 (A1:D4),那么这应该有效
=ARRAYFORMULA(TRIM(QUERY(IF(ROW(A1:D4)=COLUMN(A1:D4), A1:D4,),,ROWS(A1:A4))))
(无需填写。)
如果你想获得任何范围的对角线值(这里:B11:E14),试试
=ARRAYFORMULA(TRIM(QUERY(IF(ROW(B11:E14)-ROW(B11)+1=COLUMN(B11:E11)-COLUMN(B11)+1, B11:E14,),,ROWS(B11:B14))))
使用未记录的FLATTEN
救生功能:
=TRANSPOSE(
QUERY(
FLATTEN(
ARRAYFORMULA(
IF(COLUMN(A1:D4) = ROW(A1:D4), A1:D4, "")
)
),
"WHERE Col1 IS NOT NULL",
0
)
)
如果范围不在左上角:
=TRANSPOSE(
QUERY(
FLATTEN(
ARRAYFORMULA(
IF(
COLUMN(F15:I18) - COLUMN(INDEX(F15:I18, 1, 1)) + 1 = ROW(F15:I18) - ROW(INDEX(F15:I18, 1, 1)) + 1,
F15:I18,
""
)
)
),
"WHERE Col1 IS NOT NULL",
0
)
)
有意使用 INDEX(F15:I18, 1, 1)
而不是 F15
以仅将范围 F15:I18
(例如它可以是命名范围)作为参数。
获取所有对角线:
∕
=SORT({ FLATTEN(ARRAYFORMULA(ROW(A5:E9) + COLUMN(A5:E9))), FLATTEN(A5:E9) })
∖
=SORT({ FLATTEN(ARRAYFORMULA(ROW(A5:E9) - COLUMN(A5:E9))), FLATTEN(A5:E9) })