前月の1日を算出する

スクールでは教えてくれない、かゆい所に手が届くシリーズ:「FileMakerで、前月の1日を算出する」




データ作業時間を10分の1に、人生の充足時間を10倍に。
どうも、初級向けデータスッキリ管理コンサルタントのながにぃです^^




FileMakerは日付で検索することが多い


勤務実態調査や、製品管理調査のときなど、FileMakerで日付を指定してデータを検索・抽出することがよくあります。

いや、もうとにかく、それら以外でも日付で検索って本当に多いと思います。





その時、前月の1日を出すためにどうしているでしょうか?




検索する際には、日付フィールドに「2018/8/1...2018/9/30」などのように範囲で指定すると思います。

「2018/9/30」といった月末についてはなんとかなるものの、前月の1日ってどうやって算出するのでしょう??




前月の1日を算出する方法


正解は、


Date関数を使う、です。




まあ、正解と言いましても、正解なんてたくさんあるので、僕が思う一番スマートな算出方法、と言った方が正しいでしょう。




Date ( Month ( Get ( 日付 ) ) - 1 ; 1 ; Year ( Get ( 日付 ) ) )




これだけで前月の1日を算出できます。

一応、関数の中身をひとつひとつ解説しておきましょう。



Date関数の解説



まずDate関数は、「Date ( 月 ; 日 ; 年 )」という形でした。

月(引数といいます)には、Month関数を使っています。

「Month ( 日付 )」という形ですが、日付には「Get ( 日付 )」というさらに関数を使っています。

「Get ( 日付 )」は、今日の日付を取得します。

おや?「Month ( Get ( 日付 ) )」の後ろに「 - 1 」というのが付いていますね。

それは月からマイナス1しているということですね。

まとめてみると、



Month ( Get ( 日付 ) ) - 1 = 今日の月(つまり今月)の前月



ということになります。



同じく「Year ( Get ( 日付 ) )」は、今日の年(つまり今年)ということになります。

日本語ですべて書いてみましょうか。



Date ( Month ( Get ( 日付 ) ) - 1 ; 1 ; Year ( Get ( 日付 ) ) )

 ↓

<翻訳>
Date ( 今日の月(つまり今月)の前月 ; 1日 ; 今日の年(つまり今年) )



となります。



年またぎはどうなるのか?


ところで、上記Date関数で疑問が湧いてきますか?

もし疑問が湧いていたなら、なかなか鋭いですね!



もし今が1月だったらどうなるのか?という疑問です。



仮に今日が1/31だったとしましょう。

Get ( 日付 ) には2019/1/31が入ってきます。

その時、上述のDate関数ではどのように取得されるのでしょうか。




Date ( Month ( Get ( 日付 ) ) - 1 ; 1 ; Year ( Get ( 日付 ) ) )

 ↓

Date ( 0 ; 1 ; 2019 )



実データとしてはこのようになってしまいます。

数字上、1からマイナス1すると0ですから。

「0月」って有り得ないですよね。



じゃあどうすればいいの!?

IF文とか使って1月だったら、とかやらないといけないの??




ご安心ください!

なんとFileMakerは自動で計算してくれるのです。




分かりやすいように、カスタムダイアログボックスを使って検証してみます。




Date ( 0 ; 1 ; 2019 ) とカスタムダイアログで指定します。





実行してみます。





はい、自動で日付を計算してくれました。

0月は12月にして、2019年はちゃんと2018年になっています。





では、関数だけで試してみましょう。

Date ( Month ( Get ( 日付 ) ) - 1 ; 1 ; Year ( Get ( 日付 ) ) )






実行してみます。







本投稿をしたのが2018年9月13日ですから、前月の1日は2018年8月1日になり、合っています。







いかがでしたでしょうか。

FileMakerはなかなか出来る子だと思いませんか?ヾ(*´∀`*)ノ

是非お試しください♪








今日も良い一日を♪










0 件のコメント :

コメントを投稿

[プロモーション]