滚动日期宏

时间:2013-07-23 19:33:42

标签: excel vba excel-vba citrix cognos-tm1

我目前正在使用Office 2003创建滚动预测。我有一个时间间隔(年/月到年/月)的起点和终点,我需要以一定的间隔自动填充(我只需要一个可以分配给按钮的宏或那种类型的东西)。我不知道如何编写vB代码,而且我在设法制定一种可以记录这些内容的方法时遇到了麻烦。所以,我可以使用一些帮助。

首先,我需要间隔201308-201412

每个月我都需要放弃过去一个月(例如下个月,间隔期将变为201309-201412)

一旦间隔的开始变为201404,间隔的结束将跳至201512。

此过程将继续,过去的月份将从间隔开始时删除。

一旦201504成为区间的开始,201612就会成为区间的结束(在过去一个月被删除之前的201512)。

此外,由于线路将根据月份被删除/添加,是否有任何方法可以再次插入线路以避免重叠数据? (我也使用TM1,如果您熟悉citrix / tm1,我会使用这些日期的DBRW公式)

如果我能解释其他任何内容,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你不需要宏。 一些嵌套的内置函数可以。

开始间隔的公式:

=TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())+1,1),"yyyymm")

这基本上会返回从今天起的下个月格式为“yyyymm”的日期

结束间隔的公式:

=IF(MONTH(TODAY())>4,TEXT(DATE(YEAR(TODAY())+1,12,1),"yyyymm"),TEXT(DATE(YEAR(TODAY()),12,1),"yyyymm"))

检查今天的月份是否大于4,如果是这样,将结束时间间隔移到明年的12月,否则将其保留为今年的12月。

这里使用了几个公式:

TEXT(value,format) - this returns a formatted text
DATE(YEAR,MONTH,DAY) - this returns a date
YEAR(date_serial) - this returns the year from a date serial
MONTH(date_serial) - this returns the month from a date serial
DAY(date_serial) - this returns the day from a date serial
IF(logic,true,false) - if statement in Excel
TODAY() - this returns today's date serial