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

时间:2013-07-11 02:43:49

标签: google-sheets

我想为电子表格中的每一行计算两个不同列(例如A& B)的乘积。对于单行,这可以通过使用=PRODUCT(A1:B1)来工作,但我无法弄清楚如何使该函数使用当前行而不是手动输入的行。我知道您可以使用ROW()获取对当前行的引用,但是当我尝试PRODUCT(AROW():BROW())之类的内容时出现错误。

2 个答案:

答案 0 :(得分:49)

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

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

=A:A*B:B

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

答案 1 :(得分:20)

执行此操作的一种方法是使用=INDIRECT功能。有几种方法可以解决这个问题(加上下面的奖金):

=间接,A1B1表示法

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

=INDIRECT(CONCAT("A", ROW())) * INDIRECT(CONCAT("B", ROW()))

(注意:我使用的是x * y而不是=PRODUCT(x, y),因为只有两个因素,它在答案中似乎更具可读性。)

如果您在第3行执行此操作,则会有效地提出A3 * B3作为公式。

= INDIRECT,R1C1表示法

=INDIRECT的选项2是使用“相对”引用,使用所谓的“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列(负数用于行,左边用于列,而不是分别向下和向右)。
  3. 这两种形式可以组合使用 - 行为绝对,列为相对,反之亦然。因此,如果要将A列中当前行的值乘以B列中当前行的值,可以使用:

    =INDIRECT("R[0]C1", FALSE) * INDIRECT("R[0]C2", FALSE)
    

    这总是能为您提供您所能想到的( 但不能表达 =AROW() * BROW()

    (旁注:我发现this description of using =INDIRECT有助于提出上述内容。

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

    最后,值得注意的是,可以使用$修饰符引用固定列和/或行。通常,在将公式复制/粘贴到其他单元格时,列和行引用会根据移动量而变化:将=A1的引用从C2复制到E3会得到{{{ 1}}(A变为C,因为引用向右移动了两列; 1变为2,因为它向下移动了1行)。 =C2表示法锚定了这些引用中的一个或两个。

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

    (另请注意:您可以对行引用执行相同操作 - =$A63 * $B63始终为行=A$1,但1可以更改; A将无论你把它引用到哪里,总是=$A$1。)