如果范围包含给定时间段内的日期,则运行代码

时间:2016-08-17 12:21:23

标签: vba date if-statement

我想提出一个代码,检查B:B是否包含2015年1月1日到2015年12月31日之间的日期。如果符合条件,那么我希望代码运行以下代码:

Range("m2").Formula = "=AVERAGEIFS(I:I,B:B,"">=""&DATE(2015,1,1),B:B,""<=""&DATE(2015,12,31),G:G,""=FALSE"")" 

如果不符合标准,我不需要采取进一步行动。我还需要以一种方式引用句点,以使代码能够使用所有日期和区域格式。

对此事的任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

以下代码应该完成这项工作:

Sub CheckDate()

Dim MyRange As Range: Set MyRange = Range(Cells(1, 2), Cells(Rows.Count, 2).End(xlUp))
Dim DateCell As Range

    For Each DateCell In MyRange

        If Year(DateCell) = 2015 Then

            DateCell.Offset(0, 11).Formula = "=AVERAGEIFS(I:I,B:B,"">=""&DATE(2015,1,1),B:B,""<=""&DATE(2015,12,31),G:G,""=FALSE"")"

        End If

    Next DateCell

End Sub

我将MyRange从B1设置为最后一个非空行,然后我通过它进行For Each循环并检查日期的年份是否等于2015,如果是我申请你的公式使用.Offset(0, 11)保持在同一行(0)并将11列向右移动(11),以便移动到同一行中的列M.