在一个范围内查找数组的最佳Excel方法?

时间:2016-11-09 03:42:35

标签: excel countif

我有一大堆用户,其中包含各种代码。目标是将好与坏分开。所有以P,H或F开头的代码都是好的。所有以L或K开头的代码都不好。例如:

Email             | Code 01 | Code 02 | Code 03 | Code 04 | RESULT
user01@gmail.com  | PJR-VRF |         |         |         | GOOD
user01@gmail.com  |         | LNR-JNT |         | LNR-JNT | BAD
user01@gmail.com  |         | HVB-YWQ | HVB-YWQ | HVB-YWQ | GOOD
user01@gmail.com  |         | LNR-JNT |         | KVB-MMO | BAD
user02@gmail.com  |         |         |         | PHH-KLP | GOOD
user02@gmail.com  |         | HNR-OPT |         | LNR-JNT | GOOD
user02@gmail.com  |         | FLT-MWQ |         | FLT-MWQ | GOOD
user02@gmail.com  |         | KVB-MMO | KVB-MMO | KVB-MMO | BAD

换句话说,如果一个范围包含以P,H或F开头的任何单元格那么好,否则不好。我试图在结果列中使用以下公式:

=IF(COUNTIF(B2:E2,{"H*","P*","F*"}),"good","bad")

不幸的是它没有用,所以我尝试了这个:

=IF(COUNTIF(B2:E2,"H*") + COUNTIF(B2:E2,"P*") + COUNTIF(B2:E2,"F*"),"good","bad")

这似乎有效,但这是最好的方法吗?说我有20个其他条件要检查?并需要添加第三个结果?筛选这些数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用与此类似的数组公式:

=IF(SUM((--($B2:$D2<>""))*(--ISNUMBER(FIND(LEFT($B2:$D2,1),"HPF"))))>0,"GOOD","BAD")

请记得按Ctrl+Shift+Enter以正确完成数组公式。

如果您需要添加第三个结果:

=IF(SUM((--($B2:$D2<>""))*(--ISNUMBER(FIND(LEFT($B2:$D2,1),"HPF"))))>0,"GOOD",IF(SUM((--($B2:$D2<>""))*(--ISNUMBER(FIND(LEFT($B2:$D2,1),"EKD"))))>0,"OTHER","BAD"))