为了简化问题,假设我有一张 Excel 工作表,其中单元格 A1 至 B100(2 列乘 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 列中。这种方法不太可靠,有没有更可靠的方法可以做到这一点,使其不受源单元格移动的影响(就像我的第一个例子一样)。
提前谢谢了
答案1
最好的选择是使用命名范围:命名范围可以相对于输入的单元格。例如,如果您选择单元格A2
并插入名称 _CellAbove with the formula
=A1 (without the
$`(会自动插入!),则可以使用上方单元格在任意单元格中引用具有公式的单元格上方的单元格。
因此,对于您的示例,选择单元格D2
并插入两个名称(使用姓名经理): *可乐:=$A2
*ColA_above:=$A1
然后用作=ColA+ColA_above
中的公式D2
并将其复制下来。(=ColA
在中使用D1
)。
这将始终返回正确的结果 - 并且是非易失性的,这在大型计算中非常方便!
补充说明:对于第一个乘法示例,我建议将数据转换为 Excel 表格(插入标签 ->桌子。然后,您将得到列,例如和,而不是列A
,而当您输入公式时,您将得到(与平常一样,即 Excel 将放置这些名称,无需担心)。现在,即使您更改工作表结构,公式仍会起作用!B
Price
Quantity
=A1*B1
=[@Price]*[@Quantity]
答案2
如果您不介意在这里使用数组公式,则在范围 D2:D100 中输入以下内容作为数组公式将按您的要求工作:
{=A1:A99 + A2:A100}
(不要输入花括号:突出显示单元格 D2:D100,输入公式,然后使用Control-Shift-Enter
“确认/输入”来实现,Excel 将在整个公式周围提供花括号。)
这在 2013 年是可行的,现在在 Excel 2013 中也行得通。当然,今天(2023 年),{CSE}
输入方法不再是必需的。
作为数组公式,如果有人从 A1:A100 范围拖放单元格,它引用的单元格不会发生变化。它只会根据现在存在的内容重新计算。因此,将 A23 拖放到 A12 上,重新计算时 A23 将显示为空白/0,而 A12 将显示为具有 A23 的旧值。数组中的公式不会随着拖放而改变。
答案3
尝试这个
=INDIRECT("RC1",0)+INDIRECT("R[-1]C1",0)
请注意,这有一个缺点,那就是易变
答案4
或这个 :
=SUMPRODUCT(A1:A100+A2:A101)
希望我理解正确...:)