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

INDEX函数返回重复错误数据求助:考勤表提取特定项目出勤人员

问题分析与修正方案

原公式的核心问题

  • 行偏移错误:INDEX引用的$B13:$B和MATCH引用的$C14:$C行号差1,匹配到的位置对应到B列时会错行,返回完全不对应的姓名。
  • 无法批量提取结果:MATCH仅返回第一个匹配项的位置,无法提取所有符合construction项目的人员,下拉填充时还会因引用范围变动重复或出错。
  • 缺少日期筛选条件:原需求要按“不同日期”筛选,公式未加入日期匹配逻辑,导致结果不符合考勤统计的时间维度要求。
  • 引用范围不规范:$B13:$B这种半固定引用,下拉时起始行号会递增,导致INDEX的查找区域不断偏移,数据混乱。

修正后的公式方案

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

假设:

  • B列是人员姓名,C列是项目名称,D列是出勤日期
  • 要提取某指定日期(比如单元格$A$2)下,参加construction项目的所有人员:
=FILTER('Form Responses 1'!$B:$B, ('Form Responses 1'!$C:$C="construction")*('Form Responses 1'!$D:$D=$A$2), "无匹配数据")

这个公式会自动返回所有符合双条件的姓名,无重复(只要源数据无重复),且动态更新。

方案2:使用数组公式(旧版Excel)

如果是旧版Excel,用INDEX+SMALL+IF组合实现批量提取,输入后按Ctrl+Shift+Enter确认:

=IFERROR(INDEX('Form Responses 1'!$B:$B, SMALL(IF(('Form Responses 1'!$C:$C="construction")*('Form Responses 1'!$D:$D=$A$2), ROW('Form Responses 1'!$B:$B)), ROW(A1))), "")

下拉填充公式,直到出现空值,即可得到所有符合条件的人员。

额外注意事项

  • 确保源数据中Form Responses 1的列对应正确(比如项目列是否是C列,日期列是否是D列,根据实际调整)。
  • 若要提取所有日期中参加construction的人员并去重,可在FILTER外层套UNIQUE函数:
=UNIQUE(FILTER('Form Responses 1'!$B:$B, 'Form Responses 1'!$C:$C="construction", "无匹配数据"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:42:11