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

Excel多匹配行筛选及子行匹配工时填充公式求助

解决MATCH仅返回首个匹配行的问题

针对你在Excel中匹配周数后无法获取所有匹配行子集的需求,这里提供两种实用方案:


方案1:使用FILTER函数(Excel 365/2021及以上)

FILTER可以直接返回所有符合条件的行/列子集,完美替代只能取首个匹配的MATCH。

假设数据结构:

  • 2023-raw:A列为周数(vecka),B~Z列为不同日期的工时数据,第一行是日期列名
  • 2023:A2为当前行的目标周数,B1为当前列的目标日期列名

需求1:求和所有匹配周+匹配日期的工时

公式:

=SUM(FILTER(2023-raw!B:Z, (2023-raw!A:A=A2)*(2023-raw!B1:Z1=B1), 0))

逻辑:

  1. (2023-raw!A:A=A2) 筛选出周数匹配的所有行
  2. (2023-raw!B1:Z1=B1) 筛选出日期列名匹配的列
  3. 两个条件同时满足时,FILTER返回对应单元格,SUM计算总工时

需求2:提取首个匹配周+匹配日期的工时

公式:

=INDEX(FILTER(2023-raw!B:Z, 2023-raw!A:A=A2, 0), , MATCH(B1, 2023-raw!B1:Z1, 0))

逻辑:先筛选出目标周的所有行,再用MATCH定位目标日期列,最后用INDEX提取对应值


方案2:数组公式兼容旧版Excel(无FILTER功能)

如果你的Excel版本不支持FILTER,用INDEX+SMALL+IF组合遍历所有匹配行:

公式(输入后按Ctrl+Shift+Enter触发数组运算):

=SUM(INDEX(2023-raw!B:Z, SMALL(IF(2023-raw!A:A=A2, ROW(2023-raw!A:A)-ROW(2023-raw!A2)+1), ROW(INDIRECT("1:"&COUNTIF(2023-raw!A:A, A2)))), MATCH(B1, 2023-raw!B1:Z1, 0)))

逻辑:

  1. IF(2023-raw!A:A=A2, ROW(...)) 生成所有周数匹配的行号列表
  2. SMALL(...) 按顺序逐个提取匹配行的行号
  3. INDEX 根据行号和列匹配结果提取工时,SUM求和

简化方案(唯一匹配场景)

如果2023-raw中每个「周数+日期」组合唯一,用XLOOKUP一步到位:

=XLOOKUP(1, (2023-raw!A:A=A2)*(2023-raw!B1:Z1=B1), 2023-raw!B:Z, 0)

内容的提问来源于stack exchange,提问作者Jesper.Lindberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:52:52