使用这个数组公式:
=AVERAGE(IF(B2:F2<>"",LOOKUP($B2:$F2,Sheet2!$A$2:INDEX(Sheet2!A:A,MATCH("ZZZ",Sheet2!A:A)),Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH("ZZZ",Sheet2!A:A)))))
作为数组公式,退出编辑模式时必须使用 Ctrl-shift-Enter 而不是 Enter 来确认。如果操作正确,Excel 会在公式周围加上{}。
注意事项:
- Sheet2 上的列表必须按 A 列升序排序。
- 如果查找不在列表中,它将按字母顺序返回前一个值。
为了处理上面的第二个警告,我们可以添加另一个 IF 来测试它们是否在平均之前的列表中:
=IF(SUM(COUNTIFS(Sheet2!A:A,$B2:$F2,Sheet2!A:A,"<>"))<>SUMPRODUCT(--(LEN($B2:$F2)>0)),"Host(s) not in list",AVERAGE(IF(B2:F2<>"",LOOKUP($B2:$F2,Sheet2!$A$2:INDEX(Sheet2!A:A,MATCH("ZZZ",Sheet2!A:A)),Sheet2!$B$2:INDEX(Sheet2!B:B,MATCH("ZZZ",Sheet2!A:A))))))
这仍然是一个数组公式。作为一个数组公式,退出编辑模式时必须使用 Ctrl-shift-Enter 而不是 Enter 来确认。如果操作正确,Excel 会在公式周围加上{}。
Sheet2 上的数据仍必须按 A 列升序排序。