Страницы: 1
RSS
Копирование только ячеек со значениями
 
Здравствуйте!
Для копирования на другой не всего столбца, а только заполненных ячеек (иначе много пустых ячеек образуется) использую такой код:
Код
Range("H1", Selection.End(xlDown)).Copy Sheets("Лист1").Columns(1)
Но он правильно работает только если выделена ячейка "H1". Так подозреваю, что метод Select тут неуместен, как и везде.
Есть способ его заменить, копируя при этом только ячейки со значениями?
Изменено: IvanMantrov - 12.07.2017 09:54:12
 
Диапазон с пропусками?
Автофильтр, только непустые, копировать, вставить
Если макросом: пробежаться по диапазону циклом.
 
Добрый день.
У вас в коде задается диапазон для копирования через указание верхней левой и нижней правой ячейки
Код
Range("H1", Selection.End(xlDown))
, где верхняя левая задана явно (Н1), а нижняя правая ищется от выделенной ячейки методом End с направлением "вниз" (xlDown). Вместо Selection, если всегда копируемый диапазон расположен в столбце Н можно Selection заменить на явное указание той же ячейки Н1 в квадратных скобках:
Код
Range("H1", [H1].End(xlDown))
Кому решение нужно - тот пример и рисует.
 
IvanMantrov, доброго утра!
1. Определение последней строки исходного диапазона: я бы выбрал вар 2 или 3 в вашем случае.
2. Перенос всего диапазона в нужное место.
3. Выделение пустых ячеек
потом удаляйте как хотите - со сдвигом вверх или строки целиком

P.S.: 1. могу ошибаться, но, если копируется 1 столбец, в котором есть пустые ячейки, то .End(xlDown) вернёт диапазон до первой пустой
2. Если допускается вставить диапазон с пропусками, а потом удалить их (то есть можно не вставлять сразу отфильтрованный), то это должно быть побыстрее цикла. Опять же: зависит от количества строк - на небольших объёмах разница будет незаметна
Изменено: Jack Famous - 12.07.2017 10:21:38
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Исчерпывающе получилось ))) Спасибо!
 
Цитата
Пытливый написал:
можно Selection заменить на явное указание той же ячейки Н1 в квадратных скобках
Почему именно в квадратных скобках? В чем разница?
 
Можно написать Range("H1"), можно [h1]. Если просто "Н1" и потом применять методы - то как название диапазона не воспринимает, воспринимает, как строку.
Кому решение нужно - тот пример и рисует.
Страницы: 1
Читают тему
Наверх