Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2012, 03:27   #1
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию выборочное копирование

Добрый день!
Как скопировать данные из столбцов А,В,Е, если кол-во строк изменяется?

Спасибо
Yusch вне форума Ответить с цитированием
Старый 20.08.2012, 03:37   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Выделяете целиком столбцы, нажимаете Правка-Копировать - и пофиг, сколько там строк, столбцы с данными будут скопированы целиком.

PS: какой вопрос - такой и ответ.
Если вам лень прикрепить файл с примером (что есть, и что надо) - мне лень подробно описывать десятки возможных вариантов.
EducatedFool вне форума Ответить с цитированием
Старый 20.08.2012, 05:00   #3
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Не хочется тащить лишнее. Пробую так : range("A2:A" & lastrow).select
Предварительно задаю последнюю запись
Lastrow=cells(rows.count,1....и т.д.
Но он ругается.....как правильно задать такое копировпние
Yusch вне форума Ответить с цитированием
Старый 20.08.2012, 05:24   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Пробую так : range("A2:A" & lastrow).select
Вот теперь хотя бы выяснилось, что вы делаете это макросом.
Ещё несколько постов - и мы поймём, что на самом деле вам требуется)

Попробую угадать:
Код:
Range([A2], Range("A" & Rows.Count).End(xlUp)).Select
А вообще, выделять ячейки совсем не требуется, чтобы их скопировать.
Будет пример файла с пояснением, что куда надо скопировать - получите макрос копирования из одной-двух строк кода.
EducatedFool вне форума Ответить с цитированием
Старый 20.08.2012, 05:44   #5
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Все, дошло как правильно) спс что откликнулись
Yusch вне форума Ответить с цитированием
Старый 20.08.2012, 06:59   #6
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Научите пож-та копировать в две строки)
Есть "файл1", из него надо скопировать содержимое из определенных столбцов(я их выделила, число строк данного файла менятся) в файл "расчетная таблица". Файл "расчетная таблица_готово"- то что должно получится в результате работы макроса.

Файл "расчетная таблица"- планирую создавать так же макросом.
Вложения
Тип файла: rar тест.rar (16.6 Кб, 10 просмотров)
Yusch вне форума Ответить с цитированием
Старый 20.08.2012, 07:37   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Проверил - всё работает:
Код:
Sub Копирование()
    ' перед запуском макроса должен быть активен исходный файл (Файл1),
    ' а файл-получатель ("Расчетная таблица.xlsx") - тоже открыт

    Dim ra1 As Range, ra2 As Range, ra3 As Range

    ' ra1 - заполненные строки исходного файла
    Set ra1 = Range([A2], Range("A" & Rows.Count).End(xlUp)).EntireRow

    ' ra2 - нужные столбцы исходного файла
    Set ra2 = [a:a,c:c,d:d,g:g,k:k,m:m,q:q]

    ' ra3 - пересечение нужных строк и нужных столбцов - диапазон для копирования
    Set ra3 = Intersect(ra1, ra2)

    ra3.Copy Workbooks("Расчетная таблица.xlsx").Worksheets(1).Range("a3")
End Sub
Можно при желании сократить код:
Код:
Sub Копирование2()
    Intersect(Range([A2], Range("A" & Rows.Count).End(xlUp)).EntireRow, [a:a,c:c,d:d,g:g,k:k,m:m,q:q]).Copy _
            Workbooks("Расчетная таблица.xlsx").Worksheets(1).Range("a3")
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 20.08.2012, 10:27   #8
Yusch
Пользователь
 
Регистрация: 10.02.2012
Сообщений: 16
По умолчанию

Спасибо все работает! Я так понимаю при таком решении нельзя вставить сначала столбец С , а потом А
Yusch вне форума Ответить с цитированием
Старый 20.08.2012, 17:19   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
при таком решении нельзя вставить сначала столбец С , а потом А
Можно - но код будет посложнее
EducatedFool вне форума Ответить с цитированием
Старый 21.08.2012, 10:10   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Можно - но код будет посложнее
Ну я бы не сказал - всего-то две копии строки: сначала для столбца А, а потом для столбца С (ну и не забыть сместить ячейку назначения).
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборочное копирование данных по условиям Ppaa Microsoft Office Excel 0 14.03.2012 11:40
Выборочное копирование данных в ячейки excel serg_but Microsoft Office Excel 4 21.01.2012 20:29
выборочное копирование информации из файла evg94 Паскаль, Turbo Pascal, PascalABC.NET 1 20.09.2011 19:57
Выборочное копирование данных из таблицы wmkasper Microsoft Office Excel 14 12.03.2010 19:22
Задача на выборочное копирование ячеек в уже открытую другую книгу noobnoob Microsoft Office Excel 8 23.11.2009 06:13