Индекс VBA Excel соответствует импорту CSV

405
Tyll25

Как я могу использовать функцию сопоставления индекса в VBA, чтобы найти значения в файле CSV, а затем импортировать эти значения в сопоставленный индекс в ячейке в Excel? Скажем, у меня есть файл CSV, который содержит следующий текст с разделителями-запятыми:

lookup1, 2

lookup2, 3

И следующие данные в Sheet2 в Excel:

B2 = lookup1

C2 = 0

B3 = lookup2

C3 = 0

Как использовать сопоставление индекса, чтобы найти значение 2 во втором столбце для «lookup1» в файле CSV, а затем изменить значение 2 в ячейке C2 в Excel?

Я попробовал приведенный ниже код, но он не работает, и я не думаю, что он ищет в листе Excel, чтобы соответствовать, где значение должно идти

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 

Спасибо!

0
что ты уже испробовал? cybernetic.nomad 5 лет назад 0
Вы можете использовать `Application.WorksheetFunction.Index` и` Application.WorksheetFunction.Match` в VBA, но я сомневаюсь, что это будет полезно в этом случае. Christofer Weber 5 лет назад 0
@ cybernetic.nomad Я внес изменения в пост, чтобы включить код, который использовал до сих пор, но это не совсем то, что мне нужно Tyll25 5 лет назад 0

1 ответ на вопрос

0
Brian

Ваш CSV-файл должен быть отформатирован с соответствующим заголовком.

В простом тексте это будет выглядеть так:

lookup1,lookup2 2,3 

Прокомментировал бы, но пока не получил достаточно высокий рейтинг.