跳转至

ADDRESS 函数

函数概述

ADDRESS 函数用于根据行号与列号生成单元格地址文本(如 "A1""$B$3""Sheet1!C5")。它返回的是文本而不是引用本身,因此常用于:

  • 动态拼接地址(配合 INDIRECT 把文本地址转为可引用的单元格/区域)
  • 生成报表中的定位信息、提示信息
  • 在公式中动态切换绝对/相对引用形式
  • 生成可读的“行列坐标 → 地址”结果

基础语法

=ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])

参数说明

参数 是否必填 类型 含义 常见取值/说明
row_num 必填 数值 行号 1 表示第 1 行
column_num 必填 数值 列号 1 表示 A 列,2 表示 B 列
abs_num 选填 数值 控制绝对/相对引用形式 1~4(见下表),省略默认 1
a1 选填 逻辑值 返回 A1 引用还是 R1C1 引用 TRUE/A1(默认),FALSE/R1C1
sheet_text 选填 文本 工作表名称(或外部引用前缀) 会拼在地址前,如 "Sheet1!A1"

abs_num 对照表

abs_num 返回形式示例(row=5,col=3) 说明
1 $C$5 行列都绝对引用
2 C$5 列相对、行绝对
3 $C5 列绝对、行相对
4 C5 行列都相对引用

基础用法示范

1)最基础:由行列号得到绝对地址

=ADDRESS(3,2)

返回:$B$3(默认 abs_num=1,默认 A1)

适用:你只想得到一个“标准绝对地址文本”。


2)返回相对地址或混合引用

  • 相对引用(行列都相对):
=ADDRESS(3,2,4)

返回:B3

  • 行绝对、列相对:
=ADDRESS(3,2,2)

返回:B$3

  • 列绝对、行相对:
=ADDRESS(3,2,3)

返回:$B3

适用:需要把生成的地址用于填充、拼接、或与其他公式配合时控制锁定方式。


3)生成带工作表名的地址

=ADDRESS(5,3,1,TRUE,"Sheet1")

返回:Sheet1!$C$5

适用:输出“定位信息”、生成跨表引用文本、制作动态链接/提示文本。

如果工作表名包含空格(如 销售 报表),Excel 通常会显示为带单引号:'销售 报表'!$C$5(显示效果可能因版本/输入而异)。


4)返回 R1C1 形式地址

=ADDRESS(5,3,1,FALSE)

返回:R5C3

适用:你更偏好 R1C1 表示法,或需要与采用 R1C1 思维的逻辑配合。


5)把“文本地址”变成真正引用

ADDRESS 本身返回文本,如果你要取到该单元格的值,可以这样:

=INDIRECT(ADDRESS(3,2))

含义:取 $B$3 单元格的值。

再比如:动态取“某行某列”的值(行号在 E2,列号在 F2):

=INDIRECT(ADDRESS(E2,F2))

适用:做动态报表、动态查值、按条件切换取值位置。


6)与 MATCH/XMATCH 搭配

示例思路:

  • MATCH/XMATCH 找到“行位置/列位置”
  • ADDRESS 把位置变成地址文本
  • 需要取值则再用 INDIRECT

举例(演示写法):

=ADDRESS(XMATCH(H2,A:A), XMATCH(H3,1:1))

返回:匹配到的行列交叉处的地址文本。

若要取交叉单元格的值:

=INDIRECT(ADDRESS(XMATCH(H2,A:A), XMATCH(H3,1:1)))

适用:二维定位(行标题+列标题)并生成地址或取值。


总结

  • ADDRESS 的核心作用:用行号+列号生成单元格地址文本
  • 关键参数:

    • abs_num 决定绝对/相对/混合引用(1~4)
    • a1 决定 A1 还是 R1C1(TRUE/FALSE)
    • sheet_text 可拼接工作表前缀
  • 它返回的是文本,若要把地址“变成引用并取值”,通常与 INDIRECT 搭配使用。

  • 在动态定位、跨表引用文本生成、报表自动化方面非常实用。