You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets:按每日各小时统计HEATING出现次数

解决Google表格中按每日小时统计HEATING出现次数的问题

方案一:使用QUERY函数(一步到位)

直接用QUERY函数完成分组统计,无需辅助列,适合快速实现需求:

=QUERY(A:B, 
  "SELECT DATE(A), HOUR(A), COUNT(A) 
   WHERE B = 'HEATING' 
   GROUP BY DATE(A), HOUR(A) 
   ORDER BY DATE(A), HOUR(A)", 
  1)

参数说明:

  • DATE(A):从时间戳列(A列)提取日期部分
  • HOUR(A):从时间戳列提取小时数
  • WHERE B = 'HEATING':筛选出消息列(B列)为HEATING的行
  • GROUP BY DATE(A), HOUR(A):按日期+小时维度分组
  • COUNT(A):统计每组内HEATING的出现次数
  • 最后一个参数1表示数据区域包含表头行

如果需要将日期和小时合并为更直观的格式(如2024-05-20 14:00),可以修改QUERY语句:

=QUERY(A:B, 
  "SELECT CONCAT(DATESTRING(A), ' ', TEXT(HOUR(A), '00')&':00'), COUNT(A) 
   WHERE B = 'HEATING' 
   GROUP BY DATE(A), HOUR(A) 
   ORDER BY DATE(A), HOUR(A)", 
  1)

方案二:辅助列+UNIQUE+COUNTIFS组合

如果更习惯分步操作,可通过以下步骤实现:

  1. 添加辅助列:在C2单元格输入公式,下拉填充,提取格式化的“日期+小时”字符串(解决你之前用LEFT提取的问题——日期格式的时间戳是数字存储,LEFT提取的是数字字符而非日期字符串):
=TEXT(A2, "yyyy-MM-dd HH:00")
  1. 提取唯一分组项:在E2单元格输入公式,获取所有出现过HEATING的日期+小时组合:
=UNIQUE(FILTER(C:C, B:B="HEATING"))
  1. 统计次数:在F2单元格输入公式,下拉填充,统计每个分组内HEATING的出现次数:
=COUNTIFS(C:C, E2, B:B, "HEATING")

为什么之前的方法失效?

你用LEFT提取时间戳前13位的问题在于:Google表格中日期时间类型的单元格实际存储为数字(代表从1900年起的天数+小数时间),LEFT提取的是这个数字的前13位,而非你看到的日期字符串的前13位,导致分组逻辑错误。改用TEXT函数格式化日期时间为固定格式的字符串,才能准确按日期+小时分组。

内容的提问来源于stack exchange,提问作者Joe S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:19:51