скопируйте и вставьте в следующую ячейку, используя цикл с данными в разных столбцах - PullRequest
0 голосов
/ 24 апреля 2019

Привет, я довольно новичок в VBA и хочу зациклить этот код.на данный момент этот код копирует данные в Range ("B30: B") из "Ba Pricing" на лист назначения, и он будет копировать те же данные в последнюю ячейку.То, что я хотел сделать, это зациклить этот код, где он будет копировать данные в столбцах (E, H, K и N) и вставлять их в последнюю ячейку таблицы «Загрузчик».с условием, если в каждом столбце нет данных, не копировать.

Спасибо

Sub Copy_Paste_Below_Last_Cell()
'Find the last used row in both sheets and copy and paste data below existing data.

Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long

  'Set variables for copy and destination sheets
  Set wsCopy = ThisWorkbook.Worksheets("Ba pricing")
  Set wsDest = ThisWorkbook.Worksheets("Loader")

  '1. Find last used row in the copy range based on data in column A
  lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "B").End(xlUp).Row

  '2. Find first blank row in the destination range based on data in column A
  'Offset property moves down 1 row
  lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "C").End(xlUp).Offset(1).Row

  '3. Copy & Paste Data
  wsCopy.Range("B30:B" & lCopyLastRow).Copy
    wsDest.Range("C" & lDestLastRow).PasteSpecial xlPasteValues


End Sub

Это должно выглядеть примерно так ...

PriceDate
4/23/2019
4/24/2019
4/25/2019
4/26/2019
4/27/2019
4/28/2019
4/29/2019
4/30/2019
5/1/2019
5/2/2019
5/3/2019
5/4/2019
5/5/2019
5/6/2019
5/7/2019
5/8/2019
5/9/2019
5/10/2019
5/11/2019
5/12/2019
5/13/2019
5/14/2019
5/15/2019
5/16/2019
4/23/2019
4/24/2019
4/25/2019
4/26/2019
4/27/2019
4/28/2019
4/29/2019
4/30/2019
5/1/2019
5/2/2019
5/3/2019
5/4/2019
5/5/2019
5/6/2019
4/23/2019

1 Ответ

1 голос
/ 24 апреля 2019

Вот пример, как перебрать столбцы

Dim CopyColumns() As Variant
CopyColumns = Array("B", "E", "H", "K", "N")

Dim Col As Variant
For Each Col In CopyColumns

    lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "C").End(xlUp).Offset(1).Row
    lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, Col).End(xlUp).Row

    wsCopy.Range(Col & "30:" & Col & lCopyLastRow).Copy
    wsDest.Range("C" & lDestLastRow).PasteSpecial xlPasteValues

Next Col
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...