VBA For Each循环有几个范围

时间:2015-08-28 10:49:59

标签: excel vba excel-vba for-loop foreach

VBA初学者。

我想要运行3个动态命名范围,每个范围都有相同数量的条目。 目前,我正在逐个遍历每个人:

For Each M in worksheets(x).Range("Range1")
    For Each N in worksheets(x).Range("Range2")
        For Each O in worksheets(x).Range("Range3")
            IF ( Depends on M) Then
                (Does things to ranges N and O)
            End IF                
        Next
    Next
Next

但是每个中的值都匹配,因此大部分都是不必要的 - 这会循环多达80 ^ 3次,而实际上只需要80次,因为数据在范围之间匹配。

所以我希望单个循环遍历Range1中的所有Ms(例如),并且还以相同的速率遍历范围2和3中的行: 所以它将考虑M(1),N(1),O(1),然后继续向下到M(2),N(2),O(2)等,直到它击中一个空单元格Range1(结束 - 动态),此时它应该停止。

我希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

您将以某种方式将M中的信息链接到N和O的范围。从您的代码中可以看出它们是如何链接的,但如果行相同,则可以执行以下操作:

For Each M in worksheets(x).Range("Range1")
    IF ( Depends on M) Then
        Do something to RangeN.Rows(M.row) 
        Do something to RangeO.Rows(M.row) 
    End IF                    
Next