Копирование строки на новый лист после завершения на основе значения «Да» в столбце Y ... Excel 2010 - PullRequest
0 голосов
/ 25 марта 2020

Пожалуйста, кто-нибудь может отредактировать или дать мне код, который позволяет копировать всю строку в законченную рабочую таблицу, основываясь на столбце Y, в котором есть «Да», и удалив предыдущую строку в регистре после перемещения, высоко ценится

Sub MoveCompletedProjects()
       Const sCol$ = "Y" '<< search  in col. Y
       Const sCrit$ = "Yes" '<< criteria in col. Y
       Dim ws As Worksheet, ws1 As Worksheet
       Set ws = Sheets("Service Transition Register") '<< source sheet name
       Set ws1 = Sheets("Completed Projects") '<< target sheet name
       Dim r As Long, L As Long
       L = ws1.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
       Application.ScreenUpdating = False
       ws.AutoFilterMode = False
       r = ws.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
       If WorksheetFunction.CountIf(ws.Range(sCol & ":" & sCol), sCrit) > 0 Then '
       ws.Cells(1, sCol).Resize(r).AutoFilter Field:=1, Criteria1:=UCase(sCrit)
       ws.Rows(2 & ":" & r).SpecialCells(xlCellTypeVisible).Copy
       With ws1.Cells(L + 1, 1)
       .PasteSpecial Paste:=xlPasteFormats
       .PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        End With
        Application.CutCopyMode = False
        ws.AutoFilterMode = False
        End If
        Application.ScreenUpdating = True
        End Sub

1 Ответ

0 голосов
/ 26 марта 2020

Это базовый c код для filter_copy_Paste из одной рабочей таблицы в той же рабочей книге в другую, а затем для удаления данных из первой рабочей книги. Вам нужно будет изменить рабочие листы и убедиться, что они находятся в рабочей книге с макросом. Комментарии в макросе. Если ваши данные выходят за пределы Col "Y", измените «Y».

'Define your ws variables, change "ThisWorkbook" if sheets are not in the workbook that contains this code
Dim srcws   As Worksheet: Set srcws = ThisWorkbook.Sheets("Sheet1") 'Change sheet names as needed
Dim destws  As Worksheet: Set destws = ThisWorkbook.Sheets("Sheet2")

'Define your range to copy; change "Y" to the last column with data
Set Rng = srcws.Range("A1:Y" & srcws.Range("A" & srcws.Rows.Count).End(xlUp).Row)

With Rng
    srcws.AutoFilterMode = False  'Clear sheet of any current filters
    .AutoFilter 25, "Yes"    'Filter for "Yes" in Col "Y"

    With .Offset(1).SpecialCells(xlCellTypeVisible)  'Offset ensures Header row is not copied. SpecialCells ensures only visible data will be copied
        .Copy Destination:=destws.Cells(destws.Rows.Count, 1).End(xlUp).Offset(1)  'paste in destination sheet below all data
        .EntireRow.Delete  'Delete visible rows that were copied from Sheet1 
    End With

    srcws.AutoFilterMode = False        'Clear the filter
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...