Добавление записей в динамическую таблицу из другой книги

#excel #vba

#excel #vba

Вопрос:

Август 2020

Начисления

привет, ребята, у меня есть список записей из рабочей книги за август 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. Сначала настройте ссылки на обе ваши книги. Я предполагаю, что оба открыты.
  2. Создайте сопоставление столбцов из ежемесячной книги в книгу начислений
  3. Повторите цикл над каждым сопоставлением, чтобы скопировать и вставить данные

Комментарии:

1. вы так близки, мой друг, как вы редактируете код, чтобы удалить верхнюю строку с листа за август 2020 года (чтобы заголовки данных не перемещались)? Честно говоря, такое облегчение, если я смогу сделать это правильно

2. В инструкции copy замените 1 на 2 , чтобы он начинался со строки 2. Это позволит избежать заголовков.