Excel创建异常报告求助:筛选未达成目标人员
解决Excel未达成目标人员的异常报告问题
原公式的问题
- 公式逻辑错位:第一个
VLOOKUP是用目标表姓名查实际业绩,这部分没问题,但第二个VLOOKUP用实际表姓名查目标业绩,会导致姓名匹配错位(比如Katie的实际业绩可能和其他人的目标业绩做了错误对比),从而返回错误结果。 - 未正确处理数组结果:旧版Excel中这类数组公式需要按
Ctrl+Shift+Enter确认,否则无法正常返回数组,还会出现大量空白行。
正确解决方案
方案1:Excel 365/2021(推荐,自动跳过空白行)
用FILTER函数直接筛选出未达成目标的人员,无需处理空白行:
=FILTER(Goal!A2:A6, VLOOKUP(Goal!A2:A6, Sales!A2:B6, 2, FALSE) < Goal!B2:B6)
如果习惯用XLOOKUP(比VLOOKUP更灵活),可以用:
=FILTER(Goal!A2:A6, XLOOKUP(Goal!A2:A6, Sales!A2:A6, Sales!B2:B6) < Goal!B2:B6)
- 核心逻辑:遍历目标表的每一位人员,匹配其实际业绩后和目标业绩对比,自动筛选出实际业绩低于目标的人员,直接返回无空白的结果列表。
方案2:旧版Excel(无动态数组功能)
使用INDEX+SMALL+IF组合数组公式,按以下步骤操作:
- 在结果区域的第一个单元格(比如C2)输入公式:
=IFERROR(INDEX(Goal!$A$2:$A$6, SMALL(IF(VLOOKUP(Goal!$A$2:$A$6, Sales!$A$2:$B$6, 2, FALSE) < Goal!$B$2:$B$6, ROW(Goal!$A$2:$A$6)-ROW(Goal!$A$2)+1), ROW(A1))), "")
- 按
Ctrl+Shift+Enter确认数组公式(公式会自动带上大括号{},不要手动输入)。 - 下拉填充公式,直到出现空白单元格,此时显示的就是所有未达成目标的人员,无多余空白行。
- 核心逻辑:用
IF标记所有未达成目标的行号,SMALL按顺序提取有效行号,INDEX取出对应姓名,IFERROR避免超出范围时返回错误值。
内容的提问来源于stack exchange,提问作者pixiesweet44
相关产品推荐
相关产品推荐

