Страницы: 1
RSS
копирование строк
 
есть книга в ней 4 листа, нужно из первого листа в третить скопировать все строки 6-я ячейка в которих равна 1
форматирование и т.д. не имеет значения. следующая строка должна вставляться с нового рядка. данніе в 1 листе должни оставаться на месте (т.е. копирование а не перемещение)
Помогите пожалуйста, в вба новичек ((((
 
Файлик бы...
 
запросто
 
ну, вообще мне нужно чтоб утром на 10.00 розпечатался список тех кто не вишел на роботу. т.е. присвоил списку на 1 листе номерки-категории, нужно чтоб всех с кат.1 скинуло на 3 лист и делало сверку с листом 2 по сегодняшней дате. Тех кого нету в етом списке - печатало на принтер и заодно, резервную копию в файлик.

Реально с вба знаком где-то 2 недели, все макроси писал сам...
мне кажеться что моя задача не слишком трудная и задачи потруднее я уже реализовал, а вот с етим копированием строки по заданому параметру - ступор в голове и все....
 
выполните этот макрос
Код
Sub Copy123()
  Dim rg As Range, u As Range, adr$
  Set rg = Columns(6).Find(1, , xlValues, xlWhole): Set u = rg
  If Not rg Is Nothing Then adr = rg.Address
  Do
    Set u = Union(rg, u)
    Set rg = Columns(6).Find(rg, rg)
    If Not rg Is Nothing Then If rg.Address = adr Then Exit Do
  Loop
  If Not u Is Nothing Then u.EntireRow.Copy Worksheets(3).Cells(1, 1)
End Sub
при активном листе Список
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
Sub copi()
Set ws = ThisWorkbook.Worksheets("список")
Set ws2 = ThisWorkbook.Worksheets("8год")
j = 1
For i = 2 To ws.Cells.SpecialCells(xlLastCell).Row
If ws.Cells(i, 6) = 1 Then
ws.Range(Cells(i, 1), Cells(i, 6)).Copy ws2.Range(ws2.Cells(j, 1), ws2.Cells(j, 6))
j = j + 1
End If
Next i
End Sub

и кидает ошибку runtime error 1004
что и где я делаю не так?
 
Ігор Гончаренко, спасибо, роботает.
но подскажите что в моем коде не так?
 
если в момент выполнения макроса активен не лист список - будут проблемы
пробуйте так, это и чуть проще и работать будет
Код
ws.Cells(i, 1).Resize(1, 6).Copy ws2.Cells(j, 1)
Изменено: Ігор Гончаренко - 15.08.2018 15:47:28
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
огромнейшее спасибо, будем творить дальше...
 
Цитата
FoxLion написал:
что и где я делаю не так?
Вместо
Код
ws.Range(Cells(i, 1), Cells(i, 6)).Copy ws2.Range(ws2.Cells(j, 1), ws2.Cells(j, 6))
пишем
Код
With ws
.Range(.Cells(i, 1), .Cells(i, 6)).Copy ws2.Range(ws2.Cells(j, 1), ws2.Cells(j, 6))
End With

А что не так Вы делаете на форуме, Вам сейчас Юрий с Виктором расскажут :-)
Изменено: StoTisteg - 15.08.2018 16:01:02
Страницы: 1
Наверх