VBA - Копирование-вставка столбцов с пустыми ячейками - PullRequest
0 голосов
/ 08 ноября 2018

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

Кроме того, есть ли более умный способ написания кода для копирования всех столбцов за один раз (с объявлением или без объявления переменных) enter image description here

Sheets("type 1").Select
Cells.Find(What:=" Netherland ").Select
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("type 2").Select
Cells.Find(What:=" Netherland ").Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste 

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Вы можете попробовать использовать свойство SpecialCells, чтобы включить весь столбец, включая любые пустые ячейки, которые появляются между первой и последней ячейками.

Итак, где у вас есть:

Range(Selection, Selection.End(xlDown)).Select

Вместо этого используйте что-то вроде:

.Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell))

Хотя вам придется изменить ссылки на диапазон в соответствии с вашим проектом.

0 голосов
/ 08 ноября 2018

Вы можете попробовать что-то вроде этого

Worksheets("type 2").Columns(Worksheets("type 2").Find("*Netherland*").Column).Value _
= Worksheets("type 1").Columns(Worksheets("type 1").Find("*Netherland*").Column).Value

Вы можете сделать это намного чище, установив номера столбцов в переменные и просто используя их вместо фактической строки, чтобы найти их, но это не требует каких-либо дополнительных переменных.

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