/ / Verwenden Sie das Ergebnis einer Schleife in einer anderen Schleife - excel, vba, excel-vba, loops

Verwenden Sie das Ergebnis einer Schleife in einer anderen Schleife - Excel, VBA, Excel-VBA, Schleifen

Ich möchte jede Nummer in Spalte A durchschleifenSpalte B. Wenn es eine Übereinstimmung gibt, wird diese Nummer durch Spalte C geschleift. Wenn es eine Übereinstimmung gibt, möchte ich, dass die Ergebnisse in den Spalten E und F zurückgegeben werden. Jede Spalte hat eine variable Anzahl von Zeilen. Es kann auch mehrere Ergebnisse geben.

In meinem Beispiel wird die Nummer 1 aus Spalte A durch Spalte B geschleift. Wenn eine Übereinstimmung gefunden wird, wird 1 jetzt durch Spalte C geschleift. Wenn eine Übereinstimmung vorliegt, dann sind die Spalten E und F = C und D.

Beispiel

Antworten:

0 für die Antwort № 1

Wenn Ihre Daten wie im folgenden Bild angeordnet sind, sieht der Code folgendermaßen aus.

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

Bildbeschreibung hier eingeben


0 für die Antwort № 2

Hier ist ein Code, der die Arbeit erledigen sollte. Wenn Tab1 / Tab2-Werte jedoch nicht eindeutig sind, wird möglicherweise mehrmals nachgeschlagen. Beispiel: Wenn in Tab 2 1 anstelle von 9 vorhanden ist, wird in Tab 4 die Zeile mit 1 zweimal angezeigt. Wenn Sie dies vermeiden möchten, müssen Sie meinen Code ändern

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