Страницы: 1
RSS
Перенос строки удовлетворяющей условиям на другой лист VBA., Нужно перенести строки, удовлетворяющие условию друг за другом.
 
Код
Application.ScreenUpdating = False       
        Dim table As Worksheet
        Dim rw As Integer 
        Dim x As Integer
        Set table = Worksheets("Табель")
        For rw = 1 To 10 Step 1
            For x = 2 To 10 Step 1
                If Worksheets("Источник").Cells(rw, 1) = CDate(Worksheets("Выбор сотрудника").Range("B2")) _
                And Worksheets("Источник").Cells(rw, 4) = CStr(Worksheets("Выбор сотрудника").Range("D2")) _
                Then Worksheets("Источник").Rows(rw).Copy Worksheets("Табель").Range(table.Cells(x, "A"), table.Cells(1620, "R"))
            Next
        Next
Application.ScreenUpdating = True
Вот код, объясняю что он делает:
На втором листе пользователь выбирает дату и ФИО и нажимает на кнопку, эти значения сравниваются с данными на первом листе, если данные совпадают, то строка полностью переносится на третий лист. Проблема в том, что переносится только одна последняя строка, когда нужно перенести строки последовательно друг за другом (как я понимаю строка переносится, но затем переносится следующая и становится на место предыдущей, поэтому там последняя строка). Я попытался это исправить, но строка просто дублируется 9 раз. Помогите записать строки друг за другом :cry:  
 
Я смог с этим разобраться, оставляю код, может кому-нибудь поможет
Код
Application.ScreenUpdating = False
        Dim table As Worksheet
        Dim rw As Integer
        Dim var As Long
        Dim cnt As Integer
        cnt = 0
        Set table = Worksheets("Табель")
        var = Worksheets("Табель").Cells(1620, 1).End(xlUp).Row + 1
        For rw = 1620 To 1 Step -1
                If Worksheets("Источник").Cells(rw, 1) = CDate(Worksheets("Выбор сотрудника").Range("B2")) _
                And Worksheets("Источник").Cells(rw, 4) = CStr(Worksheets("Выбор сотрудника").Range("D2")) _
                Then
                cnt = cnt + 1
                Worksheets("Источник").Rows(rw).Copy
                Worksheets("Табель").Range("A" & var).PasteSpecial (xlPasteAllExceptBorders)
                var = var + 1
                End If
        Next rw
        MsgBox "Скопировано строк: " & cnt & " "
         Application.ScreenUpdating = True
 
Попробуйте еще вариант, по скорости быстрее)
Вредить легко, помогать трудно.
 
Огромное спасибо 8)  
Страницы: 1
Читают тему (гостей: 1)
Наверх