Мои навыки VBA в лучшем случае новички, и я не знаю, как подойти к этому эффективно.
Цель : для сопоставления идентификатора случая # * И имени клиента (один идентификатор случая может иметь несколько клиентов) и, если они оба совпадают, затем потянитеQ-ответ из столбца «Ответ», основанный на вопросе № (столбец «Вопрос»)
У меня есть 2 исходных файла и один целевой файл.Мне удалось извлечь все необходимые данные из исходного файла 1 (SF1) в файл назначения (DF).
Мне нужно вытащить данные из SF2 в DF.
Данные SF2имеет следующую структуру:
Case ID Client Name Question # Response
10095 ABS 0.1 50
10095 ABS 0.2 100
10095 ABS 0.3 0
10095 ZZZ 0.1 0
10095 ZZZ 0.2 40
10095 ZZZ 0.3 99
29999 OVFLW 0.1 100
DF структурирован / будет выглядеть следующим образом:
CASE ID Client Name 0.1 0.2 0.3
10095 ABS 50 100 0
10095 ZZZ 0 40 99
29999 OVFLW 100
Код, который я могу получить, может получить все вышеперечисленное, но не может учестьдля дополнительной переменной, являющейся именем клиента, для сопоставления с в дополнение к идентификатору CASE.Любые идеи / предложения будут приветствоваться.
Спасибо заранее.Код ниже:
Вариант Явный
Public Sub GrabKpiData3()
Dim sht As Worksheet, sht2 As Worksheet
Dim i As Long, k As Long
Dim lastrow As Long, lastcol, foundrow As Long, foundcol As Long
Dim macrobook As Workbook
Dim macrosheet As Worksheet
Set macrobook = ThisWorkbook
Set macrosheet = macrobook.Worksheets("Macro")
'source
Set sht = Workbooks("SourceFile2.csv").Worksheets("SF2")
'destination
Set sht2 = Workbooks("MacroFile.xlsm").Worksheets("Data")
lastrow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
k = 2
For i = 2 To lastrow
If sht2.Cells(k, 1).Value = sht.Cells(i, 1).Value Then
'the below 2 rows grab different date values present within SF2. This would change based on match criteria requiring Case ID + Client name
sht2.Cells(k, 16).Value = sht.Cells(i, 2).Value
sht2.Cells(k, 17).Value = sht.Cells(i, 3).Value
lastcol = sht2.Cells(1, sht2.Columns.Count).End(xlToLeft).Column
'captures responses for 0.1
sht2.Cells(k, 18).Value = sht.Cells(i, 6).Value
i = i + 1
'captures responses for 0.2
sht2.Cells(k, 19).Value = sht.Cells(i, 6).Value
i = i + 1
'captures responses for 0.3
sht2.Cells(k, 20).Value = sht.Cells(i, 6).Value
i = i + 1
sht2.Cells(k, 21).Value = sht.Cells(i, 6).Value
i = i + 1
sht2.Cells(k, 22).Value = sht.Cells(i, 6).Value
k = k + 1
Else
On Error Resume Next
End If
Next i
End Sub