You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环数组时Not Like条件失效问题求助

问题分析与解决

你的问题出在逻辑运算符的优先级上——VBA里And的优先级比Or高,所以原代码的实际执行逻辑是:

If (arr(i, 2) Like "*Helideck*") Or _
   (arr(i, 5) Like "*-HD-*" And Not arr(i, 16) Like "*Fire*") Then
    arrH(i, 1) = "True"
End If

这就导致只要第2列匹配*Helideck*,不管第16列是不是包含Fire,都会触发arrH(i,1) = "True",看起来就是最后一个Not条件完全没起作用。

修正后的代码

给Or连接的两个条件加上括号,让它们先作为一个整体判断,再和Not条件用And关联:

For i = 2 To UBound(arr)
    If (arr(i, 2) Like "*Helideck*" Or _
        arr(i, 5) Like "*-HD-*") And _
        Not arr(i, 16) Like "*Fire*" Then 
        arrH(i, 1) = "True"
    End If
Next i

这样逻辑就变成:只有当(第2列匹配*Helideck* 或者 第5列匹配*-HD-*)并且 第16列不包含Fire时,才会设置arrH(i,1)为True,符合你的预期。

内容的提问来源于stack exchange,提问作者Waleed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:42:12