绝对引用让单元格在复制公式时保持固定。在 =B2*$E$1 中,美元符号锁定了 E1:把公式向下填充,每一行仍然乘以 E1,而 B2 会依次变成 B3、B4 等。要加上美元符号,在公式中点击该引用,然后按 F4(Mac 上按 Cmd+T)。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Sales | Commission | Rate | 5% |
| 2 | Ana | $12,000 | $600 | ||
| 3 | Ben | $8,500 | $425 | ||
| 4 | Chen | $15,200 | $760 | ||
| 5 | Dina | $9,800 | $490 | ||
| 6 | Eli | $11,000 | $550 |
C2 只输入了一次,然后向下填充。点击 C4:它的公式是 =B4*$E$1。销售额单元格移到了第 4 行,费率仍然是 E1。把 E1 中的费率改成 8%,所有提成都会更新。
相对引用与绝对引用
| 引用 | 名称 | 向下复制一行、向右复制一列后 |
|---|---|---|
A1 | 相对引用 | B2 |
$A$1 | 绝对引用 | $A$1 |
A$1 | 混合引用:锁定行 | B$1 |
$A1 | 混合引用:锁定列 | $A2 |
像 B2 这样的普通引用是相对引用:Excel 把它存为“相对于我这个位置的那个单元格”,所以复制到下一行时,它也指向下一行。这正是逐行数据所需要的,也是默认行为。列字母或行号前面的 $ 会锁定那一部分。
经典错误:没加 $ 就向下填充
还是那张提成表,这次 C2 中是 =B2*E1,没有美元符号。第一行是对的,其余各行都是 0。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Rep | Sales | Commission | Rate | 5% |
| 2 | Ana | $12,000 | $600 | ||
| 3 | Ben | $8,500 | $0 | ||
| 4 | Chen | $15,200 | $0 | ||
| 5 | Dina | $9,800 | $0 | ||
| 6 | Eli | $11,000 | $0 |
C3 中是 =B3*E2:费率引用下移到了 E2,而 E2 是空的,空单元格按 0 计算。就在这里修正它:点击 C2,把公式改成 =B2*$E$1,然后按 Enter。整列都会跟着更新,因为 C3:C6 都是 C2 的副本。当固定的单元格是除数时,比如用 =B2/B7 计算占合计的比例,同样的错误显示的是 #DIV/0! 而不是 0(占合计的百分比就是典型情况)。
按 F4 加上美元符号
输入或编辑公式时,把光标放在某个引用中(或紧跟在它后面),然后按 F4。每按一次就切换到下一种形式:
E1 -> $E$1 -> E$1 -> $E1 -> E1
在很多笔记本电脑上,F4 控制屏幕或音量,所以要按 Fn+F4。在 Mac 上按 Cmd+T 或 Fn+F4。你也可以自己输入 $ 符号。
混合引用:只锁定行或只锁定列
混合引用只有一个美元符号。$A2 始终读取 A 列,但让行移动;B$1 始终读取第 1 行,但让列移动。在一个公式中同时使用两者,把这一个公式填充到整个区域,就能得到一张乘法表:
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | x | 1 | 2 | 3 | 4 | 5 |
| 2 | 1 | 1 | 2 | 3 | 4 | 5 |
| 3 | 2 | 2 | 4 | 6 | 8 | 10 |
| 4 | 3 | 3 | 6 | 9 | 12 | 15 |
| 5 | 4 | 4 | 8 | 12 | 16 | 20 |
| 6 | 5 | 5 | 10 | 15 | 20 | 25 |
B2 中是 =$A2*B$1。点击 F6:它是 =$A6*F$1,即 A 列的行号乘以第 1 行的列号,所以显示 25。去掉 B2 中的一个美元符号,表格就乱了,因为副本开始乘以相邻的单元格,而不是表头。
同样的写法可以计算一组价格在不同折扣下的结果:=$A2*(1-B$1),价格沿 A 列向下排列,折扣率沿第 1 行横向排列。
用半锁定区域计算累计合计
区域可以只锁定一端。=SUM($B$2:B2) 的起点永远是 B2,而终点会随着公式向下填充而下移,所以每一行都会把到它为止的所有数相加:
| A | B | C | |
|---|---|---|---|
| 1 | Month | Sales | Total so far |
| 2 | Jan | 420 | 420 |
| 3 | Feb | 380 | 800 |
| 4 | Mar | 510 | 1310 |
| 5 | Apr | 450 | 1760 |
| 6 | May | 470 | 2230 |
C6 中是 =SUM($B$2:B6),显示 2230,即五个月的总和。同样的半锁定区域可以让 =COUNTIF($A$2:A2,A2) 统计某个值到目前为止出现了几次,标记第一次之后的重复项就是这样做的。
练习:用一个公式算出整张表
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Price | 10% | 20% | 30% |
| 2 | $40.00 | |||
| 3 | $25.00 | |||
| 4 | $60.00 | |||
| 5 | $18.00 |
轮到你了: 在 B2 中写出第一个产品按 B1 中的折扣打折后的价格。使用 $,让同一个公式向右和向下填充到 D5 后,能算出表中的每个价格。
表格会像填充柄那样把你的公式复制到 B2:D5 的每个单元格中,“检查”会读取全部十二个结果。如果美元符号加得不对,第 3 行或 C 列中的副本就会读取错误的价格或错误的折扣。
引用其他工作表或查找表的绝对引用
美元符号和工作表名一起使用时也是一样的:=B2*Settings!$B$1。它们在查找中最重要,因为查找值移动时,表格必须保持不动:=VLOOKUP(A2,$E$2:$F$10,2,FALSE) 向下填充后一直在 E2:F10 中查找,而 =VLOOKUP(A2,E2:F10,2,FALSE) 每复制一次就把表格下移一行,开始漏掉前面几行(VLOOKUP)。如果某个固定单元格被很多公式使用,你也可以通过“公式 > 定义名称”给它起个名字,然后写 =B2*Rate;这样定义的名称在每个公式中都指向同一个单元格,就像 $E$1 一样。
常见问题
Excel 公式中的 $ 符号是什么意思?
它锁定紧跟在后面的那部分引用。在 $E$1 中,E 列和第 1 行都被锁定,所以无论公式复制到哪里,引用都保持为 E1。E$1 只锁定行,$E1 只锁定列。
Excel 绝对引用的快捷键是什么?
编辑公式时在引用内点击,然后按 F4(很多笔记本电脑上是 Fn+F4)。每按一次就在 $A$1、A$1、$A1 和 A1 之间循环切换。在 Mac 上按 Cmd+T 或 Fn+F4。
相对引用和绝对引用有什么区别?
像 B2 这样的相对引用在复制公式时会移动:向下一行就变成 B3。像 $B$2 这样的绝对引用始终是 $B$2。当每一行都要用到同一个单元格时(比如费率或合计),就用绝对引用。
Excel 中的混合引用是什么?
只有一个美元符号的引用:$A2 固定列、让行移动,B$1 固定行、让列移动。把 =$A2*B$1 向右和向下填充到一个区域,就得到一张乘法表。
为什么公式向下拖动后显示 0 或 #DIV/0!?
本应保持固定的引用跟着复制移动了。如果第 2 行是 =B2/B7,第 3 行就会变成 =B3/B8,而 B8 是空的。用 =B2/$B$7 锁定合计,再重新填充。