xmatch和index及choosecols如何组合使用
浅谈出口账务和excel函数 XMATCH 找位置,INDEX 按位置取值,CHOOSECOLS 动态选列。
XMATCH 查找某个值在数组中的相对位置(第几行/第几列)
INDEX 根据行号、列号从区域中取值,也可返回整行/整列
CHOOSECOLS 从数组中按列号选取指定列,可重排、筛选列
=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。
INDEX(A2:E5, XMATCH("李四", A2:A5), 0),
1. XMATCH("李四", A2:A5) → 2。
2. INDEX(A2:E5, 2, 0) → 返回李四整行。
3. CHOOSECOLS(整行, 3, 4) → 取第 3、4 列。
INDEX(A2:E5, XMATCH("王五", A2:A5), 0),
=CHOOSECOLS(A2:E5, XMATCH("销售额", A1:E1))
需求:查找“李四”且部门为“技术”的销售额和利润。
INDEX(A2:E5, XMATCH(1, (A2:A5="李四")*(B2:B5="技术")), 0),
· (A2:A5="李四")*(B2:B5="技术") 生成 {0;1;0;0}。
· XMATCH(1, ...) 找到第 2 行。
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 包裹,例如: