我对这部分代码遇到了一些麻烦,我确信有一种非常简单的方法可以在一行中总结这个动作
If Workbooks("A.xlsm").Sheets("1").Cells(i, 14).Value > 100000 _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(2, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(3, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(4, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(5, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(6, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(7, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(8, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(9, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(10, 5) _
Then ...
唯一变化的变量是每行末尾的行号 在此先感谢您的帮助,我确信有一种简单的方法可以实现自动化
答案 0 :(得分:2)
首先,我会使用with块来停止重复输入。然后使用Match()查看该值是否存在于该范围内:
With Workbooks("A.xlsm")
If .Sheets("1").Cells(i, 14).Value > 100000 _
And IsError(Application.Match(.Sheets("1").Cells(i, 6), .Sheets("B").Range(.Sheets("B").Cells(2, 5), .Sheets("B").Cells(10, 5)), 0)) Then
'the rest of your code
End With
答案 1 :(得分:0)
您的代码示例中可能有错误。 如果你没有,那么你正在创建一堆And语句来查看多行,5个单元格寻找匹配。
在这种情况下,每个多行,5个单元格必须相等,并匹配您正在比较的单个(i,6)值。
如果这段代码是正确的,那么你只需要进行一次检查,就像它通过或失败一样,所有其他的都是&#34;和&#34;线。