You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel多条件匹配:如何按合并组与子行匹配提取数据?

解决方案

针对你的需求,这里提供几种实用的Excel公式实现方式,适配不同版本的Excel:

方法一:INDEX+MATCH组合(兼容所有Excel版本)

假设你的数据源表名为数据源,汇总表中待匹配的组名在F2,子行名称在G2,可以使用以下公式提取对应C列的值:

=INDEX(数据源!$C:$C, MATCH(G2, OFFSET(数据源!$B:$B, (MATCH(F2, 数据源!$A:$A, 0)-1)*10, 0, 10, 1), 0) + (MATCH(F2, 数据源!$A:$A, 0)-1)*10)

公式拆解:

  • MATCH(F2, 数据源!$A:$A, 0):定位目标组名在A列的起始行号(比如R1对应第1行,R2对应第11行)
  • (MATCH(...) -1)*10:计算该组相对于表首的行偏移量(比如R2的偏移量为10)
  • OFFSET(数据源!$B:$B, 偏移量, 0, 10, 1):精准定位到目标组对应的B列10行区域
  • MATCH(G2, 上述区域, 0):在组内找到子行名称的相对位置(1-10)
  • 最后将偏移量与相对位置相加,得到目标行的绝对行号,用INDEX提取C列对应值

方法二:XLOOKUP多条件匹配(Excel 365/2021及以上版本)

这种方式更简洁,建议先给数据源表加一个辅助列(比如D列),填充每组的组名:

  1. 在数据源表的D2输入公式:=IF(A2="",A1,A2),下拉填充到D71,让每一行都显示对应的组名
  2. 汇总表中使用XLOOKUP多条件匹配:
=XLOOKUP(1, (数据源!$D:$D=F2)*(数据源!$B:$B=G2), 数据源!$C:$C)

公式说明:

  • (数据源!$D:$D=F2)*(数据源!$B:$B=G2):同时满足组名和子行名称两个条件(逻辑与)
  • XLOOKUP会找到第一个符合双条件的行,返回对应C列的值

方法三:VLOOKUP结合辅助列(兼容多数Excel版本)

同样先添加辅助列D填充组名,再新增辅助列E(=D2&B2),将组名和子行名称合并为唯一标识:

  1. 数据源表E2输入:=D2&B2,下拉填充到E71
  2. 汇总表使用VLOOKUP:
=VLOOKUP(F2&G2, 数据源!$E$2:$C$71, 3, FALSE)

公式说明:

  • F2&G2:生成和数据源E列一致的唯一匹配标识
  • VLOOKUP在E列找到匹配项后,返回对应区域的第3列(即C列)的值

注意事项:

  • 公式中的绝对引用符号$要保留,方便下拉填充汇总表的其他行
  • 如果你的子行名称在不同组中完全重复(比如R1和R2组都有R11),必须结合组名匹配,否则会返回第一个匹配到的值
  • 辅助列可以隐藏,不影响公式运行

内容的提问来源于stack exchange,提问作者SemiCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:57:43