Страницы: 1
RSS
Копирование данных с листа на лист с 2 условиями.
 
Здравствуйте, уважаемые форумчане!  
Прошу, помогите подправить макрос копирования данных с одного листа на другой.  
Макрос копирует строку при условии наличия данных в ячейке столбца J. В исходной таблице могут присутствовать заголовки залитые желтым цветом. Так как по строке заголовков ячейка столбца  J пустая, естественно он ее пропускает. Помогите подправить код макроса , что бы на лист приемник копировались эти заголовки вместе с данными в своем исходном порядке.    
Пример в прилагаемом файле.
 
Вы бы в своем примере вставили несколько значений в столбец "J" и показали как с этими значениями должно получится. А то по вашему примеру остается только гадать.(  
в столбце "J" нет ни одного значения)
Редко но метко ...
 
А о том, что он у Вас столбцы добавляет Вы умолчали...
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Sub order_process()  
Dim i As Long ' для процедуры переноса строк с order  
Sheets("Order").Range("I10").EntireColumn.Insert  
Dim toCopyData As Range  
   With Sheets("Order")  
       For i = 6 To 200 'с 7 по 200 строки в столбце А  
           If Not IsEmpty(.Cells(i, 10)) Or .Cells(i, 10).Interior.ColorIndex = 36 Then  
           Set toCopyData = .Range(.Cells(i, 3), .Cells(i, 11))  
            toCopyData.Copy Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 4).End(xlUp).Row + 1, 3)  
            End If  
       Next i  
   End With  
End Sub
Я сам - дурнее всякого примера! ...
 
{quote}{login=nerv}{date=10.10.2011 11:20}{thema=}{post}А о том, что он у Вас столбцы добавляет Вы умолчали...{/post}{/quote}  
 
Блин... ради бога извините... для примера надо было убрать функцию добавления столбца , вот блин... утро, понедельник...
 
{quote}{login=KukLP}{date=10.10.2011 11:24}{thema=}{post}Sub order_process()  
Dim i As Long ' для процедуры переноса строк с order  
Sheets("Order").Range("I10").EntireColumn.Insert  
Dim toCopyData As Range  
   With Sheets("Order")  
       For i = 6 To 200 'с 7 по 200 строки в столбце А  
           If Not IsEmpty(.Cells(i, 10)) Or .Cells(i, 10).Interior.ColorIndex = 36 Then  
           Set toCopyData = .Range(.Cells(i, 3), .Cells(i, 11))  
            toCopyData.Copy Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 4).End(xlUp).Row + 1, 3)  
            End If  
       Next i  
   End With  
End Sub{/post}{/quote}  
 
 
Спасибо огромное за помощь! Работает, Ура!!!
 
Снова вопрос поднялся и у меня тупик... Появилось третье условие по этой теме.  
Помогите преодолеть пожалуйста, изложила все в примере.
 
Ребят, неужели никто не поможет? Может кто даст ссылочку на что-то подобное? Все форумы пропахала на ентот предмет... и ниче... плииз!
 
Может быть делал бы иначе, но раз уже большая часть готова, то дописал и чуть "уписал":  
 
 
Option Explicit  
Sub order_process()  
' На листе Order вставляет столбец для общ веса, копирует строки заказанного товара и заголовки залитые  
' желтым цветом и вставляет их на лист Order-Final  
   Dim i As Long    ' для процедуры переноса строк с order  
'Sheets("Order").Range("I10").EntireColumn.Insert  
   Dim r As Range  
   With Sheets("Order")  
       For i = 6 To 200    'с 7 по 200 строки в столбце А  
           If .Cells(i, 10).Interior.ColorIndex = 36 Then Set r = .Range(.Cells(i, 3), .Cells(i, 11))  
           If Not IsEmpty(.Cells(i, 10)) Then  
               If Not r Is Nothing Then  
                   r.Copy Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 4).End(xlUp).Row + 1, 3)  
                   Set r = Nothing  
               End If  
               .Range(.Cells(i, 3), .Cells(i, 11)).Copy Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 4).End(xlUp).Row + 1, 3)  
           End If  
       Next i  
   End With  
End Sub  
 
Копируйте в режиме ответа с цитатой - будут отступы.
 
{quote}{login=Hugo}{date=26.10.2011 12:54}{thema=}{post}Может быть делал бы иначе, но раз уже большая часть готова, то дописал и чуть "уписал":  
 
 
Option Explicit  
Sub order_process()  
' На листе Order вставляет столбец для общ веса, копирует строки заказанного товара и заголовки залитые  
' желтым цветом и вставляет их на лист Order-Final  
   Dim i As Long    ' для процедуры переноса строк с order  
'Sheets("Order").Range("I10").EntireColumn.Insert  
   Dim r As Range  
   With Sheets("Order")  
       For i = 6 To 200    'с 7 по 200 строки в столбце А  
           If .Cells(i, 10).Interior.ColorIndex = 36 Then Set r = .Range(.Cells(i, 3), .Cells(i, 11))  
           If Not IsEmpty(.Cells(i, 10)) Then  
               If Not r Is Nothing Then  
                   r.Copy Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 4).End(xlUp).Row + 1, 3)  
                   Set r = Nothing  
               End If  
               .Range(.Cells(i, 3), .Cells(i, 11)).Copy Sheets("Order-Final").Cells(Sheets("Order-Final").Cells(Rows.Count, 4).End(xlUp).Row + 1, 3)  
           End If  
       Next i  
   End With  
End Sub  
 
Копируйте в режиме ответа с цитатой - будут отступы.{/post}{/quote}  
 
 
Спасибо огромное, уважаемый Hugo!!! Все работает замечательно!  
Если возможно еще некоторые вопросы относительно Вашего комментария про отступы...  
На сколько важны эти самые отступы, на что они имеют влияние и как правильно их устанавливать?  
Предполагая Ваш ответ, я подозреваю, что большую часть библиотеки моих макросов надо корректировать на предмет этих отступов, может существуют какие утилиты или редакторы которые позволяют это сделать "на лету" корректно?
 
Эх, не подписалась... То я была :)
 
Отступы на функционал не влияют.  
Есть коды, где пытаются по максимуму втиснуть в одну строку, используя ":" -  видел листинг вообще в виде квадрата.  
Но с отступами код читается легче.  
И есть программы для автоматизации - можно поискать по "VBA Indenter", сейчас линк на то, что сам использую (дома), не помню.  
Кажется, у EducatedFool есть на сайте...
 
Не, не у Игоря....  
Тут:  
http://www.excel-vba.ru/general/poleznye-programmy-dlya-excel-i-vba/
 
А это домашняя страница Smart Indenter:  
 
http://www.add-ins.com/macro-products-for-Microsoft-Excel/how-to-indent-vba-code/how-to-indent-vba-code.htm
 
Т.е. домашняя вот - http://www.oaltd.co.uk/Indenter  
А выше описание :)
 
{quote}{login=Hugo}{date=26.10.2011 10:48}{thema=}{post}Т.е. домашняя вот - http://www.oaltd.co.uk/Indenter  
А выше описание :){/post}{/quote}  
Ага, спасибо! будем пробовать привести в порядок :)
Страницы: 1
Наверх