计算半年度时间的分子和分母

时间:2012-11-29 15:42:34

标签: vba excel-vba excel-2007 excel

嗨我有一个用于计算四分之一费率的ocde。要计算从日期开始的季度,我在代码中有“YYYYq”。任何人都可以帮助用半年时间段替换季度。我试过“YYYY / 2”,但是这样做了。我也试过使用“YYYYmm”,但也没用。

我希望半年期间有分子和分母。例如:如果访问日期是2012年1月1日,那么这将在今年上半年计算。 2012年1月1日至2012年6月30日的所有文件将在第一个半年期间推出,2012年6月30日 - 12月31日将在第二个半年的时间段内计算。

非常感谢你的时间和建议。

   Function Visits(target_timeframe)

        Target_Quarter = Format(target_timeframe, "YYYYq")

        For vRow = 2 To 2000

            entered_timeframe = Format(Sheets("sheet1").Range("A" & vRow).Value, "YYYYq")

            Entered_Visits = Sheets("sheet1").Range("B" & vRow).Value 'equals value of column

            If (entered_timeframe = Target_Quarter) Then
                denominator = denominator + 1
                If (Entered_Visits > 0) Then
                    numerator = numerator + 1
                End If
            End If
        Next

        If denominator > 0 Then
            Average = numerator / denominator
        Else
            Average = "N/A"
        End If

    End Function

2 个答案:

答案 0 :(得分:1)

测试格式的“q”部分以查看它是1还是2,并相应地设置字符串。

Target_Half = Format(target_timeframe, "YYYY") & _
     IIf(Format(target_timeframe, "q") <= "2", "/1", "/2")

这将使Target_Half在今年上半年成为YYYY/1,在下半年成为YYYY/2

答案 1 :(得分:0)

半年没有自定义日期格式,因此您必须自己构建字符串。用以下函数替换函数中的第一行:

Target_Quarter = Year(target_timeframe) & IIf(Month(target_timeframe) <= 6, 1, 2)

你必须在循环中的第一行做类似的事情。