大数跨境

xmatch和index及choosecols如何组合使用

xmatch和index及choosecols如何组合使用 浅谈出口账务和excel函数
2026-09-24
5
XMATCH 找位置,INDEX 按位置取值,CHOOSECOLS 动态选列。

一、三个函数各自作用

函数 作用
XMATCH 查找某个值在数组中的相对位置(第几行/第几列)
INDEX 根据行号、列号从区域中取值,也可返回整行/整列
CHOOSECOLS 从数组中按列号选取指定列,可重排、筛选列

二、示例数据

A1:E5:

姓名 部门 销售额 利润 地区
张三 销售 1000 200 北京
李四 技术 2000 500 上海
王五 销售 1500 300 广州
赵六 技术 1800 400 深圳

三、组合用法 1:查找单值

需求:查“李四”的“销售额”。

```excel
=INDEX(CHOOSECOLS(A2:E5, XMATCH("销售额", A1:E1)), XMATCH("李四", A2:A5))
```

解释:

1. XMATCH("销售额", A1:E1) → 返回 3,因为销售额在第 3 列。
2. CHOOSECOLS(A2:E5, 3) → 返回销售额整列 C2:C5。
3. XMATCH("李四", A2:A5) → 返回 2,因为李四在第 2 行数据。
4. INDEX(销售额列, 2) → 返回 2000。

结果:2000

四、组合用法 2:查找多列并重排

需求:查“李四”的“销售额”和“利润”。

```excel
=CHOOSECOLS(
  INDEX(A2:E5, XMATCH("李四", A2:A5), 0),
  XMATCH("销售额", A1:E1),
  XMATCH("利润", A1:E1)
)
```

解释:

1. XMATCH("李四", A2:A5) → 2。
2. INDEX(A2:E5, 2, 0) → 返回李四整行。
3. CHOOSECOLS(整行, 3, 4) → 取第 3、4 列。

结果:2000 | 500

如果想调整顺序,比如返回“利润、姓名、部门”:

```excel
=CHOOSECOLS(
  INDEX(A2:E5, XMATCH("王五", A2:A5), 0),
  XMATCH("利润", A1:E1),
  XMATCH("姓名", A1:E1),
  XMATCH("部门", A1:E1)
)
```

结果:300 | 王五 | 销售

五、组合用法 3:动态返回整列

需求:根据列名返回整列数据。

```excel
=CHOOSECOLS(A2:E5, XMATCH("销售额", A1:E1))
```

结果:返回 C2:C5 所有销售额。

六、组合用法 4:多条件查找

需求:查找“李四”且部门为“技术”的销售额和利润。

```excel
=CHOOSECOLS(
  INDEX(A2:E5, XMATCH(1, (A2:A5="李四")*(B2:B5="技术")), 0),
  XMATCH("销售额", A1:E1),
  XMATCH("利润", A1:E1)
)
```

解释:

· (A2:A5="李四")*(B2:B5="技术") 生成 {0;1;0;0}。
· XMATCH(1, ...) 找到第 2 行。
· 再取该行的销售额和利润。

结果:2000 | 500

七、组合用法 5:从下往上找最后一个匹配

需求:找最后一个“张三”的销售额。

```excel
=INDEX(
  CHOOSECOLS(A2:E5, XMATCH("销售额", A1:E1)),
  XMATCH("张三", A2:A5, 0, -1)
)
```

其中 XMATCH 第 4 参数 -1 表示从后往前搜索。

八、常用模板总结

· 单值查找
    =INDEX(CHOOSECOLS(数据区, XMATCH(列名, 表头)), XMATCH(查找值, 查找列))
· 多列返回
    =CHOOSECOLS(INDEX(数据区, XMATCH(查找值, 查找列), 0), XMATCH(列名1, 表头), XMATCH(列名2, 表头))
· 整列返回
    =CHOOSECOLS(数据区, XMATCH(列名, 表头))

九、注意事项

1. 需要 Excel 365 / 2024 或支持动态数组和 CHOOSECOLS 的版本。
2. XMATCH 返回的是相对位置,不是单元格地址。查找列和数据区的起始行要一致。
3. CHOOSECOLS 的列号是相对于传入数组的,不是工作表绝对列号。
4. 多条件查找时,XMATCH 第一个参数用 1,第二参数用条件相乘。
5. 找不到会返回 #N/A,可用 IFERROR 包裹,例如:
      =IFERROR(公式, "未找到")

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