Расчет среднемесячных значений на основе ежедневных данных - VBA
Формулировка задачи:
Здравстуйте! Помогите, пожалуйста, написать макрос, с помощью которого можно было бы последовательно рассчитывать среднемесячные значения на основе ежедневных данных по курсу валюты. Например, в приложении - файл с данными по курсу валюты с 01.01.2015 по 31.05.2016. Нужно, чтобы макрос рассчитывал и выводил в отдельный столбец средние значения за каждый месяц из данного периода.
Заранее спасибо!
Решение задачи: «Расчет среднемесячных значений на основе ежедневных данных»
textual
Листинг программы
Private Sub Testv2() 'Excel 2007 (или старше)
Dim iMin#, iMax#, iCount&
Dim iColumn1 As Range, iColumn2 As Range
Set iColumn1 = Лист1.UsedRange.Columns(1)
Set iColumn2 = Лист1.UsedRange.Columns(2)
With Application
iMin = DateSerial(Year(.Min(iColumn1)), Month(.Min(iColumn1)), 1)
For iCount = 1 To DateDiff("m", iMin, .Max(iColumn1)) + 1
iMax = DateAdd("m", 1, iMin)
Лист2.Cells(iCount, 1) = Format(iMin, "mmmm, yyyy")
Лист2.Cells(iCount, 2) = Application.AverageIfs( _
iColumn2, iColumn1, ">=" & iMin, iColumn1, "<" & iMax)
iMin = DateAdd("m", 1, iMin)
Next
Лист2.Columns("A:B").Replace "#DIV/0!", 0 '
Лист2.Columns("A:B").Columns.AutoFit
End With
End Sub