• ベストアンサー

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)) 教えていただけますと大変助かります。どうぞよろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率72% (453/623)
回答No.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

cosmopolitan
質問者

お礼

回答いただき、ありがとうございます。 タイムインテリジェンス関数は、閏年で月末の日付が異なっても対応するという説明を見たのですが、回答いただき、そもそも仕様として難しいのかと思いました。

Powered by GRATICA

その他の回答 (2)

  • WDY
  • ベストアンサー率27% (136/492)
回答No.2

回答№1です 1カ月前の月末:=CALCULATE([月末],DATEADD('カレンダーテーブル'[日付],-1,MONTH)) を入力しているんですよね DATEADD('カレンダーテーブル'[日付],-1,MONTH) としているんですよね? 'カレンダーテーブル'[日付]は 2023/3/31(yyyy/mm/ddフォーマット) ですよね DateAdd 関数の引数と戻り値 の DateAdd(単位, 加算時間, 日時) の 引数「単位」には 引数「加算時間」の単位を表す文字を指定します と書かれています。 「単位を表す文字を指定します」です。

cosmopolitan
質問者

補足

回答いただき、ありがとうございます。 いただいた内容につきましては、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)
回答No.1

DATEADD関数の第一引数は yyyy/mm/ddフォーマットが対応されていないからでは無いでしょうか? https://www.tipsfound.com/vba/05dateadd-vba

cosmopolitan
質問者

補足

回答いただき、ありがとうございます。 URLを拝見したのですが、問題点が分かりませんでした。 2つのテーブルは、データモデル内で「日付」型にしています。そして、両テーブルの日付列でリレーションしています。 「yyyy/mm/ddフォーマットが対応されていない」とはどのような意味で、どのようにすればよいでしょうか?

関連するQ&A