Excel: 引用数据源发生移动时,如何不改变引用的单元格地址

2022-09-20 14:25:05 浏览数 (1)

文章背景:在Excel中,公式引用无效单元格时将显示 #REF! 错误。当公式所引用的单元格被删除或被粘贴覆盖时最常发生这种情况。针对这种情况,之前采取过一些措施,比如禁用自动填充功能等(参见文末的延伸阅读)。但这些措施治标不治本,虽然可以防止数据源发生移动,但也带来了不友好的体验(比如无法使用自动填充功能)。

在编写单元格公式时,不推荐在函数中使用显式单元格的引用(如:"=A2","=A3"等)。当引用的数据源发生移动时,为了确保引用的单元格地址不变,可以配合使用indirect函数和address函数。

http://mpvideo.qpic.cn/0b78l4aaeaaalaacjejl5vqvax6dajpqaaqa.f10003.mp4?dis_k=21ae4648e00b058d350c24234e1971f2&dis_t=1663655061&vid=wxv_2023759469645561857&format_id=10003&support_redirect=0&mmversion=false

函数说明:

(1)INDIRECT 函数

返回由文本字符串指定的引用。

语法:INDIRECT(ref_text, [a1])

(2)ADDRESS 函数

可以使用 ADDRESS 函数,根据指定行号和列号获得工作表中的某个单元格的地址。例如,ADDRESS(2,3) 返回 C2。再例如,ADDRESS(77,300)返回 KN77。可以使用其他函数(如 ROW 和 COLUMN 函数)为 ADDRESS 函数提供行号和列号参数。

语法:ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])

(3)ROW 函数

返回引用的行号。

语法:ROW([reference])

  • Reference 可选。需要得到其行号的单元格或单元格区域。
  • 如果省略 reference,则假定是对函数 ROW 所在单元格的引用。

参考资料:

[1] 如何更正 #REF! 错误(https://support.microsoft.com/zh-cn/office/如何更正-ref-错误-822c8e46-e610-4d02-bf29-ec4b8c5ff4be

[2] 引用数据源发生移动时,如何使引用的单元格不变(https://club.excelhome.net/thread-1096201-1-1.html?_dsign=f9b3d4cb

[3] INDIRECT 函数(https://support.microsoft.com/zh-cn/office/indirect-函数-474b3a3a-8a26-4f44-b491-92b6306fa261

[4] ADDRESS 函数(https://support.microsoft.com/zh-cn/office/address-函数-d0c26c0d-3991-446b-8de4-ab46431d4f89

[5] ROW 函数(https://support.microsoft.com/zh-cn/office/row-函数-3a63b74a-c4d0-4093-b49a-e76eb49a6d8d

延伸阅读:

[1] VBA: 禁止单元格移动,防止单元格公式引用失效

[2] VBA: 禁止单元格移动,防止单元格公式引用失效(2)

0 人点赞