0

現在、Office 2003 を使用してローリング フォーキャストを作成しています。特定の間隔で自動的に入力する必要がある時間間隔 (年/月から年/月) の開始点と終了点があります (ボタンまたはそのようなものに割り当てることができるマクロが必要です)。私は vB のコーディング方法を知りません。また、これらの行に沿って何かを記録する方法を定式化するのに苦労しています。だから、私はいくつかの助けを使うことができました。

まず、間隔 201308-201412 が必要です

毎月、過去の月を削除する必要があります (たとえば、翌月の間隔は 201309-201412 になります)

間隔の開始が 201404 になると、間隔の終了は 201512 にジャンプします。

このプロセスは続き、過去の月は間隔の最初から削除されます。

201504 が間隔の開始になると、201612 が間隔の終了になります (先月削除される前は 201512 でした)。

また、月によって行が削除・追加されるので、データが重複しないように行を再度挿入する方法はありますか?(私はTM1も使用しています。citrix/tm1に精通している場合は、これらの日付で移動するDBRW式があります)

他に何か説明できることがあれば教えてください。

ありがとうございました!

4

1 に答える 1

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
于 2013-07-23T20:10:43.443 に答える