Google电子表格公式在函数中使用当前行

who*_*ave 31 google-sheets

我想计算电子表格中每行的两个不同列(例如A和B)的乘积.对于单行,这可以通过使用=PRODUCT(A1:B1),但我无法弄清楚如何使该函数使用当前行而不是手动输入的行.我知道你可以使用当前行的引用ROW(),但是当我尝试类似的东西时,我收到错误PRODUCT(AROW():BROW()).

Ada*_*amL 59

如果将引用的公式复制到另一行,或使用Ctrl + D将其填充,它将自动更改对要复制/填充的行的引用.这被称为"相对参考".如果使用公式=PRODUCT($A$1:$B$1),则称为"绝对引用",如果复制到别处,则不会更改.

您还可以在任何行中使用以下公式:

=A:A*B:B

这将返回调用公式的行中两个值的乘积.

  • 谢谢!!如果我有足够的声誉,我会支持你的。 (2认同)
  • 这实际上是指给定列中的第一个单元格,而不是当前行的单元格。 (2认同)
  • 这并不能回答他的问题。他询问如何引用当前行。不是如何将两列相乘。将两列相乘是最终目标。 (2认同)
  • @Alex = A:A * B:B公式不会“将两列相乘”。它使两个单元格相乘;放置公式的同一行中的两个单元格。一个不带乘法的简单示例是= A:A。将其放在B6中时,它将返回A6。当放置在B7中时,它将返回A7。它将始终引用当前行。因此,我不明白自己是如何回答问题的(除了无法很好地传达答案!)。 (2认同)

lin*_*des 26

一种方法是使用= INDIRECT函数.有几种方法可以解决这个问题(加上下面的奖金):

= INDIRECT,A1B1表示法

选项1使用=ROW()函数(以及=CONCAT连接列和行名称),如您所述,在这种情况下可能如下所示:

=INDIRECT(CONCAT("A", ROW())) * INDIRECT(CONCAT("B", ROW()))
Run Code Online (Sandbox Code Playgroud)

(注意:我使用的是x * y代替,=PRODUCT(x, y)因为在答案中它似乎更具可读性,只考虑了两个因素.)

如果你在第3行这样做,它将有效地提出A3 * B3作为公式.

= INDIRECT,R1C1表示法

选项2 =INDIRECT是使用"相对"引用,使用所谓的"R1C1表示法".通过传递FALSE给(可选)第二个参数来访问此表示法=INDIRECT,并具有两种基本形式:

  1. 通过它的绝对位置引用另一个单元格,例如R1C1总是引用A1(第一行,第一列),R3C2总是引用B3(第三,第二 - 注意行和列的顺序与B3符号相反).无论引用出现在工作表上的哪个位置都会成立(它们将始终分别解析为A1B3).
  2. 一种位置相对于当前小区,使用R[1]C[1]例如,其表示1排下来,1行至右侧.基本上,这是相同的表示法,除了您将数字放在括号中以引用特定单元格的当前单元格(向下和向右为正数)的行数和列数.虽然R[1]C[1]引用1向下行,1向右列,R[0]C[-1]将引用当前行(0没有更改),左侧为1列(负数向上行为行,向左为列而不是向下而不是向下和向右) ).

可以组合这两种形式 - 行的绝对形式,列的相对形式,反之亦然.因此,如果要将A列中当前行的值乘以B列中当前行的值,可以使用:

=INDIRECT("R[0]C1", FALSE) * INDIRECT("R[0]C2", FALSE)
Run Code Online (Sandbox Code Playgroud)

这总会给你你能想到的(但不是表达的)=AROW() * BROW().

(旁注:我发现这个使用说明=INDIRECT有助于提出上述内容.


$ A $ 1 - 锚定参考(奖金)

最后,值得注意的是,可以使用$修饰符引用固定列和/或行.通常情况下,当复制/粘贴公式为其他细胞,列和行引用更改基于移动量:复制引用=A1C2E3会得到你=C2(A变为C,因为参考移动两列的权利; 1变成2因为它向下移动了一排).该$符号锚定一个或两个参考.

例如,如果您=$A1在单元格中有引用C1,然后将其复制到其中C2,则会成为=$A2.这非常普遍,因为它=A1也会被复制=A2.但是,如果您现在复制C2D3(向下一行向右一列),它将变为=$A3,仍然锚定到A列,并仍然更改行号.因此,如果从第63行(任意示例)的任何列放置公式=$A63 * $B63,则可以将其复制/粘贴到电子表格中的任何其他单元格,并将它乘以您粘贴的行的A列和B列中的值.(我认为这可能是你想要做的?)

(另请注意,您可以对行引用执行相同的操作 - =A$1始终是行1,但A可以更改; 无论您将引用置于何处,=$A$1都将始终A1如此.)

  • 谢谢你详细解答@lindes (3认同)