Google Sheets按日期范围统计设备各月维修天数 适配动态列表问询
适配动态列表的实现方案
首先假设你的原始数据排布为:
- A列:设备名称,B列:维修开始日期,C列:维修结束日期,第1行是表头,实际数据从第2行开始
通用公式(自动适配新增条目)
直接把下面的公式粘贴到你要输出结果的首个空白单元格即可,后续新增维修条目时会自动扩展统计结果,无需手动修改公式范围:
=ARRAYFORMULA( LET( // 自动读取所有填写了起止日期的有效条目,自动跳过空行 valid_data, FILTER(B2:C, B2:B<>"", C2:C<>""), start_col, INDEX(valid_data,,1), end_col, INDEX(valid_data,,2), // 批量生成所有维修条目覆盖的完整日期序列 all_dates, TOCOL( BYROW( SEQUENCE(ROWS(valid_data)), LAMBDA(i, SEQUENCE(INDEX(end_col,i)-INDEX(start_col,i)+1,1,INDEX(start_col,i))) ), 2 ), // 按月聚合统计总维修天数 QUERY( {EOMONTH(all_dates,0), all_dates}, "SELECT Col1, COUNT(Col2) GROUP BY Col1 LABEL Col1 '月份', COUNT(Col2) '月度维修天数' FORMAT Col1 'YYYY年MM月'", 0 ) ) )
示例数据适配效果
你给出的笔记本维修记录(2021/8/29到2021/9/10)代入公式后,会自动输出如下结果:
| 月份 | 月度维修天数 |
|---|---|
| 2021年08月 | 2 |
| 2021年09月 | 10 |
调整说明
- 如果你的起止日期不是放在B、C列,只需修改
FILTER(B2:C, B2:B<>"", C2:C<>"")里的列范围即可 - 如果需要按单设备单独统计,只需在QUERY语句里增加设备列的分组规则即可
- 公式默认忽略起止日期填写不完整的条目,新增记录只要填完起止日期就会自动纳入统计
内容的提问来源于stack exchange,提问作者Danion
相关产品推荐
相关产品推荐

