Код VBA для вставки значения каждые N месяцев с даты

#vba

Вопрос:

Я пытаюсь собрать некоторый код VBA, чтобы вставлять значение в ячейку каждые n месяцев с даты начала. Я просмотрел доску и увидел несколько вопросов, которые были близки, но не совсем похожи на то, что я собираюсь сделать. Поэтому, если у меня есть дата, например, 1 июля 2021 года, я хочу, чтобы VBA вставлял значение каждые 12 месяцев с этого момента. Чтобы сделать это немного сложнее, столбцы, в которые мне нужно вставить данные, имеют формат квартала (например, 3Q21). Поэтому, если бы я писал формулу в Excel, это было бы что-то вроде: «если каждые 12 месяцев с 1 июля 2021 года» «Q»и ОКРУГЛЕНИЕ(МЕСЯЦ(новая дата)/3,0) и ТЕКСТ(новая дата,»yy»)=C5, вставьте в противном случае ничего не делайте. Я просто не совсем уверен, как это представить в VBA.

В конце поста приведен пример приведенных данных. Я бы хотел, чтобы код принимал даты в столбцах D и E, находил дату через каждый месячный интервал в столбце H, и если эта дата каждые n месяцев соответствует формату, начинающемуся в ячейке M1, вставлял значение из столбца I. И если строка 1 пуста, то ничего не делайте.

Вот код до сих пор — это позволяет мне вставлять данные в первую ячейку, которая мне нужна, но не в следующие ячейки:

 Sub process_data_1()
    Set sh = Sheet1
    
    Row = sh.Cells(Rows.Count, 1).End(xlUp).Row
    Col = sh.Cells(1, Columns.Count).End(xlToLeft).Column
    
    For i = 3 To Row
        For c = 13 To Col
            sh.Cells(i, c).ClearContents
            If sh.Cells(1, c).Text <> "" Then
                If sh.Cells(1, c).Text = sh.Range("F" amp; i).Text Then
                    sh.Cells(i, c) = sh.Range("I" amp; i).Value
                End If
                If sh.Cells(1, c).Text = sh.Range("G" amp; i).Text Then
                    sh.Cells(i, c   1) = sh.Range("I" amp; i).Value
                End If
            End If
        Next c
    Next i
End Sub
 

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

Сводная таблица

Заранее спасибо