#excel #vba
#excel #vba
Вопрос:
привет, ребята, у меня есть список записей из рабочей книги за август 2020 года (первое изображение. рабочая книга = август 2020 года, Лист1), которые я хочу добавить в свою динамическую таблицу в конце данных, представляющих всю сумму моего счета (второе изображение, рабочая книга = Расходы, Лист1. Я хотел бы настроить код так, чтобы, когда появятся сентябрьские номера, я мог добавить его в конец таблицы и т. Д.
мой код приведен ниже (пока мы можем игнорировать столбец даты M!)
Sub Pullinfo()
'Pull information from the monthly data onto the charge loader file.
'1 - Set Variables
Dim lr As Long 'research doc sheet
Dim lastrow As Long 'IC Charge sheet
lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row
lastrow = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row 'last row IC Charge
'2. Copy and paste
Workbooks("August2020").Activate
Sheets("Sheet1").Select
Range("B2:B" amp; lr).Copy
Workbooks("Charges.xls").Activate
Sheets("Sheet1").Select
Range("A14").pastespecial Paste:=xlPasteValues
Workbooks("August2020").Activate
Sheets("Sheet1").Select
Range("P2:P" amp; lr).Copy
Workbooks("Charges.xls").Activate
Sheets("Sheet1").Select
Range("J14").pastespecial Paste:=xlPasteValues
Workbooks("August2020").Activate
Sheets("Sheet1").Select
Range("R2:R" amp; lr).Copy
Workbooks("Charges.xls").Activate
Sheets("Sheet1").Select
Range("L14").pastespecial Paste:=xlPasteValuesAndNumberFormats
Workbooks("August2020").Activate
Sheets("Sheet1").Select
Range("S2:S" amp; lr).Copy
Workbooks("Charges.xls").Activate
Sheets("Sheet1").Select
Range("L14").pastespecial Paste:=xlPasteValuesAndNumberFormats
''
Пожалуйста, обратите внимание, что я знаю, что я вставляю значения в начало данных (строка 14), однако я не совсем уверен, нужно ли вставлять их в конец таблицы и настраивать код так, чтобы он выполнял это непрерывно для новых значений. Спасибо
Ответ №1:
Вот что может помочь:
Sub CopyMonthlyData()
Dim wb_mth As Workbook, wb_charges As Workbook, mapFromColumn As Variant, mapToColumn As Variant
Dim lastCell As Integer, i As Integer, nextCell As Integer
Set wb_mth = Workbooks("September 2020")
Set wb_charges = Workbooks("Charges")
mapFromColumn = Array("A", "P", "Q")
mapToColumn = Array("A", "J", "K")
For i = 0 To UBound(mapFromColumn)
With wb_mth.Worksheets(1)
lastCell = .Range(mapFromColumn(i) amp; .Rows.Count).End(xlUp).Row
.Range(mapFromColumn(i) amp; 1 amp; ":" amp; mapFromColumn(i) amp; lastCell).Copy
End With
With wb_charges.Worksheets(1)
nextCell = .Range(mapToColumn(i) amp; .Rows.Count).End(xlUp).Row 1
.Range(mapToColumn(i) amp; nextCell).PasteSpecial
End With
Next i
End Sub
Примечания
- Сначала настройте ссылки на обе ваши книги. Я предполагаю, что оба открыты.
- Создайте сопоставление столбцов из ежемесячной книги в книгу начислений
- Повторите цикл над каждым сопоставлением, чтобы скопировать и вставить данные
Комментарии:
1. вы так близки, мой друг, как вы редактируете код, чтобы удалить верхнюю строку с листа за август 2020 года (чтобы заголовки данных не перемещались)? Честно говоря, такое облегчение, если я смогу сделать это правильно
2. В инструкции copy замените 1 на 2 , чтобы он начинался со строки 2. Это позволит избежать заголовков.