
在录制宏的过程中,启用“相对引用”与不启用它,会产生截然不同的效果。那么二者究竟有何差异?又该如何判断何时该用、何时不该用相对引用呢?
我们先来了解“相对引用”按钮的位置与状态。该功能位于【开发工具】选项卡下的【代码】功能组中,紧邻【录制宏】按钮下方。其具有两种视觉状态:
- 默认未激活时,按钮背景为浅色,此时录制的宏将采用绝对引用方式;
- 单击启用后,按钮变为深色高亮,此时录制的宏将采用相对引用方式。
绝对引用与相对引用的核心区别
在宏录制过程中,工作表中涉及的单元格位置通常可分为两类:
- 起始位置:即开始录制宏时所选中的单元格或区域,可能是单个单元格,也可能是多单元格区域;
- 操作位置:录制过程中通过鼠标点击或方向键移动后新选中的单元格或区域,同样可为单个或多个单元格。
二者的本质差异,正体现在对“操作位置”的记录逻辑上。
先说相同点:对于起始位置,无论是否启用相对引用,Excel 都仅记录当前选中的区域范围,而不会保存其具体地址信息(如 A1 或 B3)。
关键的不同在于——对操作位置的记录机制:
-
绝对引用:直接记录操作位置的完整单元格地址。例如,从起始位置 A1 出发,后续选中了 A10,则宏中明确写入
Range("A10"); -
相对引用:不记录绝对地址,而是记录相对于起始位置的行列偏移量。例如,从 A1 开始,再选中 A10,则宏中记录的是起始位置 A1 与目标位置之间的偏移
[9, 0](即向下9行、向右0列)。
绝对引用与相对引用的实际应用对比
为了更直观地理解两者的运行效果,我们分别录制两个高度相似的宏:
操作步骤统一为:
- 将光标定位至 B3 单元格;
- 开始录制宏;
- 使用方向键或鼠标选中右侧相邻的 C3 单元格;
- 输入内容“C3”,按 Ctrl+Enter 确认输入;
- 停止录制。
第一个宏:不启用相对引用,命名为「绝对引用宏」;
第二个宏:启用相对引用后再录制,命名为「相对引用宏」。
完成录制后,在同一张工作表中进行测试,观察执行结果差异。
绝对引用宏演示
首先选中 B10 单元格,调出宏列表并运行「绝对引用宏」。
结果可见:内容“C3”被填入了固定的 C3 单元格,与当前活动单元格 B10 完全无关。
相对引用宏演示
清空 C3 中的内容,再次选中 B10 单元格,运行「相对引用宏」。
结果可见:“C3”被准确填入了 C10 单元格——即始终相对于起始位置 B10 向右偏移一列,与原始录制时 B3→C3 的偏移关系完全一致。
由此可知:
- 绝对引用只认“固定坐标”,无视起始点;
- 相对引用则依赖“起点 + 偏移”,具备位置跟随性。
绝对引用与相对引用的适用场景
当你要操作的目标单元格或区域位置恒定不变,且与用户当前所处位置无关时,应选择绝对引用。
典型场景包括:在指定行列处插入标题、在固定位置设置打印区域、于特定单元格插入时间戳、冻结某一行/列等。
反之,若你的操作目标随起始位置动态变化,比如批量处理每一行的数据、对当前选中单元格右侧的单元格执行填充、基于当前行进行公式下拉等,则必须使用相对引用,才能保证宏在不同起始位置下依然正确运行。
总结
若此前从未亲手尝试过两种引用方式,仅靠文字描述可能较难建立清晰认知,“绝对”与“相对”的概念容易混淆。因此强烈建议你亲自动手,用不同起始位置多次录制并运行宏,通过反复对比输出结果,逐步掌握它们的行为逻辑。实践才是理解这两类引用最有效的方式。











