如何获得原始矩阵的每个单元格的行号矩阵?

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))

这里没什么好说的,只是 ROWCOLUMN 只是一维的。换句话说,ROW 将仅适用于一列,而 COLUMN 将仅适用于单行 - 无论您使用范围 A1:ZA1: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})