2017-08-06 95 views
1
If vOverfly(arrayIndex, 10) <= 0 And vOverfly(arrayIndex, 7) = "CCYN" And Trim(vOverfly(arrayIndex, 3)) <> "--" Then 
     resultCounter = resultCounter + 1 

我需要做些什么才能将其他数据添加到此代码行。目前,该行复制数字为< = 0且由CCYN标识的数据。我需要知道其他参数是否低于0,如“EOTN”,“EOTH”和“CCYV”。当我尝试添加这些参数时,它最终会复制所有内容而不管数字。谢谢。我无法添加此代码

回答

1
And vOverfly(arrayIndex, 7) = "CCYN" 

尝试用这种替代上面的代码部分:

And IsNumeric (Application.match(vOverfly(arrayIndex, 7), _ 
    Array("CCYN", "EOTN", "EOTH", "CCYV"), 0)) 

如果此代码位于循环中,则可以通过将值数组定义为仅匹配一次来使其更快:

Dim arValues 
arValues = Array("CCYN", "EOTN", "EOTH", "CCYV") 

... 

If vOverfly(arrayIndex, 10) <= 0 And _ 
    IsNumeric (Application.match(vOverfly(arrayIndex, 7), arValues, 0)) _ 
    And Trim(vOverfly(arrayIndex, 3)) <> "--" Then 
    resultCounter = resultCounter + 1 
+1

不错,我喜欢的则IsNumeric筛选出#N/A –

+0

@SMeaden感谢。你的回答很好,但我通常更喜欢这种方式,因为它更容易阅读和“扩展”:) –

+0

这似乎工作得很好,非常感谢你! – Gilmer

1

您需要使用您的周围或测试CCYN,EOTN,EOTH等括号

Sub Test() 
    If vOverfly(arrayIndex, 10) <= 0 And (vOverfly(arrayIndex, 7) = "CCYN" Or vOverfly(arrayIndex, 7) = "EOTN") And Trim(vOverfly(arrayIndex, 3)) <> "--" Then 
     resultCounter = resultCounter + 1 


End Sub