首页 > 解决方案 > 从日期开始每 N 个月粘贴一个值的 VBA 代码

问题描述

我正在尝试将一些 VBA 代码放在一起,以便从开始日期起每 n 个月将一个值粘贴到一个单元格中。我在董事会中进行了搜索,发现一些问题很接近,但与我想要做的不完全一样。因此,例如,如果我的日期是 2021 年 7 月 1 日,我希望 VBA 从那以后每 12 个月粘贴一个值。为了让它更复杂一点,我需要粘贴数据的列是季度格式(如 3Q21)。因此,如果我在 Excel 中编写公式,它将类似于:“如果从 2021 年 7 月 1 日起每 12 个月”“Q”&ROUNDUP(MONTH(new date)/3,0)&TEXT(new date,"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" & i).Text Then
                    sh.Cells(i, c) = sh.Range("I" & i).Value
                End If
                If sh.Cells(1, c).Text = sh.Range("G" & i).Text Then
                    sh.Cells(i, c + 1) = sh.Range("I" & i).Value
                End If
            End If
        Next c
    Next i
End Sub

以下是帮助我的问题更有意义的数据

电子表格

提前致谢

标签: vba

解决方案


推荐阅读