Excel VBA:如何在Evaluate Match中使用OR逻辑实现多条件匹配
解决方法
很简单,只要把G列的条件改成**“Yellow或Green”**的逻辑就行,咱们直接修改Evaluate里的MATCH公式部分就好:
Set ws1 = Sheets("Database") Set ws2 = Sheets("Insert") Set ws3 = Sheets("Sheet1") car_val = "Car" ' 给变量起个更有意义的名字,比1_cell好读多了 fiat_val = "Fiat" yellow_val = "Yellow" green_val = "Green" ' 核心修改在这里:G列的条件用加号连接两个判断,实现"或"的逻辑 row_num2 = Evaluate("MATCH(1,('" & ws1.Name & "'!A:A=""" & car_val & """')*('" & ws1.Name & "'!B:B=""" & fiat_val & """')*(('" & ws1.Name & "'!G:G=""" & yellow_val & """)+('" & ws1.Name & "'!G:G=""" & green_val & """)),0)")
为啥这么改?
在Excel的数组运算逻辑里:
*(乘号)代表同时满足(逻辑与),就像你原来代码里把A、B、G列的条件用乘号连起来,要求三个条件都得符合;+(加号)代表满足任意一个就行(逻辑或),所以把G列的两个判断G:G="Yellow"和G:G="Green"用加号连起来,就实现了“G列是Yellow或者Green”的需求。
整个公式的逻辑就变成了:A列是Car 且 B列是Fiat 且 G列是Yellow/Green,找到第一个符合所有条件的行号。
小建议
顺便给变量改了个有意义的名字(比如把1_cell改成car_val),这样以后维护代码的时候一眼就能看懂每个变量存的是什么,比数字命名清晰多啦~
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

