Перечислите все строки на основе даты с и даты до использования VBA - PullRequest
0 голосов
/ 08 января 2019

пытался решить эту проблему.

У меня есть этот пример данных, чтобы получить строки, которые находятся между датой от и датой до:

Лист1

Этот лист содержит ячейки «Дата с:» и «Дата к:», которые автоматически показывают результат ниже

enter image description here

Вот мой Лист2, где данные извлечены из

enter image description here

Вот мой текущий код VBA.

   Sub FinalData()

        Dim lastrow As Long
        Dim count As Integer
        Dim p As Integer
        Dim x As Integer

        lastrow = Sheets("Sheet2").Cells(rows.count, 1).End(xlUp).row
         Sheets("Sheet1").Range("A5:C1000").ClearContents

          count = 0
          p = 5
          For x = 2 To lastrow

          If Sheets("Sheet2").Range("C2:C100") >= Sheets("Sheet1").Cells(1, 2) AND Sheets("Sheet2").Range("C2:C100") <= Sheets("Sheet1").Cells(2, 2) Then

          Sheets("Sheet1").Cells(p, 1) = Sheets("Sheet2").Cells(x, 1)

          Sheets("Sheet1").Cells(p, 2) = Sheets("Sheet2").Cells(x, 2)

          Sheets("Sheet1").Cells(p, 3) = Sheets("Sheet2").Cells(x, 3)

          p = p + 1
          count = count + 1

          End If

          Next x

          MsgBox " The number of data found for this Area is " & " " & count
    End Sub         

Что-то не так с моим кодом? Этот код прекрасно работает из моего последнего проекта, но когда я пытаюсь использовать его, чтобы получить строки для даты. Я думаю, что проблема в условном утверждении, которое я сделал.

1 Ответ

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

Проблема в том, что вы пытаетесь сравнить диапазон ячеек с двумя отдельными ячейками.

Непроверенные:

   Sub FinalData()

        Dim lastrow As Long
        Dim count As Long
        Dim p As Long
        Dim x As Long, dt
        Dim wsReport As Worksheet, wsData As Worksheet

        Set wsReport = ThisWorkbook.Sheets("Sheet1")
        Set wsData = ThisWorkbook.Sheets("Sheet2")

        lastrow = wsData.Cells(Rows.count, 1).End(xlUp).Row
        wsReport.Range("A5:C1000").ClearContents

        count = 0
        p = 5

        For x = 2 To lastrow
            dt = wsData.Cells(x, "C")
            If dt >= wsReport.Cells(1, 2) And dt <= wsReport.Cells(2, 2) Then
                With wsReport
                    .Cells(p, 1) = wsData.Cells(x, 1)
                    .Cells(p, 2) = wsData.Cells(x, 2)
                    .Cells(p, 3) = wsData.Cells(x, 3)
                End With

                p = p + 1
                count = count + 1
            End If
        Next x

        MsgBox " The number of data found for this Area is " & " " & count
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...