Servus zusammen,
ich benötige als VBA Anwender Hilfe bei folgenden Problem:
Ich habe einen Code, welcher zwei Werte einer Spalte aneinander fügt bzw. verkettet, mit zwei aneinandergefügten/verketteten Werte vergleicht und einen Wert aus der gefundenen Spalte entnimmt. Praktisch ein Sverweis/Verweis mit zwei Kriterien.
Die folgende Schleife ist leider ziemlich langsam, weshalb ich diese nicht verwenden will:
Sub MovingAverage2()
Dim iRow As Integer
Dim iTLRow As Integer
iRow = 2
Do While Not IsEmpty(Worksheets("Tabelle2").Cells(iRow, 2))
iTLRow = 2
Do Until (Worksheets("Tabelle2").Cells(iRow, 2) & Worksheets("Tabelle2").Cells(iRow, 3) = Worksheets(4).Cells(iTLRow, 1) & Worksheets(4).Cells(iTLRow, 2))
iTLRow = iTLRow + 1
Loop
Worksheets("Tabelle2").Cells(iRow, 8) = Worksheets(4).Cells(iTLRow, 3)
iRow = iRow + 1
Loop
End Sub
Als praktikable Alternative sehe ich den einfach VlookUp, welche in VBA jedoch nicht mit zwei Kriterien funktioniert. Bsp:
Worksheets("Tabelle2").Range("J3:J2361") = WorksheetFunction.VLookup(Range("I3:I2361").Value, Tabelle4.Range("C2:D2361"), 2, False)
Den Suchbereich aus Tabelle 4 kann ich simpel verketten, das ist bei dem Ausgangsbereich in Tabelle 2 leider nicht der Fall. Da ich mich mit Arrays und Bereichen leider nicht so gut auskenne, zur Frage:
Kann ich einen Bereich definieren, welcher zwei Spalten zusammenfasst, indem der Wert der Spalte 1 mit dem Wert der Spalte 2 verbunden bzw. verkettet wird (Bsp. Wert Spalte 1= A1, Wert Spalte 2: C, neuer Bereich: A1C)? Diesen Bereich würde ich dann für die Suche in der VlookUp Fkt. verwenden. Hat hier jemand zufällig ein Beispiel, wie man das angehen kann, im Inet finde ich leider nix passendes?
|