Der Excel VBA-Index stimmt mit einem CSV-Import überein

626
Tyll25

Wie kann ich eine Indexübereinstimmungsfunktion in VBA verwenden, um Werte in einer CSV-Datei zu suchen und diese Werte in den übereinstimmenden Index in einer Zelle in Excel zu importieren? Angenommen, ich habe eine CSV-Datei, die den folgenden durch Komma getrennten Text enthält:

Lookup1, 2

Lookup2, 3

Und die folgenden Daten in Sheet2 in Excel:

B2 = Nachschlagen1

C2 = 0

B3 = Lookup2

C3 = 0

Wie verwende ich eine Indexübereinstimmung, um den Wert 2 in der zweiten Spalte für "Lookup1" in der CSV-Datei zu finden und dann den Wert in Zelle C2 in Excel in 2 zu ändern?

Ich habe den folgenden Code ausprobiert, aber er funktioniert nicht und ich glaube nicht, dass er in der Excel-Tabelle nach dem Wert sucht, zu dem der Wert passen muss

Sub Tester()  Dim arr1  arr1 = CsvToArray(Application.GetOpenFilename)  Debug.Print TestLookup(arr1, "lookup1", 1, 2)  End Sub  Function TestLookup(arr, val, lookincol As Integer, returnfromcol As Integer) Dim r r = Application.Match(val, Application.Index(arr, 0, lookincol), 0) If Not IsError(r) Then TestLookup = arr(r, returnfromcol) Else TestLookup = "Not found" 'or some other "error" value End If End Function  Function CsvToArray(filepath As String) As Variant Dim wb As Workbook Application.ScreenUpdating = False Set wb = Application.ActiveWorkbook CsvToArray = wb.Sheets("Sheet2").Range("C2").CurrentRegion.Value End Function 

Vielen Dank!

0
Was hast du bisher versucht? cybernetic.nomad vor 5 Jahren 0
Sie können `Application.WorksheetFunction.Index` und` Application.WorksheetFunction.Match` in VBA verwenden, aber ich bezweifle, dass es in diesem Fall nützlich ist. Christofer Weber vor 5 Jahren 0
@ cybernetic.nomad Ich habe den Post geändert und den Code eingefügt, den ich bisher verwendet habe, aber es ist nicht ganz das, was ich brauche Tyll25 vor 5 Jahren 0

1 Antwort auf die Frage

0
Brian

Ihre CSV-Datei muss mit einem richtigen Header formatiert werden.

Im Klartext würde es so aussehen:

lookup1,lookup2 2,3 

Würde kommentieren, aber noch nicht hoch genug eingestuft werden.