1
我想寫一個宏來比較Excel中的兩個範圍,Rng1和Rng2。 Rng1(「f2:f15」)包含正在使用的目標號碼。 Rng2(「a2:a91」)包含所有可能目標的編號。 Rng2右邊的三列(「b2:b91」),(「c2:c91」)和(「d2:d91」)包含與每個目標編號關聯的x,y和z座標值。我想讓這個宏做的是將Rng1右邊的3列(「g2:g15」),(「h2:h15」)和(「i2:i15」)填入座標值爲目標號碼在Rng1中找到。我寫的以下代碼是重新調整「運行時錯誤」13,類型不匹配「。在VBA中比較範圍和填充值宏
Sub macro()
Dim Rng1 As Range, Rng2 As Range, Cell1 As Range, Cell2 As Range
Set Rng1 = Range("f2:f15")
Set Rng2 = Range("a2:a91")
For i = 1 To Rng1
For j = 1 To Rng2
For Each Cell1 In Rng1(i)
For Each Cell2 In Rng1(j)
If Cell1.Value = Cell2.Value Then
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
'cell1.Offset(0, 1) = cell2.Offset(0, 1)
Cells(2 + i, 7) = Cells(2 + j, 2)
Cells(2 + i, 8) = Cells(2 + j, 3)
Cells(2 + i, 9) = Cells(2 + j, 4)
End If
Next Cell2
Next Cell1
Next j
Next i
End Sub
謝謝!
寫出,在什麼樣的話,你想用'對於I = 1到Rng1'語句來完成什麼。你會期望在'Rng1(1)'中有多少個Cell? –
我正在嘗試使用I = 1到Rng1作爲計數器來跟蹤Rng1中的值,因爲我試圖使用j作爲計數器來跟蹤Rng2中的值。我不是一個非常有經驗的編碼員,可能會做得很不正確。謝謝! – Chris
但是Rng1是一個多單元範圍對象。所以一個從1到?的循環沒有意義。這就是爲什麼你得到類型不匹配錯誤。查看「For ... Next」循環的VBA幫助。然後,之後,你有'對於Rng1(i)'中的每個單元。如果I = 1,那麼Rng1(I)將是該範圍內的第一個單元格。再次,Rng1(I)中的每個單元格將只有一個單元格。你可能完全消除'I'和'j'循環,並且仍然循環遍歷範圍中的每個單元格。 –