大数跨境

ADDRESS 和 INDIRECT 组合的核心思路是:ADDRESS 负责“算出地址文本”,INDIRECT 负责“把文本变成真正的引用”

ADDRESS 和 INDIRECT 组合的核心思路是:ADDRESS 负责“算出地址文本”,INDIRECT 负责“把文本变成真正的引用” 浅谈出口账务和excel函数
2026-10-03
8
ADDRESS 和 INDIRECT 组合的核心思路是:ADDRESS 负责“算出地址文本”,INDIRECT 负责“把文本变成真正的引用”。

基本公式结构

=INDIRECT(ADDRESS(行号, 列号, ...))

举例说明

1. 最基础的组合
=INDIRECT(ADDRESS(2,3))

· ADDRESS(2,3) → $C$2
· INDIRECT("$C$2") → 取 C2 的值
· 结果:C2 单元格的内容

2. 动态行号:根据数字取对应行
假设 A1 填了数字 5,要取 第5行、第2列(B列) 的值:
=INDIRECT(ADDRESS(A1,2))

· 若 A1=5,ADDRESS(5,2) → $B$5
· INDIRECT → 取 B5 的值
· 改 A1 的数字,结果自动跳行

3. 动态列号:配合 MATCH 找列
假设第1行是表头(A1=姓名, B1=语文, C1=数学),要取“数学”列第3行的值:
=INDIRECT(ADDRESS(3,MATCH("数学",1:1,0)))

· MATCH 找到“数学”在第3列
· ADDRESS(3,3) → $C$3
· INDIRECT → 取 C3 的值

4. 行列都动态:双向查找
根据 A10 的行号、B10 的列号取交叉值:
=INDIRECT(ADDRESS(A10,B10))

· 若 A10=4,B10=2 → 取 B4 的值

5. 跨工作表引用
要取 Sheet2 中第2行第3列的值:
=INDIRECT(ADDRESS(2,3,1,TRUE,"Sheet2"))

· ADDRESS 返回 Sheet2!$C$2
· INDIRECT → 取 Sheet2 的 C2 值

工作表名也可动态,比如 A1 填“Sheet2”:
=INDIRECT(ADDRESS(2,3,1,TRUE,A1))

6. 配合 SUM 求和区域
对 C2:C10 求和,但行号由 A1、A2 决定(比如 A1=2,A2=10):
=SUM(INDIRECT(ADDRESS(A1,3)&":"&ADDRESS(A2,3)))

· ADDRESS(A1,3) → $C$2
· ADDRESS(A2,3) → $C$10
· 拼成 $C$2:$C$10
· INDIRECT 转成区域后 SUM 求和

关键注意点

· INDIRECT 里的文本必须是合法地址,否则返回 #REF!。
· ADDRESS 默认返回绝对引用(带 $),通常不影响 INDIRECT 取值;若要拼接成区域,一般用默认绝对引用更稳。
· 工作表名含空格或特殊字符时,ADDRESS 会自动加单引号,如 'My Sheet'!$C$2,INDIRECT 能识别。
· INDIRECT 是易失性函数,大量使用会拖慢表格计算;能直接用 INDEX/OFFSET 时优先考虑它们。
· 若引用的工作表已关闭,INDIRECT 无法取值,会报错。

更推荐的替代方案

多数“动态引用”场景,用 INDEX 更高效且不易出错:

· 上面例3可写成 =INDEX(C:C,3) 或 =INDEX(3:3,MATCH("数学",1:1,0))
· 双向查找可写成 =INDEX(B:D,4,2)

ADDRESS+INDIRECT 更适合地址本身需要以文本形式拼接、展示或传递的场景。

【声明】内容源于网络
0
0
浅谈出口账务和excel函数
1234
内容 1574
粉丝 0
浅谈出口账务和excel函数 1234
总阅读29.7k
粉丝0
内容1.6k