Добрый день, подскажите, пожалуйста макрос для вставки строк с датами начала и конца месяца при условии, что даты не в одном месяце, а переходят на следующий.
Например, если даты
15.02.2015
20.02.2015
то вставлять строку не нужно, а если
25.01.2015
04.02.2015
то подставить во вторую ячейку конец января, добавить вторую строку с началом февраля в первой ячейке и перенести 04.02.2015 во вторую:
Option Explicit
Sub jjj()
Dim arr(), dtBegin As Date, dtEnd As Date, dtEndTmp As Date, i&, j&
arr = Range("D6:E10")
j = 0
For i = 1 To UBound(arr, 1)
dtBegin = CDate(arr(i, 1))
dtEnd = CDate(arr(i, 2))
With WorksheetFunction
If .EoMonth(dtBegin, 0) < .EoMonth(dtEnd, 0) Then
Do
dtEndTmp = .Min(.EoMonth(dtBegin, 0), dtEnd)
[G6].Offset(j).Resize(, 2).Value = Array(dtBegin, dtEndTmp)
j = j + 1
dtBegin = DateAdd("d", 1, dtEndTmp)
Loop While dtBegin < dtEnd
Else
[G6].Offset(j).Resize(, 2).Value = Array(dtBegin, dtEnd)
j = j + 1
End If
End With
Next i
With [G6].CurrentRegion
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori