非常感谢,您的回答太有用了,但是12日的排班更新了,但是没有34日的数据为什么往后拽排班会显示出来呢?
追答因为没有3、4日的数据,所以后面就报错呀。如果不想看到报错的信息,可以使用下面的公式:
=IFERROR(INDEX($E$1:$E$4,SUMPRODUCT(($A$1:$A$4=I$1)*($B$1:$D$4=$H2)*(ROW($E$1:$E$4))),1),"")
不是不想看见报错信息,而是34日本来没有数据,但是在更新的时候显示出了数据。就是小A3日没有排班,但是显示出了晚班。=INDEX([排班模板.xls]排班!$AI:$AI,SUMPRODUCT(([排班模板.xls]排班!$B:$B=A$6)*([排班模板.xls]排班!$C:$AH=B$3)*(ROW([排班模板.xls]排班!$AI:$AI))),1)这是我后来实际应用的公式,出现的问题是不论数据怎么变化,所有的值都是大班。求教是哪里出了问题
这是实际操作的结果,上面自动生成公式的数据,下面是实际的数据。就是公式的数据一部分正确一部分错误
追答截图吧,你后来实际用的。带有Excel行列号的。
追问我发现了,是查询值不存在的时候会出现这个错误,您看有办法解决这个问题吗?
追答看不清楚你的截图,要有Excel行列号、数据和你写的公式的。
追问是这样的,当查询的数据不存在时sumprouduct的值是0,也就是公式变成了因为没有3、4日的数据,所以后面就报错呀。如果不想看到报错的信息,可以使用下面的公式:
=INDEX($E$1:$E$4,0,1)这样也会返回e列的第一个,也就是当查找数据中没有符合条件的行时它会反馈一个错误数据。您看有什么办法让它当sumproduct为0时,不输出数值
不好意思,上段话中间发错了,这个是我的疑,当查询的数据不存在时sumprouduct的值是0,也就是
=INDEX($E$1:$E$4,0,1)这样也会返回e列的第一个,也就是当查找数据中没有符合条件的行时它会反馈一个错误数据。您看有什么办法让它当sumproduct为0时,不输出数值
那就先用IF判断嘛,例如
=IF(OR(SUMPRODUCT(...)=0,ISERROR(SUMPRODUCT(...))),"",INDEX($E$1:$E$4,SUMPRODUCT(($A$1:$A$4=I$1)*($B$1:$D$4=$H2)*(ROW($E$1:$E$4))),1))
意思是当SUMPRODUCT的结果是0或者返回错误的时候,就 "" (空),否则就用INDEX去取值。
谢谢,非常感谢
本回答被提问者采纳