如何获得原始矩阵的每个单元格的行号矩阵?
How to get a matrix with the row numbers for every cell of the original matrix?
偶然发现了一个奇怪的行为。这个公式:
=ARRAYFORMULA(ROW($A:$E))
Returns 一个 5 元素的列,行号从 1 到 5。我认为 ARRAYFORMULA
会遍历指定范围内的每个单元格并在其上执行 ROW()
- 产生相同大小的新范围(5 列,5 行),但行号在单元格中。
例如 =ARRAYFORMULA(ISBLANK($A:$E))
returns 5 对 5 范围。
我找到了一种强制执行所需行为的方法(请参阅下面的答案),但是有更好的方法吗?我错过了什么吗?
伙计,这里有一个解决方法:
=ARRAYFORMULA(ROW($A:$E) + 0 * ISBLANK(A1:E5))
0 * ISBLANK(A1:E5)
部分只是为了强制执行所需的行为而不修改(请参阅乘以 0
?)您需要的值。
我想很多人使用:
=ARRAYFORMULA(IF(COLUMN(A1:E5),ROW(A1:E5)))
有很多方法可以做到这一点,但几乎所有方法都涉及使用两个引用。
这已经是我能得到的最小的了。这是否有意义取决于您输入的内容。
=ARRAYFORMULA(SEQUENCE(1,5,0,0)+SEQUENCE(5))
这里没什么好说的,只是 ROW
和 COLUMN
只是一维的。换句话说,ROW
将仅适用于一列,而 COLUMN
将仅适用于单行 - 无论您使用范围 A1:Z 或 A1:A
如前所述,您可以使用 MattKing 的 SEQUENCE
生成矩阵
或更短:
=ARRAYFORMULA(ROW(A1:A5)*COLUMN(A:E)^0)
或更短:
=INDEX(ROW(A1:A5)*COLUMN(A:E)^0)
或更短:
=INDEX(ROW(A1:A5)*{1,1,1,1,1})
偶然发现了一个奇怪的行为。这个公式:
=ARRAYFORMULA(ROW($A:$E))
Returns 一个 5 元素的列,行号从 1 到 5。我认为 ARRAYFORMULA
会遍历指定范围内的每个单元格并在其上执行 ROW()
- 产生相同大小的新范围(5 列,5 行),但行号在单元格中。
例如 =ARRAYFORMULA(ISBLANK($A:$E))
returns 5 对 5 范围。
我找到了一种强制执行所需行为的方法(请参阅下面的答案),但是有更好的方法吗?我错过了什么吗?
伙计,这里有一个解决方法:
=ARRAYFORMULA(ROW($A:$E) + 0 * ISBLANK(A1:E5))
0 * ISBLANK(A1:E5)
部分只是为了强制执行所需的行为而不修改(请参阅乘以 0
?)您需要的值。
我想很多人使用:
=ARRAYFORMULA(IF(COLUMN(A1:E5),ROW(A1:E5)))
有很多方法可以做到这一点,但几乎所有方法都涉及使用两个引用。
这已经是我能得到的最小的了。这是否有意义取决于您输入的内容。
=ARRAYFORMULA(SEQUENCE(1,5,0,0)+SEQUENCE(5))
这里没什么好说的,只是 ROW
和 COLUMN
只是一维的。换句话说,ROW
将仅适用于一列,而 COLUMN
将仅适用于单行 - 无论您使用范围 A1:Z 或 A1:A
如前所述,您可以使用 MattKing 的 SEQUENCE
生成矩阵
或更短:
=ARRAYFORMULA(ROW(A1:A5)*COLUMN(A:E)^0)
或更短:
=INDEX(ROW(A1:A5)*COLUMN(A:E)^0)
或更短:
=INDEX(ROW(A1:A5)*{1,1,1,1,1})