Ich habe Schwierigkeiten, die Range Cells-Methode mit Index Match in VBA zu verwenden. Die Verwendung von Standard-Bereichen funktioniert gut, aber ich habe kein Glück mit Range Cells. Ich muss etwas Grundlegendes über Index Match nicht verstehen. Ich habe die Codezeilen auskommentiert, die fehlschlagen. Ich schätze alle Hinweise, die die Community bieten kann.Range versus Range Zellen mit Index Match in VBA
Sub IndexMatchTroubleShooting()
'dim worksheets
Dim Source As Worksheet
Dim Target As Worksheet
'set worksheets
Set Source = ThisWorkbook.Sheets("Source")
Set Target = ThisWorkbook.Sheets("Target")
'dim ranges
Dim ValuesToPull As Range
Dim TargetIDs As Range
Dim SourceIDs As Range
Dim MyRange As Range
'using range <-this works
Set ValuesToPull = Source.Range("B1:B5682")
Set TargetIDs = Target.Range("A1:A21")
Set SourceIDs = Source.Range("A1:A5682")
Set MyRange = Target.Range("B1:B21")
'using range cells <-this produces this error: "Run-time Error 1004 Method 'Range' of object '_Worksheet' failed"
'Set ValuesToPull = Source.Range(Cells(1, 2), Cells(5682, 2))
'Set TargetIDs = Target.Range(Cells(1, 1), Cells(21, 1))
'Set SourceIDs = Source.Range(Cells(1, 1), Cells(5682, 1))
'Set MyRange = Target.Range(Cells(1, 2), Cells(21, 2))
'apply formula
MyRange = Application.Index(ValuesToPull, Application.Match(TargetIDs, SourceIDs, 0))
End Sub
Das OP sagte, dass die 'Range (" B1: B5682 ") Methoden funktionierten, aber ich vermutete auch, dass eine Schleife benötigt würde, um die Ergebnisse zu erhalten. Aber es scheint, dass es funktioniert tatsächlich mit einem Quellbereich statt einem Quellwert !! (So können Sie Ihren letzten Kommentar entfernen.) – YowE3K
@ YowE3K - aber was ist der Wert nachgeschlagen - es kann nicht alle 21 Werte nachschlagen? – SJR
Es scheint, als eine Array-Formel, so dass der erste Wert von der Quelle "Array" nachgeschlagen und an der ersten Position des Ergebnis "Array" zurückgegeben wird, der zweite Quellwert nachgeschlagen und an der zweiten Position zurückgegeben wird des Ergebnisses "array" usw. Und dann wird das Ergebnisarray in die 21 Zellen von 'myRange' geschrieben. – YowE3K