показать сериалы дат в столбце на основе двух дат - PullRequest
0 голосов
/ 14 апреля 2020

Я бы скорректировал свой код, когда я заполняю данные a3 и b3, тезисные даты показывают сериалы дат в столбце c мой код работает, но не так, как я бы

    Sub test()
 Dim r As Range, x
 For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
 If IsDate(r) * IsDate(r(, 2)) Then
 x = DateDiff("d", r, r(, 2)) + 1
 With r(, 3)
 r.Copy .Cells
 .AutoFill .Resize(, x)
 End With
 End If
 Next
End Sub

enter image description here

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

In C3 введите:

=SEQUENCE(B3+1-A3)+A3-1

и примените правильные форматы:

enter image description here

Это автоматически проливается вниз, чтобы правильно заполнить диапазон дат. Если вы хотите VBA:

Sub dural()
    Range("C3") = "=SEQUENCE(B3+1-A3)+A3-1"
    Range("C:C").NumberFormat = "mm/dd/yyyy"
End Sub
0 голосов
/ 15 апреля 2020

вам просто нужно:

  • удалить операторы For Each и Next, чтобы избежать зацикливания

  • установить r в единственный диапазон, который вы хотите в столбце A

следующим образом

Sub testw()
    Dim r As Range, x As Long

    Set r = Range("A3")
    If IsDate(r) * IsDate(r(, 2)) Then
        x = DateDiff("d", r, r(, 2)) + 1
        With r(, 3)
            If Not IsEmpty(.Cells) Then Range(.Cells, Cells(Rows.Count, .Column).End(xlUp)).ClearContents
            r.Copy .Cells
            If x > 1 Then .AutoFill .Resize(x)
        End With
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...