use*_*226 4 worksheet-function microsoft-excel
为了简化问题,假设我有一个 Excel 工作表,它在单元格 A1 到 B100(两列乘 100 行)中具有不同的数值。在 C 列中,我想要一个公式,可以将同一行的 A 和 B 中的数字相乘。
我用来编写公式的旧方法是购买输入 C1 =A1*B1
,然后将公式复制到 C100。这很有效,但不是很健壮,因为如果有人在 A 或 B 列中的单元格周围移动,那么公式将跟踪新位置并将事情搞砸。
然后有人向我展示了一个技巧,使这个公式可以更加健壮。我需要在 C1 中输入=A:A*B:B
有效地查看同一行中的值的公式,因此当 A 列和 B 列中的值移动时将继续按预期工作。
让我们假设我现在想在 D 列中创建一个新的计算值(例如,A 中同一行的值 + 前一行 A 列中的值),这样 D1 中的公式为=A1
。D2 中的公式是=A1+A2
,然后这个公式将被复制到 D 列中。这不是那么健壮,是否有更健壮的方法来做到这一点,以便它不受源单元格移动的影响(就像我的第一个例子)。
提前谢谢了
您最好的选择是使用命名范围:命名范围可以相对于输入的单元格。例如,如果您选择单元格A2
并插入一个名称 _CellAbove with the formula
=A1 (without the
$` 会自动插入!),您可以在任何单元格中使用CellAbove来引用带有公式的单元格上方的单元格。
因此,对于您的示例,选择单元格D2
并插入两个名称(使用名称管理器): * ColA : =$A2
* ColA_above:=$A1
然后将其=ColA+ColA_above
用作公式D2
并将其复制下来。(=ColA
在 中使用D1
)。
这将始终为您返回正确的结果 - 并且是非易失性的,这在大型计算中非常方便!
附加说明:对于您的第一个乘法示例,我建议您将数据简单地转换为 Excel 表格(插入选项卡 ->表格。然后,而不是列A
and B
,您将拥有列,例如Price
and Quantity
- 而不是=A1*B1
您将=[@Price]*[@Quantity]
当你输入公式时结束(和往常一样,即Excel会放置这些名称,不用担心)。现在即使你改变表格结构,公式也会起作用!
尝试这个
=INDIRECT("RC1",0)+INDIRECT("R[-1]C1",0)
Run Code Online (Sandbox Code Playgroud)
请注意,这有一个不稳定的缺点