如何使用Google Sheets的QUERY函数添加按时间区间赋值的新列
用QUERY函数为Google Sheets时间数据分配时段类别
假设你的时间数据在A列(A1为表头,数据从A2开始),可以使用以下QUERY函数生成对应时段的新列:
=QUERY(A:A, "SELECT A, CASE WHEN TIME(A) >= TIME(6,0,0) AND TIME(A) < TIME(12,0,0) THEN '上午' WHEN TIME(A) >= TIME(12,0,0) AND TIME(A) < TIME(18,0,0) THEN '下午' WHEN TIME(A) >= TIME(18,0,0) AND TIME(A) <= TIME(23,59,59) THEN '晚上' ELSE '夜间' END WHERE A IS NOT NULL LABEL CASE WHEN TIME(A) >= TIME(6,0,0) AND TIME(A) < TIME(12,0,0) THEN '上午' WHEN TIME(A) >= TIME(12,0,0) AND TIME(A) < TIME(18,0,0) THEN '下午' WHEN TIME(A) >= TIME(18,0,0) AND TIME(A) <= TIME(23,59,59) THEN '晚上' ELSE '夜间' END '时段'", 1)
公式说明
SELECT A:保留原始时间列数据CASE WHEN ... END:核心判断逻辑,按时间区间返回对应时段:- 上午:时间落在6:00:00(含)到12:00:00(不含)之间
- 下午:时间落在12:00:00(含)到18:00:00(不含)之间
- 晚上:时间落在18:00:00(含)到23:59:59(含)之间
- 夜间:剩余所有时间(0:00:00到5:59:59)
WHERE A IS NOT NULL:过滤空行,避免生成无效数据LABEL ... '时段':为新生成的列设置表头名称- 末尾的
1:表示数据源包含表头行(如果你的数据没有表头,改为0即可)
注意事项
- 若时间数据不在A列,将公式中所有
A替换为对应列标(如B列则替换为B) - 确保时间列的单元格格式为时间格式,如果是文本格式,需将
TIME(A)替换为TIMEVALUE(A)来转换格式 - 边界值处理:12:00:00会被归为下午,6:00:00归为上午,00:00:00归为夜间
内容的提问来源于stack exchange,提问作者Dharmesh
相关产品推荐
相关产品推荐

