2015-08-28 58 views
0

VBA初學者在這裏。VBA For Each loop幾個範圍

我有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(例如),並且也以相同的比率遍歷Range 2和3中的行: 所以它會考慮M(1), N(1),O(1),然後繼續到M(2),N(2),O(2)等等,直到它到達Range1中的一個空單元格(結束 - 它的動態),在此時它應該停止。

我希望這是有道理的。

+0

使用一個循環,並檢查'​​如果M(1)= N(1)和N(1)= O(1)和M(1)= O(1)'等值或嵌套if if ... then else if ... then ... else if end if – psychicebola

+0

'If' _what_'取決於M' –

+0

@PaulOgilvie如果M(i)=「特定值」那麼:...否則如果非空,則做其他事情。 (對於問題目的無所謂) – GK95

回答

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 
+0

這看起來像它會這樣做。謝謝! – GK95