Выбор данных между 2 диапазонами - PullRequest
0 голосов
/ 15 апреля 2020

У меня возникла проблема с инструментом l oop для выбора данных между 2 диапазонами. У меня есть 2 значения: 2020-04-01 в Range("E2") и 2020-06-01 в Range("E4"). После этого я ищу эти 2 даты в column A и возникают некоторые трудности. С этим можно выбрать оба диапазона:

Sub FindDate()

    Dim date1 As String, date2 As String
    Dim date1Cell As Range, date2Cell As Range, valRng As Range
    Dim i As Long

    Set valRng = Range("A1:A1000")
    date1 = Format(Range("E2"), "yyyy-mm-dd")
    date2 = Format(Range("E4"), "yyyy-mm-dd")

    Set date1Cell = Cells.Find(What:=CDate(date1), After:=Range("A1"), LookIn:=xlFormulas _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        'date1Cell.Select
    Set date2Cell = Cells.Find(What:=CDate(date2), After:=Cells(date1Cell), LookIn:=xlFormulas _
            , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        'date2Cell.Select
    For i = date1Cell To date2Cell
    ------------------------    ------------------------    ------------------------
        'How do I set up that loop to search and select from date1Cell to date2Cell
    ------------------------    ------------------------    ------------------------
    Next i

End Sub

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Вам вообще не нужно никаких циклов, просто используйте совпадение:

Sub FindDate()

Dim date1 As String: date1 = Format(Range("E2"), "yyyy-mm-dd")
Dim date2 As String: date2 = Format(Range("E4"), "yyyy-mm-dd")
Dim dtRng As Range: Set dtRng = Range("A1:A10000")

Range("A" & Application.Match(date1, dtRng, 0) & ":A" & Application.Match(date2, dtRng, 0)).Select

End Sub
0 голосов
/ 15 апреля 2020

Краткий пример использования al oop вместо Find:

Sub dural()
    Dim date1 As String, date2 As String, cell As Range
    Dim date1Cell As Range, date2Cell As Range, valRng As Range
    Dim i As Long

    Set valRng = Range("A1:A1000")
    date1 = Format(Range("E2"), "yyyy-mm-dd")
    date2 = Format(Range("E4"), "yyyy-mm-dd")

    For Each a In valRng
        If a.Text = date1 Then Set date1Cell = a
        If a.Text = date2 Then Set date2Cell = a
    Next a

    Range(date1Cell, date2Cell).Select
End Sub

enter image description here

ПРИМЕЧАНИЕ:

Вам не требуется, чтобы al oop делал фактический выбор.

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