Excel - 使用COUNTIFS计算多个工作表中特定范围内的日期

时间:2015-08-03 18:30:50

标签: excel vba excel-vba

我试图“计算”除了第一个“摘要”表单之外的多个工作表上某个日期范围之间的日期数。按照我使用过的其他例子:

=COUNTIFS('CWP-A1-Inst'!S7:S51,">=2015-09-13" _ 
         ,'CWP-A1-Inst'!S7:S51,"<=2015-09-19") _ 
+ COUNTIFS('CWP-A2-Inst'!V7:V51,">=2015-09-13" _ 
          ,'CWP-A2-Inst'!V7:V51,"<=2015-09-19") _ 
+ COUNTIFS('CWP-A3-Inst'!T7:T50,">=2015-09-13" _ 
          ,'CWP-A3-Inst'!T7:T50,"<=2015-09-19")

这种方法有效,但我有28张,75个日期范围(每周从周日开始,周六结束一年以上)和7个成本代码来填补这一点。手动更改这些都需要永远。

我还尝试了另一个例子中建议的UDF - Excel - Using COUNTIF/COUNTIFS across multiple sheets/same column - 但我无法弄清楚如何在示例中添加第二组标准,因为我不是VB专家。

提前感谢任何建议。

2 个答案:

答案 0 :(得分:0)

尝试使用此mod发布的UDF链接。

编辑:代码已修复,现在可以正常使用。我还添加了&#34;&lt; =&#34;进入函数,所以你需要提供的只是输入日期,而不是其他任何内容。

Function myCountIf(rng As Range, startDate as Variant, endDate as Variant) As Long
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        myCountIf = myCountIf + WorksheetFunction.CountIf(ws.Range(rng.Address), "<=" & endDate) - WorksheetFunction.CountIf(ws.Range(rng.Address), "<=" & startDate)
    Next ws
End Function

对于startDate和endDate输入您的条件,例如= myCountIf(A:A,&#34;&gt; = 2015-09-13&#34;,&#34;&lt; = 2015-09-19&#34; )。

答案 1 :(得分:0)

当数据处于良好结构时,更容易获得有关数据的摘要信息。

如果您有一个很长的列表,您可以使用数据透视表获益。有关示例,请参阅here

如果您要将数据带到一个长列表中,这将是一个良好的开端(如果现有表具有相同的结构)。

哈维