我正在尝试创建一个excel函数,用于对一天中的时间进行分类。 我有一列DateTimes,格式:3/3/2017 13:30(但如果需要可以更改格式)。我需要第二栏宣布“开启”时间为晚上9点至早上5点,“上午”为上午5点至上午9点,“BH”为上午9点至下午5点,“PM”为下午5点至晚上9点。 。我也需要周末,但我想我可以手动拉它们。
结果看起来像(我有第1列,需要计算第2列):
ogp_remote_servers
答案 0 :(得分:3)
答案 1 :(得分:2)
我们可以通过仅测试每个范围的一端来保存几个字符。一旦我们测试了一个不到早上5点的值,我们就不再需要测试它是否大于早上5点。 (AND(
语句不是必需的。)
=IF(HOUR(A1)<5,"ON",IF(HOUR(A1)<9,"AM",IF(HOUR(A1)<17,"BH",IF(HOUR(A1)<21,"PM","ON"))))
如果你想检测周末,请将整个事情包裹在周末测试中。提出了两种方法:
=IF(weekday(a1,2)>5,"WEEKEND","THE WHOLE THING")
weekday(
的第一个参数显然是我们测试的日期。周二的第二个力量是本周的第一天,这使得Sat&amp;太阳是最后两个。
结合其他人,我们会得到:
=IF(weekday(a1,2)>5,"WEEKEND",IF(HOUR(A1)<5,"ON",IF(HOUR(A1)<9,"AM",IF(HOUR(A1)<17,"BH",IF(HOUR(A1)<21,"PM","ON")))))
=IF(LEFT(TEXT(A1,"ddd"),1)="S","WEEKEND","THE WHOLE THING")
这是有效的,因为TEXT(A1,"ddd")
将日期格式化为三个字母的星期几。至少在英语中,两个周末都以“S”开头,我们使用left(
来获取第一个字母。
总之,它最终看起来像:
=IF(LEFT(TEXT(A1,"ddd"),1)="S","WEEKEND",IF(HOUR(A1)<5,"ON",IF(HOUR(A1)<9,"AM",IF(HOUR(A1)<17,"BH",IF(HOUR(A1)<21,"PM","ON")))))
答案 2 :(得分:2)
只是为了表现出不同的方式:
=IF(NETWORKDAYS(A2,A2),CHOOSE(SUM((({"5:00";"9:00";"17:00";"21:00"}*1)<MOD(A2,1))*1)+1,"ON","AM","BH","PM","ON"),"WEEKEND")
这是一个数组公式,必须用 ctrl + shift + 输入确认。
可以随意扩展而不会遇到支架限制的麻烦。
也像斯科特的答案一样:这适用于17:43
之类的时间。 ;)
答案 3 :(得分:1)