【问题标题】:VBA Evaluate 'IF' with 'OR' returns wrong valuesVBA用'OR'评估'IF'返回错误值
【发布时间】:2018-08-01 13:14:33
【问题描述】:

我有这些栏目:

我正在尝试以这种方式评估它们:

dim myArray as variant

myArray = filter(application.transpose(columnSheet.evaluate("IF(OR(D=""D1"",D=""D2""),S,false)")),false,false)

看到 "DISPENSER" 整个列名等于 "D" 并且 "SELLER" 整个列名等于 "S" "columnSheet" 是这些列应该位于的 工作表对象 的名称。

过滤器应用程序是由于向“myArray”提供真实结果。

问题是,当我在函数中使用“OR” 语句时,正在评估我得到“SELLER”整列 结果。如果您尝试直接在工作表中应用相同的函数公式,它会返回正确的结果。

【问题讨论】:

    标签: arrays vba excel excel-formula evaluate


    【解决方案1】:

    我不知道 OR 有什么问题,但是您可以重新调整 IF 以获得您想要的结果:

    myArray = Filter(Application.Transpose(Evaluate("IF(D=""D1"",S,if(D=""D2"",S,false))")), False, False)
    

    【讨论】:

    • 谢谢你的回答,伙计!我相信这不是我想要的解决方案。但是我做了一个解决方法,使用循环遍历每个条件并加入所有过滤器结果。我想这是这种情况下的最佳实践,因为如果我有足够的标准来传递 255 个字符的公式,evaluate 会返回错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    相关资源
    最近更新 更多