- ベストアンサー
DATEADD関数(Excel,PoweBI)
Excel、Power Biで使用するDATEADD関数について教えてください。 添付の画像の通り、元のデータは2つあり、日付でリレーションしています。 ・元データ ※月末の米ドル ・カレンダーテーブル(日付を日付テーブルとしてマーク) DATEADD関数にて、1か月前のデータを取得したいです。 しかし、画像の一番右側のように、カレンダーテーブルの「日付」で集計すると、上手くいきません。 ・2023/5/30や7/30など、元データにない日付に、なぜか1か月前の数値が入ってしまう箇所がある。 ・DATEADD関数の列は、月末がブランクになる箇所がある。 一方、画像の右から2つめの通り、「年月」で集計すると希望通りの結果になるのですが、「日付」集計して同じ結果にならないのはなぜでしょうか。 DAX式は下記の通りです。どこが問題でしょうか。 月末:=sumx('元データ','元データ'[USD月末] 1カ月前の月末:=CALCULATE([月末],DATEADD('カレンダーテーブル'[日付],-1,MONTH)) 教えていただけますと大変助かります。どうぞよろしくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
識者ではないので推測になりますが DATEADD関数では、1ヶ月前の同じ日を計算しようとするのだと思われます。 ・5/30の1ヶ月前 ⇒ 4/30 ・4/30の1ヶ月前 ⇒ 3/30 ⇒ データなし ・5/31の1ヶ月前 ⇒ 4/31だけどありえないので4/30に補正? 月末は30だったり31だったりするので、単純な1ヶ月前ではうまくいかないということだと思います。 Excelには月末を求めるEOMONTH関数がありますので、これで EOMONTH(日付,-1) のように前月末の日付を出すのが一番簡単と思います。 DAXがよくわかっていませんが、EOMONTHも使えるように思えます。 https://learn.microsoft.com/ja-jp/dax/eomonth-function-dax
その他の回答 (2)
- WDY
- ベストアンサー率27% (136/492)
回答№1です 1カ月前の月末:=CALCULATE([月末],DATEADD('カレンダーテーブル'[日付],-1,MONTH)) を入力しているんですよね DATEADD('カレンダーテーブル'[日付],-1,MONTH) としているんですよね? 'カレンダーテーブル'[日付]は 2023/3/31(yyyy/mm/ddフォーマット) ですよね DateAdd 関数の引数と戻り値 の DateAdd(単位, 加算時間, 日時) の 引数「単位」には 引数「加算時間」の単位を表す文字を指定します と書かれています。 「単位を表す文字を指定します」です。
補足
回答いただき、ありがとうございます。 いただいた内容につきましては、VBAの場合専用でしょうか。 私は下記のdax関数のdataaddについてのご質問でした。dax関数では、日付は文字列では、できませんでした。 https://learn.microsoft.com/ja-jp/dax/time-intelligence-functions-dax https://learn.microsoft.com/ja-jp/dax/dateadd-function-dax
- WDY
- ベストアンサー率27% (136/492)
DATEADD関数の第一引数は yyyy/mm/ddフォーマットが対応されていないからでは無いでしょうか? https://www.tipsfound.com/vba/05dateadd-vba
補足
回答いただき、ありがとうございます。 URLを拝見したのですが、問題点が分かりませんでした。 2つのテーブルは、データモデル内で「日付」型にしています。そして、両テーブルの日付列でリレーションしています。 「yyyy/mm/ddフォーマットが対応されていない」とはどのような意味で、どのようにすればよいでしょうか?
お礼