我想计算电子表格中每行的两个不同列(例如A和B)的乘积.对于单行,这可以通过使用=PRODUCT(A1:B1)
,但我无法弄清楚如何使该函数使用当前行而不是手动输入的行.我知道你可以使用当前行的引用ROW()
,但是当我尝试类似的东西时,我收到错误PRODUCT(AROW():BROW())
.
Ada*_*amL 59
如果将引用的公式复制到另一行,或使用Ctrl + D将其填充,它将自动更改对要复制/填充的行的引用.这被称为"相对参考".如果使用公式=PRODUCT($A$1:$B$1)
,则称为"绝对引用",如果复制到别处,则不会更改.
您还可以在任何行中使用以下公式:
=A:A*B:B
这将返回调用公式的行中两个值的乘积.
lin*_*des 26
一种方法是使用= INDIRECT函数.有几种方法可以解决这个问题(加上下面的奖金):
选项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
作为公式.
选项2 =INDIRECT
是使用"相对"引用,使用所谓的"R1C1表示法".通过传递FALSE
给(可选)第二个参数来访问此表示法=INDIRECT
,并具有两种基本形式:
R1C1
总是引用A1
(第一行,第一列),R3C2
总是引用B3
(第三行,第二列 - 注意行和列的顺序与B3
符号相反).无论引用出现在工作表上的哪个位置都会成立(它们将始终分别解析为A1
和B3
).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
有助于提出上述内容.
最后,值得注意的是,可以使用$
修饰符引用固定列和/或行.通常情况下,当复制/粘贴公式为其他细胞,列和行引用更改基于移动量:复制引用=A1
从C2
到E3
会得到你=C2
(A变为C,因为参考移动两列的权利; 1变成2因为它向下移动了一排).该$
符号锚定一个或两个参考.
例如,如果您=$A1
在单元格中有引用C1
,然后将其复制到其中C2
,则会成为=$A2
.这非常普遍,因为它=A1
也会被复制=A2
.但是,如果您现在复制C2
到D3
(向下一行和向右一列),它将变为=$A3
,仍然锚定到A列,并仍然更改行号.因此,如果从第63行(任意示例)的任何列放置公式=$A63 * $B63
,则可以将其复制/粘贴到电子表格中的任何其他单元格,并将它乘以您粘贴的行的A列和B列中的值.(我认为这可能是你想要做的?)
(另请注意,您可以对行引用执行相同的操作 - =A$1
始终是行1
,但A
可以更改; 无论您将引用置于何处,=$A$1
都将始终A1
如此.)
归档时间: |
|
查看次数: |
51600 次 |
最近记录: |