Скопируйте диапазон ячеек в столбце до пустой ячейки и вставьте в новую книгу - PullRequest
1 голос
/ 11 июля 2019

Я работаю со столбцом данных, в котором диапазон (например, сколько строк данных будет) будет в конечном итоге изменяться для каждого нового листа, который создает пользователь.

На одном листе диапазон в B может быть от B3: B7, на другом может быть от B3: B22, например.

Мне нужен макрос, который копирует данные из диапазона B3: Bn, где n является последней строкой перед пустой ячейкой в ​​следующей строке. Например, Копировать B4: B7, а в B8 есть пустая ячейка. Я хочу вставить этот диапазон в другую книгу в столбце С.

Я только новичок в VBA и не слишком далеко продвинулся в коде. Я пробовал несколько итераций цикла, но он не работает.

Это слабый код, который у меня есть. Любая помощь приветствуется.

Sub main()
    Dim r As Range

    Set r = Range("B3")
    Do While r.Value <> ""
        Range("C").Value = r.Value
        Set r = r.Offset(1)
    Loop
End Sub

Ответы [ 2 ]

4 голосов
/ 11 июля 2019

Смотрите, это простой код, с которого можно начать. Измените имена соответственно

Sub main()

Dim wba As Workbook
Dim wbb As Workbook

Set wba = Workbooks("Workbook A")
Set wbb = Workbooks("Workbook B")

with wba.Worksheets("Worksheet in A")
      .Range("B3", .Range("B3").End(xlDown)).Copy
End With

wbb.Worksheets("Worksheet in B").Range("C3").PasteSpecial xlPasteValues

End Sub

A - это рабочая тетрадь с данными, B, в которую нужно копировать.

Измените имена листов в обеих книгах, и Range("B3", Range("B1").End(xlDown)) выберет диапазон до пустой ячейки.

1 голос
/ 11 июля 2019

Я просто хочу добавить одну вещь в код Микку. Вместо xlDown, в этом случае xlUp может быть лучше. Потому что может быть одна ячейка пуста, а следующая нет. При поиске последней строки xlUp - хорошая практика.

wba.Worksheets("Worksheet in A").Range("B3", Range("B" & Rows.Count).End(xlUp)).Copy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...