我试图找到一个公式,能够返回数组A1:D4
的对角线,如下:
A1 B2 C3 D4
我找到了一个函数,它可以返回一列数据,但是我不知道如何对行中的值进行排序。
=INDEX(A1:D1,,ROWS($1:1))
对于这个问题,当然可以使用 TRANSPOSE
函数解决,但我希望有一种更加优雅的方法。谢谢!
我试图找到一个公式,能够返回数组A1:D4
的对角线,如下:
A1 B2 C3 D4
=INDEX(A1:D1,,ROWS($1:1))
对于这个问题,当然可以使用 TRANSPOSE
函数解决,但我希望有一种更加优雅的方法。谢谢!
获取所有对角线:
∕
=排序({ 展平(数组公式(行(A5:E9) + 列(A5:E9))), 展平(A5:E9) })
∖
=SORT({ FLATTEN(ARRAYFORMULA(ROW(A5:E9) - COLUMN(A5:E9))), FLATTEN(A5:E9) })
使用未记录的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
(例如,它可以是命名范围)作为参数。
=index($A$1:$D$4,columns($A1:A1),columns($A1:A1))
或者说你原来的公式等价于
=index(A1:A4,COLUMNS($A1:A1))