如何得到一个矩阵的原矩阵每个单元格的行号?

问题描述 投票:0回答:1

偶然发现一个奇怪的行为。这个公式

=ARRAYFORMULA(ROW($A$1:$E$5))

返回一个5元素列,行号从1到5。ARRAYFORMULA 会遍历指定范围内的每一个单元格,并执行该函数。ROW() 导致一个新的相同大小的范围(5列,5行),但行号在单元格中。

例如 =ARRAYFORMULA(ISBLANK($A$1:$E$5)) 返回一个5对5的范围。

enter image description here

我找到了一种方法来强制执行所需的行为(见下面的答案),但是还有更好的方法吗?我是不是遗漏了什么?

google-sheets google-sheets-formula array-formulas
1个回答
2
投票

这里没有太多可说的,只是 ROWCOLUMN 只是一个维度,换句话说。ROW 将只适用于一个单列和 COLUMN 将只与单行一起工作--无论你用范围来喂养它 A1:ZA1:A

如前所述,你可以使用MattKing的 SEQUENCE 以生成矩阵

或更短。

=ARRAYFORMULA(ROW(A1:A5)*COLUMN(A:E)^0)

enter image description here

或更短。

=INDEX(ROW(A1:A5)*COLUMN(A:E)^0)

或更短。

=INDEX(ROW(A1:A5)*{1,1,1,1,1})

1
投票

这是给你的一个变通方法,伙计。

=ARRAYFORMULA(ROW($A$1:$E$5) + 0 * ISBLANK(A1:E5))

0 * ISBLANK(A1:E5) 部分只是为了强制执行所需的行为,而不需要修改(见乘以 0?")你需要的数值。

enter image description here


1
投票

我想很多人都会用。

=ARRAYFORMULA(IF(COLUMN(A1:E5),ROW(A1:E5)))

有很多方法可以做到这一点, 但几乎所有的人都会使用两个参考。

这是我能做到的最小的了。 这要看你的输入是什么样的,是否有意义使用。

=ARRAYFORMULA(SEQUENCE(1,5,0,0)+SEQUENCE(5))
© www.soinside.com 2019 - 2024. All rights reserved.