将COUNTIF与多个日期条件和多个OR结合使用

时间:2019-03-25 15:55:20

标签: google-sheets google-sheets-formula

我正在尝试为宠物救援组织生成寄养狗/猫的报告。他们收集每种寄养动物的date_pickedup和date_returned,并希望获得历史月度报告。

我需要介绍以下情况

  • 动物拾起并在报告月份归还
  • 上个月捡拾的动物,在报告月份归还
  • 上个月捡起的动物尚未归还
  • 在报告月份选择,尚未返回

在尝试为每个月创建过滤视图失败后,我现在专注于使用谷歌工作表中一个单独标签上的COUNTIFs计算每个月的总数

=countIFS ('Animal tracking'!G4:G499,">1/31/19",'Animal tracking'!H4:H499,"<=2/28/19") 

+countIFS ('Animal tracking'!G4:G499,"<=1/31/19",'Animal tracking'!H4:H499,"<=2/28/19")

+countIFS ('Animal tracking'!G4:G499,"<=1/31/19",'Animal tracking'!H4:H499,">=3/1/19")

+countIFS ('Animal tracking'!G4:G499,">1/31/19",'Animal tracking'!H4:H499,">=3/1/19")  

我夸大了结果,因为我对第四种情况的逻辑不正确,因为它返回了当月养殖的动物

1 个答案:

答案 0 :(得分:0)

您的计划是在帮助表上使用一系列COUNTIFS公式来计算历史月度报告。我认为,这种特定方法不会起作用,主要是因为建议的公式过于复杂并且COUNTIFS无法提供所需的数据。

四级两阶段标准需要更详细的分析。同样重要的是,从公式中删除硬编码的日期(对countifs也是如此),并定义可以将公式链接到的用户定义的报告期日期。

建议的布局


Criterion totals


  • 已定义报告期。
    • 只有一个单元格需要手动输入数据-报告期的第一天。
    • 报告期的最后一天是使用eomonth()公式计算的。
  • 四个标准中的每个标准都分别进行评估,并且在每个标准内,两个阶段(提取日期,返回日期)分别进行考虑。
  • 阶段单元中的公式旨在产生TRUE / FALSE答案。
  • 为每个标准添加第三列(“匹配”)以评估阶段结果;如果两个阶段都得出TRUE,则(并且只有)“ Match”得出TRUE。
  • 在每个“匹配”列的顶部,countif对等于“ TRUE”的单元格进行计数。结果是在报告期内应用每种标准的动物数量。
  • “匹配”计数的总和是报告期内的动物总数。

数据公式(第6行及以下)可以根据需要简单地向下复制。

假设

  1. 单元格M1和N1必须设置为日期格式
  2. 数据从第6行开始并在第300行之前结束(尽管显然可以更改)。
  3. 提货日期= G列
  4. 返回日期= H列
  5. “匹配”列中“ TRUE”单元格的突出显示仅供参考;使用条件格式完成。

单元格内容和公式

M1:报告月份(开始)Manual data entry
N1:报告月份(END)=eomonth(M1,0)

M3:动物数量-报告月份=sum(O3:Z3)
问题3:总标准#1 =countif(Q6:Q300,TRUE)
T3:总标准#2 =countif(T6:T300,TRUE)
W3:总标准#3 =countif(W6:W300,TRUE)
Z3:总标准#4 =countif(Z6:Z300,TRUE)

Q4:证明#1 =COUNTA(Q6:Q300)-countif(Q6:Q300,FALSE)-Q3
T4:证明#2 =COUNTA(T6:T300)-countif(T6:T300,FALSE)-T4
W4:证明#3 =COUNTA(W6:W300)-countif(W6:W300,FALSE)-W5
Z4:证明#4 =COUNTA(Z6:Z300)-countif(Z6:Z300,FALSE)-Z6

O6:P / Up#1 =and(G6>=$M$1,G6<=$N$1)
P6:Rtn#1 =and(G6>=$M$1,G6<=$N$1)
Q6:比赛#1 =And(O6=TRUE,P6=TRUE)
R6:P / Up#2 =G6<$M$1
S6:Rtn#2 =and(H6>=$M$1,H6<=$N$1)
T6:比赛#2 =And(R6=TRUE,S6=TRUE)
U6:P / Up#3 =G6<$M$1
V6:Rtn#3 =or(H6>$N$1,isblank(H6))
W6:第3场=And(U6=TRUE,V6=TRUE)
X6:P / Up#4 =and(G6>=$M$1,G6<=$N$1)
Y6:Rtn#4 =or(H6>$N$1,isblank(H6))
Z6:匹配#4 =And(X6=TRUE,Y6=TRUE)