Excel:如果非连续日期,则插入空白行

时间:2016-11-25 17:05:36

标签: excel vba excel-vba

我们有一个每31个小时运行一次的流程,并且希望在Excel 2010电子表格中有一个列,该列反映了该流程在未来一年中每天运行的时间和日期,例如

开始日期(单元格:A1):

10/31/2016 1:00

11/1/2016 8:00

11/2/2016 15:00

11/3/2016 22:00

2016年11月5日5:00

2016年11月6日12:00

2016年11月7日19:00

2016年11月9日2:00

11/10/2016 9:00

11/11/2016 16:00

11/12/2016 23:00

11/14/2016 6:00

我目前正在使用公式:A2 = A1 +(31/24)来填充似乎正常工作的列中的日期和时间。我需要在不连续的日子之间插入一个空白行(为了突出显示这一事实,以便操作员更容易阅读而不是在错误的时间发起过程!)这就是困难所在。我假设我需要一个单独的VBA函数来逐步浏览每个单元格并比较前一个单元格中的日期日期(忽略时间值。),如果日期大于1(如同第二天那样)。插入一个空行。

我正在寻找以下方案的解决方案,但我正在努力解决这个问题,并希望得到任何人能够提供的任何指导/帮助。

非常感谢

1 个答案:

答案 0 :(得分:5)

您不需要VBA功能,可以使用

功能完成
A3 = IF(A2="",A1+31/24, IF(INT(A2+31/24)=INT(A2)+1,A2+31/24,""))

*为了实现这一目标,您必须手动填充单元格A1A2

您可以使用INT()函数获取DateTime字段的日期部分,因此通过检查{{},检查添加31小时是否会在序列中留下1天的间隔变得很简单1}}。

所以,解释一下这个部分的功能

INT(A2+31/24) = INT(A2)+1

将检查日期是否连续,如果是,它将填充IF(INT(A2+31/24)=INT(A2)+1,A2+31/24,"") 。如果没有,它将留空。

外部DateTime检查上面的单元格是否为空白。如果是,该函数将使用上面的那个。