Страницы: 1
RSS
выбор несвязанного диапазона ячеек из одной книги и их копирование в другую
 
Добрый день!  
проблема выглядит так:  
требуется из одной книги выбрать и скопировать в другую несвязанный диапазон ячеек (построчно, но за исключением некоторых столбцов)  
 
алгоритм вижу такой:  
1. просим выделить ячейку в строке (с которой начнём вставку) в книге куда будем копировать (например ячейка G5 в книге1)  
2. запрашиваем первую и последнюю строки в книге откуда будем копировать (например указывая ячейки D10 и K16 в книге2)  
3. нажимаем кнопку и копируем строки, но не полностью а по определённому формату, который прописываем в макросе (например копируем только столбцы 1-5, 8-15, 20)  
В итоге получаем что в книге1 заполнены строки 5 - 11 столбцы 1-5, 8-15, 20  
Вот и всё.  
Спасибо за помощь. Готового решения в Интернете не нашёл.
 
файлы прикрепляю
 
{quote}{login=The_Prist}{date=22.09.2009 04:15}{thema=}{post}Посмотрите на этой же странице тему  
"Как при вставке ячеек игнорировать скрытые строки?"{/post}{/quote}  
 
К сожалению все столбцы должны быть открыты и требуется скопировать несвязанные диапазоны формат которых заранее известне (это столбцы 1-5, 8-15, 20 в примере)
 
до сих пор ничего сделать не могу  
прошу помощи
 
{quote}{login=Роман}{date=23.09.2009 03:32}{thema=}{post}до сих пор ничего сделать не могу  
прошу помощи{/post}{/quote}  
А если не "заморачиваться" несвязанными диапазонами?  
Сколько их? Постоянные - нет? Место куда: постоянное - нет?  
Дать имена... Поставить в очередь на копирование и... вперед!(?)
 
{quote}{login=}{date=23.09.2009 04:10}{thema=Re: }{post}{quote}{login=Роман}{date=23.09.2009 03:32}{thema=}{post}до сих пор ничего сделать не могу  
прошу помощи{/post}{/quote}  
А если не "заморачиваться" несвязанными диапазонами?  
Сколько их? Постоянные - нет? Место куда: постоянное - нет?  
Дать имена... Поставить в очередь на копирование и... вперед!(?){/post}{/quote}  
 
Диапазонов много - порядка 40, число строк разное, место тоже разное  
Пробую написать макрос, пока выходит, но не очень  
Вопрос: как передать в переменную номер строки активной ячейки?
 
{quote}{login=Роман}{date=23.09.2009 04:25}{thema=Re: Re: }{post}{quote}{login=}{date=23.09.2009 04:10}{thema=Re: }{post}{quote}{login=Роман}{date=23.09.2009 03:32}{thema=}{post}до сих пор ничего сделать не могу  
прошу помощи{/post}{/quote}  
А если не "заморачиваться" несвязанными диапазонами?  
Сколько их? Постоянные - нет? Место куда: постоянное - нет?  
Дать имена... Поставить в очередь на копирование и... вперед!(?){/post}{/quote}  
 
Диапазонов много - порядка 40, число строк разное, место тоже разное  
Пробую написать макрос, пока выходит, но не очень  
Вопрос: как передать в переменную номер строки активной ячейки?{/post}{/quote}  
 
И ещё вопрос: как копировать не в буфер обмена, а в массив?
 
Ваша задача как то не понятно выглядит, поэтому даже не буду ввязываться...  
Макросов копирования данных из книги в книгу, листа на лист на форуме полно.  
Главная задача определить начальную и конечную строку диапазона (столбцы фиксированы как понял), а потом копируем эти блоки в другую книгу...  
Определить начало и конец диапазона можно через InputBox  
примерно так  
On Error Resume Next  
Set rngStartRange = Application.InputBox _  
       (Prompt:="Выделите начальную ячейку", _  
       Title:="", Type:=8)  
If rngStartRange Is Nothing Then MsgBox "Выберите ячейку, а то ни чего делать не буду", vbInformation, "НУ?!"  
 
If Not rngStartRange Is Nothing Then  
iNachRow = rngStartRange.row 'начальная строка блока данных  
----  
Потом конечную строку, проверку больше меньше, а потом просто копируем заданные диапазоны... И не надо в буфер или в массив загонять...
 
{quote}{login=Igor67}{date=23.09.2009 09:39}{thema=}{post}Ваша задача как то не понятно выглядит, поэтому даже не буду ввязываться...  
Макросов копирования данных из книги в книгу, листа на лист на форуме полно.  
Главная задача определить начальную и конечную строку диапазона (столбцы фиксированы как понял), а потом копируем эти блоки в другую книгу...  
Определить начало и конец диапазона можно через InputBox  
примерно так  
On Error Resume Next  
Set rngStartRange = Application.InputBox _  
       (Prompt:="Выделите начальную ячейку", _  
       Title:="", Type:=8)  
If rngStartRange Is Nothing Then MsgBox "Выберите ячейку, а то ни чего делать не буду", vbInformation, "НУ?!"  
 
If Not rngStartRange Is Nothing Then  
iNachRow = rngStartRange.row 'начальная строка блока данных  
----  
Потом конечную строку, проверку больше меньше, а потом просто копируем заданные диапазоны... И не надо в буфер или в массив загонять...{/post}{/quote}  
 
Спасибо. Потихоньку что-то начинает получаться.  
Только вот не понял про то как копировать не загоняя в буфер?
 
Вы найдите файл по клчевым словам = Анюточка Pavel55 =. Там как раз есть копирование из многих книг в 1. Где много (книг) КОД ОБРЕЖЕТЕ И ДАЛЬШЕ все просто.  
Копирование с активного листа как - то так  
Range("A" & iStartRow & ":" & "F" & iLastRow).copy destination:=Workbook("...").worksheet("...").Range("A" & iRow)  
Это если нет формул, если есть и надо перенести значения/форматы/ и т.д. используем специальную вставку...  
Работа с буфером - это уже отдельная процедура (код) в ВБА.  
Игорь67
 
если копировать только значения:  
[b1:b6] = [a1:a6].Value
 
если все:  
[a1:a6].copy [b1:b6]
Живи и дай жить..
 
Всем спасибо, далее буду самостоятельно работать над темой.
Страницы: 1
Читают тему
Наверх