Я очень плохо знаком с VBA и мне нужна помощь для работы над кодом, который автоматически синтезирует данные из других рабочих книг.
Идея состоит в том, что у меня есть разные файлы для каждого месяца (например, 2019-04), и в каждом файле есть несколько рабочих книг для разных портфелей, с которыми мне нужно иметь дело.
Я хочу синтезировать данные следующим образом: каждая строка представляет портфель, а столбцы представляют данные, которые я хочу скопировать из других файлов. Каждые 7 столбцов относятся к одному конкретному месяцу.
В коде, который у меня есть, я предлагаю пользователю ввести дату портфеля в следующей форме: ГГГГ-ММ; Затем я хочу найти столбец ячейки с этой конкретной датой (эту часть я пока не смог выяснить).
Затем я использую цикл, который открывает каждую книгу, из которой я хочу скопировать информацию.
И, наконец, он будет копировать данные из каждой рабочей книги на основе строки портфеля и столбца даты.
Любая помощь будет принята с благодарностью, так как я только что узнал о VBA, поэтому я не очень хорошо знаком со всеми хитростями и советами.
Вот что у меня есть (обратите внимание, что я не ввел все 7 значений, которые хочу скопировать):
Sub StressTest()
Dim index As Integer
Dim dateColumn As Integer
Dim portfolioName As Variant
Dim portfolioDate As Variant
portfolioDate = InputBox("Please enter date under the following form : YYYY-MM", "Date at the time of Stress Test", "Type Here")
For index = 3 To 39
portfolioName = Range("A" & index & " ").Value
Workbooks.Open "G:\Risk\Risk Reports\VaR-Stress test\" & portfolioDate & "\" & portfolioName & ""
Cells(index, dateColumn).Value = Workbooks("" & portfolioName & "").Worksheets("VaR Comparison").Range("B19") / Workbooks("" & portfolioName & "").Worksheets("Holdings - Main View").Range("E11")
Cells(index, dateColumn + 1).Value = (Cells(index, dateColumn) - Cells(index, dateColumn + 6)) / Cells(index, dateColumn + 6)
Cells(index, dateColumn + 2).Value = Workbooks("" & portfolioName & "").Worksheets("Holdings - Main View").Range("E11")
Cells(index, dateColumn + 3).Value = (Cells(index, dateColumn + 2) - Cells(index, dateColumn + 9)) / Cells(index, dateColumn + 9)
Next index
End Sub