Копировать строки с конкретными столбцами на основе введенной даты на другой лист - PullRequest
0 голосов
/ 30 января 2019

У меня есть существующий код VBA, который копирует строки, если столбец идентификатора помечен знаком «X».Теперь я хочу, чтобы он основывался на диапазоне дат, введенном пользователем.Может ли кто-нибудь помочь мне преобразовать существующий код в нужный мне?Спасибо!

Sub CopyRow()

Application.ScreenUpdating = False
Dim x As Long, MaxRowList As Long, MaxRowList2 As Long, S As String, wsSource As Worksheet, wsTarget As Worksheet, S2 As Long

Set wsSource = ThisWorkbook.Worksheets("Sheet 1 - RAW")
Set wsTarget = ThisWorkbook.Worksheets("Staging")
iCol = 1
MaxRowList = wsSource.Cells(Rows.Count, iCol).End(xlUp).Row
MaxRowList2 = wsTarget.Cells(Rows.Count, iCol).End(xlUp).Row
    S2 = 8

wsTarget.Range("A8:H22").ClearContents

For x = 4 To MaxRowList
    If InStr(1, wsSource.Cells(x, 19), "X") Then
        wsTarget.Cells(S2, 1).Value = wsSource.Cells(x, 1).Value
        wsTarget.Cells(S2, 4).Value = wsSource.Cells(x, 2).Value
        wsTarget.Cells(S2, 5).Value = wsSource.Cells(x, 10).Value
        wsTarget.Cells(S2, 6).Value = wsSource.Cells(x, 16).Value
        wsTarget.Cells(S2, 7).Value = wsSource.Cells(x, 18).Value
        wsTarget.Cells(S2, 8).Value = wsSource.Cells(x, 17).Value
        S2 = S2 + 1
        End If
Next

Application.ScreenUpdating = True

End Sub

1 Ответ

0 голосов
/ 30 января 2019

Вам нужно изменить свое заявление if.

If InStr(1, wsSource.Cells(x, 19), "X") Then

Станет

If wsSource.Cells(x, ColumnThatContainsTheDate).value > OlderDate and wsSource.Cells(x, 19).value < NewerDate Then

Теперь ваша проблема станет, как вы хотите, чтобы пользователь выбирал даты?Форма, которую он мог бы динамически выбирать (используя календарь), просто поле ввода или основанное на значении ячейки?Вы хотите, чтобы все, что старше или новее к этой дате, или вы хотите между двумя датами?Просто измените формулировку в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...