首页 > 解决方案 > 在设定的时间之间创建日期/时间数组

问题描述

我正在尝试创建ARRAY日期/时间的水平升序,但仅包括我指定的时间(上午 8:00-下午 5:00)。我尝试过使用NETWORKDAYS.INTL,但这似乎更困难且不可避免,并没有按照我的方式呈现准确的结果(可能是错误的)。

February 1, 2020 8:00AM
February 1, 2020 9:00AM
[all hours in between]
February 1, 2020 4:00PM
February 1, 2020 5:00PM

February 2, 2020 8:00AM
[...]
February 2, 2020 5:00PM

February 3, 2020 8:00AM

我可以在第一天做公式,但我在添加接下来的几天时磕磕绊绊。

这是我目前所拥有的:

=IF(
  AND(J2>=$E1+$B1,J2<$E1+$C1),
  J2+(1/24),
  J2-$C1+$B1
)

J2 = 数组中的第一个日期=EOMONTH(TODAY(),-1)+1+[8:00AM]

E1 = 每月的第一天=EOMONTH(TODAY(),-1)+1

B1 = 开始时间8:00AM

C1 = 结束时间5:00PM

这是我的床单。我的公式在 K2 中(当前将公式拖过行,但单个公式将是理想的。)

编辑:在玩过它并发现ROUNDDOWN提取日期之后,我想出了这个:

=IF(
  AND(J2>=ROUNDDOWN(J2,0)+$B1,J2<ROUNDDOWN(J2,0)+$C1),
  J2+(1/24),
  ROUNDDOWN(J2,0)+1+$B1
)

标签: arraysdatetimegoogle-sheetsgoogle-sheets-formulaarray-formulas

解决方案


尝试:

=ARRAYFORMULA(E1-1+
 SPLIT(QUERY(TRANSPOSE(REPT(TRANSPOSE(ROW(INDIRECT("A1:A"&
 DAYS(EOMONTH(E1, 3), E1))))&" ", 
 HOUR(C1)-HOUR(B1)+1)),,9^9), " ")+
 SPLIT(REPT(QUERY((ROW(INDIRECT("A1:A"&
 HOUR(C1)-HOUR(B1)+1))+HOUR(B1)-1)/24&" ",,9^9), 
 DAYS(EOMONTH(E1, 3), E1)), " "))

将跨度从 3 个月更改为一个 将这两个替换3为两个1

0


推荐阅读