Страницы: 1
RSS
Копирование строк на другой лист с ограничением
 
Здравствуйте, Уважаемые планетяне!  
Возникла новая потребность и кое , что относительно моей задачи на форуме нашлось.  
Но не совсем то, как надобно в итоге.  
Задача стоит в переносе строк по заполненным ячейкам в определенном столбце.  
Вот он макрос  
Dim i As Long  
   With Sheets("Лист1")  
       For i = 6 To 200 'с 6 по 200 строки в столбце А  
           If Not IsEmpty(.Cells(i, 7)) Then .Cells(i, 7).EntireRow.Copy _  
               Destination:=Sheets("Лист2").Cells(Sheets("Лист2").Cells(Rows.Count, 7).End(xlUp).Row + 1, 1)  
       Next i  
   End With  
   MsgBox "Строки с заполненными ячейками в столбце G перенесены на Лист2", 64, "Конец"  
 
Но он копирует все данные начиная со столбца А и до конца.  
Подскажите как ограничить (и в дальнейшем иметь возможность регулировать)  диапазон копируемых данных  
например осуществлять просмотр и копировать данные со столбца В по L и до последней заполненной ячейке в столбце С   ?  
Примерчик с макросом прикрутила.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
If Not IsEmpty(.Cells(i, 7)) Then .range("B" & i & ":L" & i).Copy _  
 
или  
 
If Not IsEmpty(.Cells(i, 7)) Then Intersect(.Rows(i), .Range("B:L")).Copy _
 
во первых вы проверяете не столбец А а столбец G. А что бы перенести нужные данные задайте не всю строку при копировании как сдесь:  
Then .Cells(i, 7).EntireRow.Copy  а нужный диапазон в вашем случае:  
Then .Range(Cells(i, 3), Cells(i, 12)).Copy
Редко но метко ...
 
Эх...
 
Спасибо большое ребята! Все работает!
 
{quote}{login=Юрий М}{date=20.01.2011 03:31}{thema=}{post}Эх...{/post}{/quote}  
 
вот блин не углядел размер файла, исправлюсь
Редко но метко ...
 
Эх... как обычно задача усложнилась...  
В исходном листе с которого копируются данные присутствуют примечания,формулы, форматы значений и условные форматы ячеек. Ребят как подправить , что бы копировались только значения (без формул), примечания и форматы значений (руб, eur и тп), а условные форматы и формулы не присутствовали на том листе куда скопировались данные...
 
Разбейте Вашу строку  
<что-то там>.copy Destination:=<куда-то>  
на две:  
<что-то там>.copy  
<куда-то>.pastespecial xlPasteValues
 
А, форматы и примечания еще нужны:  
 
<что-то там>.copy  
<куда-то>.pastespecial xlPasteValuesAndNumberFormats  
<куда-то>.pastespecial xlPasteComments
 
{quote}{login=Казанский}{date=20.01.2011 05:26}{thema=}{post}А, форматы и примечания еще нужны:  
 
<что-то там>.copy  
<куда-то>.pastespecial xlPasteValuesAndNumberFormats  
<куда-то>.pastespecial xlPasteComments{/post}{/quote}  
 
чет не могу никак код собрать... :-(
 
Лариса: "чет не могу никак код собрать... :-(".  
А мо быть не распальцовку делать, а, учтя урок первого поста - удаление большеразмерного примера, приложить удобоваримый - 100кб со смакросом, и тогда м.б... ;-)
 
блин... простите не заметила... ща
 
вот
 
Sub Order()  
Dim i As Long  
With Application  
   .ScreenUpdating = False  
   With Sheets("Order")  
       For i = 6 To 200 'с 6 по 200 строки в столбце А  
           If Not IsEmpty(.Cells(i, 9)) Then  
               Intersect(.Rows(i), .Range("B:K")).Copy  
               With Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 9).End(xlUp).Row + 1, 2)  
                   .PasteSpecial xlPasteValuesAndNumberFormats  
                   .PasteSpecial xlPasteFormats  
                   .PasteSpecial xlPasteComments  
               End With  
           End If  
       Next i  
   End With  
   .CutCopyMode = False  
   .ScreenUpdating = True  
End With  
End Sub
 
{quote}{login=Казанский}{date=20.01.2011 06:33}{thema=}{post}Sub Order()  
Dim i As Long  
With Application  
   .ScreenUpdating = False  
   With Sheets("Order")  
       For i = 6 To 200 'с 6 по 200 строки в столбце А  
           If Not IsEmpty(.Cells(i, 9)) Then  
               Intersect(.Rows(i), .Range("B:K")).Copy  
               With Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 9).End(xlUp).Row + 1, 2)  
                   .PasteSpecial xlPasteValuesAndNumberFormats  
                   .PasteSpecial xlPasteFormats  
                   .PasteSpecial xlPasteComments  
               End With  
           End If  
       Next i  
   End With  
   .CutCopyMode = False  
   .ScreenUpdating = True  
End With  
End Sub{/post}{/quote}  
 
Спасибо! Но условные форматы то же переносит. Можно как то это исключить?
 
Спасибо еще раз! С УФ разобралась!
Страницы: 1
Наверх