使用具有多个日期条件和多个OR的COUNTIF

问题描述 投票:0回答:1

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

我需要涵盖以下场景

  • 动物在报告月份回升并返回
  • 动物在上个月回升,在报告月份返回
  • 动物在前一个月回升,尚未归还
  • 在报告月份回升,尚未归还

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

=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")  

我对结果进行了大量计算,因为我对第四种情况的逻辑不正确,因为它返回了当月培育的动物

google-sheets google-sheets-formula
1个回答
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) Q3:总标准#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)

© www.soinside.com 2019 - 2024. All rights reserved.