Я пытался собрать это воедино, но пока безуспешно.
Workbook2 с именем листа «Sheet1» содержит данные, которые необходимо перенести в Workbook1, с именем листа «DATA».
Workbook 2:
Student ID Date completed Question# Score
101 12/10/2018 1 0
101 12/10/2018 2 5
101 12/10/2018 3 10
101 12/10/2018 4 0
102 12/05/2018 1 10
102 12/05/2018 2 0
Рабочая тетрадь 1:
Student ID Date Completed Question1 2 3 4
101 12/10/2018 0 5 10 0
102 12/05/2018 10 0
То, что я пытаюсь сделать, - это получить код для циклического прохождения по столбцу с вопросом № (в «Листе 1», тетрадь 2), а также, если номера учеников совпадают, и еслиномер вопроса в Рабочей тетради 2 совпадает с заголовком столбца в Листе «ДАННЫЕ» (Рабочая тетрадь 1), затем возвращает номер студента, дату завершения и, самое главное, значение оценки под соответствующим заголовком столбца.
Код I 'Я пытался использовать ниже.Любые предложения приветствуются:
Public Sub grabqdata()
Dim wbmacro As Workbook
Dim wblean As Workbook
Set wbmacro = Workbooks.Item("MacroFile.xlsm")
Set wblean = Workbooks.Item("Workbook2.xlsx")
Dim wsmacro As Worksheet
Dim wslean As Worksheet
Set wsmacro = wbmacro.Worksheets.Item("Data")
Set wslean = wblean.Worksheets.Item("Sheet1")
Dim leanrange As Range
Set leanrange = wslean.Range("A2:A150000")
Dim headerrange As Range
Set headerrange = wsmacro.Range("A1:G1")
Dim qrange As Range
Set qrange = wslean.Range("D2:D150000")
Dim macrorange As Range
Set macrorange = wsmacro.Range("A:A")
Dim lastrow As Long
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
Dim colm As Long
colm = WorksheetFunction.Match(wsmacro, Range("A1:G1"), 0)
Dim cell As Range
i = 1
For Each cell In leanrange
If leanrange.Range("A2") = macrorange.Range("a2") Then
wsmacro.Range("C2").Offset(i, 0) = wslean.Range("D2").Offset(i, 0)
i = i + 1
End If
Next cell
End Sub
В столбце C находится первый Q # (поэтому Q1 или «1»).
Спасибо!