VBA квартальные доходы - PullRequest
       21

VBA квартальные доходы

0 голосов
/ 13 марта 2019

Может кто-нибудь сказать мне функцию или кнопку VBA, которая рассчитывает квартальные доходы только на ежеквартальной основе (то есть, доход за первый квартал основан на доходах с января по март) без перекрывающихся наблюдений.

Функция, которую я сейчас использую, это просто СРЕДНЕЕ, например, возвратов с января по март, но фактическая ячейка вычисления в апреле.

Пример того, что я спрашиваю, в ссылке на изображение. Я хотел бы, чтобы функция выполнялась в течение выбранного периода времени.

enter image description here

Большое спасибо!

edit: я прошу помощи с кодом, потому что я новичок в vba, поэтому пока не могу сделать это самостоятельно.

edit2: код, который я адаптировал из класса:

 Option Explicit

 Public Sub QuarterReturns()
    Dim rng As Range
    Set rng = Range("B2")
    Dim i As Long, n As Long

    n = rng.End(x2Down).Column - rng.Row + 1
    Set rng = rng.Resize(n, 1)

    Dim returns As Variant
    returns = rng.Value2

    Dim quarter As Variant

    ReDim quarter(1 To n - 1, 1 To 1)
    For i = 1 To n - 1
        ror(i, 1) = prices(i + 1, 1) / prices(i, 1) - 2#
    Next i
    rng.Offset(1, 2).Resize(n - 1, 2).Value2 = quarter
End Sub

1 Ответ

1 голос
/ 13 марта 2019

Хорошо, первый пункт: StackOverflow не является сервисом для написания кода.Спрашивая нас: «Эй, кто-нибудь может написать мне что-то, что делает Х?»Скорее всего, вас высмеют / ругнут / и т.д.

Тем не менее, я собираюсь помочь вам с двумя стандартными блоками, которые могут помочь вам добраться до финиша самостоятельно.

Предварительно: VBA перегружен в Excel.Excel обладает удивительно мощными способностями только в формулах.В этом случае вы можете получить то, что хотите, с нулевым кодом и только одним дополнительным (вычисляемым) столбцом.Причина, по которой это, вероятно, лучшее решение, заключается в том, что документы Excel с макросами VBA, как правило, отключаются (по очень веским причинам), и становится намного сложнее увидеть, что происходит за кулисами.С помощью вычисляемого столбца тот, кто заинтересован в копании чисел, может легко увидеть, что происходит, без необходимости углубляться в код.

Building Block # 1: функции Year и Month.

Если у вас есть столбец даты (чего у вас сейчас нет - вам нужно изменить этот столбец на что-то, что фактически представляет объект даты), вы можете получить Квартал, собрав что-то вроде:

=YEAR(A1)&"-Q"&((MONTH(A1)+2)/3)

По сути, функция YEAR () получает год, а функция MONTH () - номер месяца.Оттуда я просто использую некоторые основные математические и строковые комбинации, чтобы получить такой результат, как:

2018-Q2

Building Block # 2 - CountIf /SumIf / AverageIf

В Excel есть несколько действительно замечательных функций xxxIf (), которые будут получать среднее значение / сумму / количество / и т. Д. Для диапазона, , но только для значений, соответствующих определенным критериям..

Таким образом, в вашем случае, если вы суммируете все записи 2018-Q2, вы просто используете функцию SUMIF (), чтобы сложить все значения, где запись равна '2018-Q2'.

Надеюсь, это поможет вам в вашей задаче.Если нет, я бы посоветовал вам разбить проблему на более мелкие подзадачи, отыскать эти подзадачи в Google - и если вы не можете найти что-то для определенной задачи, задайте вопрос о просто этой части.Спрашивая: «Эй, как мне сложить три ячейки в VBA?»намного лучше, чем «Эй, напиши мне эту функцию»: -)

...