Excel VBA Макросы: перенос столбцов

Автор Посетитель, 26 июня 2019, 11:49

Посетитель

Необходимо перенести столбцы A, B, Н из листа1, начиная с 4 строки, в лист "Реестр", начиная со 2 строки, в следующем порядке A, Н, B.
Нужно скопировать значения и форматы, формулы не нужно копировать.
Лист "Реестр" создаётся макросом и заранее в нём нет возможности вручную сделать нужные настройки.

[вложение удалено администратором]

Администратор

Макрос
Sub Макрос()

    Dim sh_src As Worksheet, sh_res As Worksheet
    Dim lr As Long
   
   
    ' Отключение монитора. Это может ускорить макрос.
        ' Если много формул, то можно ещё отключить формулы.
    Application.ScreenUpdating = False
   
    ' Присваиваем листам, с которыми надо работать, имена. Может быть так будет удобнее
        ' писать и читать код.
    Set sh_src = Worksheets("Лист1")
    Set sh_res = Worksheets("Реестр")
   
    ' Поиск последней строки на листе-источнике по столбцу A.
        ' End не ищет в скрытых строках.
    lr = sh_src.Cells(sh_src.Rows.Count, "A").End(xlUp).Row
   
    ' Копирование столбцов.
    sh_src.Range("A4:A" & lr).Copy
    sh_res.Range("A2").PasteSpecial xlPasteValues
    sh_res.Range("A2").PasteSpecial xlPasteFormats
   
    sh_src.Range("H4:H" & lr).Copy
    sh_res.Range("B2").PasteSpecial xlPasteValues
    sh_res.Range("B2").PasteSpecial xlPasteFormats
   
    sh_src.Range("B4:B" & lr).Copy
    sh_res.Range("C2").PasteSpecial xlPasteValues
    sh_res.Range("C2").PasteSpecial xlPasteFormats
   
    Application.CutCopyMode = False
   
    ' Включение монитора.
    Application.ScreenUpdating = True
   
    ' Сообщение.
    MsgBox "Готово.", vbInformation
   
End Sub
[свернуть]

Посетитель


Посетитель 25.10.2024

Добрый день.
Отличный макрос по копированию и вставке определённых столбцов, работает очень быстро, главное сам код очень простой.

 Возможна ли корректировка данного макроса, необходимо скопировать ряд столбцов, как пример столбцы G, A, D, F (столбцы указаны вперемешку, так как мои исходные данные организованы так, что в первую очередь я возьму данные именно из этих столбцов и вставлю их на другой лист, именно в таком порядке), если при условии того, что в столбце "S" будет найдено слово "срочный"? Как правильно организовать цикл (возможно в этом нет смысла) и/или взять данные в массив на больших объёмах данных +100К строк?