如何在Google Sheets中自动统计特定月份对应分类的案例数量
原有公式错误原因
- 列对应错误:第一个工作表的日期列是B列(签发日期),原公式where条件误用C列(单位)作为日期筛选维度,因此无法匹配到符合条件的数据
- QUERY语法错误:使用group by子句时,select后所有非聚合字段必须全部出现在group by列表中,原语句select了C、D、F三个字段但仅group by C,不符合语法规则
- 日期兼容问题:QUERY中直接写入字符串格式的日期,可能和表格的日期格式不匹配,建议使用标准date()函数包裹日期
核心说明
无需为每个月单独新建工作表,可通过固定月份公式、动态月份统计两种方式实现自动统计,手机端可直接输入公式使用。
具体实现方案
方案1:固定统计指定月份数据
以下公式中需将Sheet1、Sheet2替换为你实际使用的工作表名称,日期可按需调整。
第一个工作表(按签发日期统计)
统计「单位+分类」维度的案例数量:=QUERY(Sheet1!$B:$F, "SELECT C, F, COUNT(B) WHERE B >= date '2021-09-01' AND B <= date '2021-09-30' GROUP BY C, F LABEL COUNT(B) '案例数量'", 1)
仅统计各分类总案例数量:=QUERY(Sheet1!$B:$F, "SELECT F, COUNT(B) WHERE B >= date '2021-09-01' AND B <= date '2021-09-30' GROUP BY F LABEL COUNT(B) '案例数量'", 1)
第二个工作表(按入住时间统计,若需按退房时间统计可将公式中所有B替换为L)
统计「单位+分类」维度的入住案例数量:=QUERY(Sheet2!$B:$L, "SELECT C, I, COUNT(B) WHERE B >= date '2021-09-01' AND B <= date '2021-09-30' GROUP BY C, I LABEL COUNT(B) '入住案例数量'", 1)
方案2:动态月份统计(无需修改公式,调整参数即可切换统计月份)
- 在统计区域的空白单元格分别填入统计年份和月份,比如A1填
2021、B1填9 - 输入对应公式即可自动匹配月份生成统计结果:
=QUERY(Sheet1!$B:$F, "SELECT C, F, COUNT(B) WHERE B >= date '"&A1&"-"&TEXT(B1,"00")&"-01' AND B <= date '"&A1&"-"&TEXT(B1,"00")&"-"&DAY(EOMONTH(DATE(A1,B1,1),0))&"' GROUP BY C, F LABEL COUNT(B) '案例数量'", 1)
方案3:跨两个工作表合并统计
如果需要将两个表的案例数据合并统计,可使用如下公式:=QUERY({FILTER(Sheet1!B:C, Sheet1!B:B<>"", ROW(Sheet1!B:B)>1), Sheet1!F:F;FILTER(Sheet2!B:C, Sheet2!B:B<>"", ROW(Sheet2!B:B)>1), Sheet2!I:I}, "SELECT Col2, Col3, COUNT(Col1) WHERE Col1 >= date '2021-09-01' AND Col1 <= date '2021-09-30' GROUP BY Col2, Col3 LABEL COUNT(Col1) '总案例数量'", 1)
异常排查
如果公式运行仍返回空值,可选中所有日期列,依次点击「格式→数字→日期」,确认日期列是标准日期格式而非文本格式即可。
内容的提问来源于stack exchange,提问作者Danion

