我想遍歷列A到列B中的每個數字。 如果存在匹配,則通過列C循環該數字。 如果存在匹配,我想要結果將在E和F列中返回。 每列的行數都是可變的。也可以有多個結果。在另一個循環中使用循環的結果
在我的例子從列A中的號碼1通過柱B.環狀如果發現匹配1現在通過柱C.環狀如果存在匹配,則列E和F = C和D.
我想遍歷列A到列B中的每個數字。 如果存在匹配,則通過列C循環該數字。 如果存在匹配,我想要結果將在E和F列中返回。 每列的行數都是可變的。也可以有多個結果。在另一個循環中使用循環的結果
在我的例子從列A中的號碼1通過柱B.環狀如果發現匹配1現在通過柱C.環狀如果存在匹配,則列E和F = C和D.
如果你的數據像下圖一樣排列,那麼代碼就是這樣。
Sub test()
Dim vDB1, vDB2, vDB3, vR()
Dim i As Long, j As Long, k As Long, n As Long
vDB1 = Range("a2", Range("a" & Rows.Count).End(xlUp))
vDB2 = Range("b2", Range("b" & Rows.Count).End(xlUp))
vDB3 = Range("c2", Range("d" & Rows.Count).End(xlUp))
Range("e2:f2").Resize(Rows.Count - 1) = Empty
For i = 1 To UBound(vDB1, 1)
For j = 1 To UBound(vDB2, 1)
If vDB1(i, 1) = vDB2(j, 1) Then
For k = 1 To UBound(vDB3, 1)
If vDB1(i, 1) = vDB3(k, 1) Then
n = n + 1
ReDim Preserve vR(1 To 2, 1 To n)
vR(1, n) = vDB3(k, 1)
vR(2, n) = vDB3(k, 2)
End If
Next
End If
Next j
Next i
If n > 0 Then
Range("e2").Resize(n, 2) = WorksheetFunction.Transpose(vR)
End If
End Sub
這是應該做的工作守則。但是,如果Tab1/Tab2值不唯一,那麼它可能會多次執行查找。例如,如果有適當的9標籤2爲1,將顯示該行1兩次在標籤4.如果你想避免,你將需要修改我的代碼
Set tab1_list = Sheets("sheet1").Range("B6:B10")
Set tab2_list = Sheets("sheet1").Range("C6:C10")
Set tab3_list_lookup = Sheets("sheet1").Range("E6:E10")
Set Tab3_List_value = Sheets("sheet1").Range("F6:F10")
Set output_location = Sheets("sheet1").Range("H6")
For Each cell1 In tab1_list
For Each cell2 In tab2_list
If cell1.Value = cell2.Value Then
For index_no = 1 To tab3_list_lookup.Cells.Count
If tab3_list_lookup.Cells(index_no).Value = cell2.Value Then
output_location.Value = tab3_list_lookup.Cells(index_no).Value
output_location.Offset(0, 1) = Tab3_List_value.Cells(index_no).Value
Set output_location = output_location.Offset(1, 0)
End If
Next index_no
End If
Next cell2
Next cell1
嘿Raunak,謝謝你的回答和解釋。這也很好。 – ks9
請始終顯示你的代碼! – Enigmativity
你真的應該讀[問]。你的問題很混亂。 「我想匹配第1列A列到第2列A列的數字」意思?當你說「所有列的長度都不相同」時,這是否意味着列中的數據長度不同,還是表示列數變化,還是表示列中的行數有所不同?等等等等 – Enigmativity
你的**代碼**在哪裏?你知道,你聲稱你寫的東西不符合你的期望?在沒有看到你寫的代碼的情況下(關於什麼是你不期望的事情的恰當敘述),你的問題就會變成另一個諷刺,懶惰,愚蠢,寄生和(最後)懇求讓別人做你的工作的懇求爲你。也許你可以花幾分鐘時間來糾正這一點。 – Jeeped