BI探検ノート

Power Query で和暦(令和5年4月1日)を日付に直す方法

約6分

濵口 翔長崎で、Power BI のつまずきを記録しています
目次
  1. 前提
  2. 手順1: ja-JP を指定して、日付に直す
  3. 手順2: 「元年」を「1年」に置き換える
  4. 日付の型にする
  5. 西暦から和暦へ戻す方向は、そのままでは、できない
  6. 公式の記載との照合
  7. この記事で確認できたこと・できていないこと
  8. 参考

確認日2026年10月24日。Power BI Desktop(日本語版、2.159.883.0)で、ダミーのデータ(7行)を使って確かめました。確認できていないことは、末尾にまとめました。

日本の業務データには、「令和5年4月1日」のような和暦の日付が、文字として入っていることがあります。Power Query では、culture に ja-JP を指定するだけで、日付に直せました。ただし、「平成元年」「令和元年」は、そのままでは、Error になりました。

結論(30秒版)

  • Date.FromText([Column1], [Culture = "ja-JP"]) で、「令和5年4月1日」が 2023/04/01、「平成30年12月31日」が 2018/12/31、「昭和64年1月7日」が 1989/01/07 になりました。「R6.3.15」も 2024/03/15 になりました。
  • 「平成元年1月8日」「令和元年5月1日」は Error でした。Text.Replace([Column1], "元年", "1年") で「1年」に置き換えると、1989/01/08 と 2019/05/01 になりました。
  • 西暦から和暦へ戻す方向は、Date.ToText の書式(ggge年M月d日)では、「西暦e年4月1日」と出て、和暦になりませんでした。

前提

ダミーの CSV(UTF-8、7行)です。

行内容
1日付(見出しの文字。昇格されていません)
2令和5年4月1日
3平成30年12月31日
4昭和64年1月7日
5平成元年1月8日
6令和元年5月1日
7R6.3.15

Power Query エディターで開きました。列は「Column1」の1列です(全部が文字なので、見出しは昇格されていません。別の記事と同じです)。

手順1: ja-JP を指定して、日付に直す

「列の追加」タブの「カスタム列」で、次の式を入れました(新しい列名は「FromText」。Error の行で、列全体が失敗しないように、try … otherwise で包みました)。

try Text.From(Date.FromText([Column1], [Culture = "ja-JP"])) otherwise "エラー"

結果は、次のとおりです。

行元の文字結果
1日付エラー
2令和5年4月1日2023/04/01
3平成30年12月31日2018/12/31
4昭和64年1月7日1989/01/07
5平成元年1月8日エラー
6令和元年5月1日エラー
7R6.3.152024/03/15

昭和64年1月7日は、昭和の最後の日(1989年1月7日)で、合っていました。「R6.3.15」の「R」(令和)も、通りました。

手順2: 「元年」を「1年」に置き換える

元年の行(5、6行目)が、Error になりました。「元年」を「1年」に置き換えてから、日付に直しました。

try Text.From(Date.FromText(Text.Replace([Column1], "元年", "1年"), [Culture = "ja-JP"])) otherwise "エラー"

和暦を日付に直した表。列は、Column1、FromText(元年のままの結果)、元年対応(元年を1年に置き換えた結果)。元年対応は、令和5年が2023/04/01、平成30年が2018/12/31、昭和64年が1989/01/07、平成元年1月8日が1989/01/08、令和元年5月1日が2019/05/01、R6.3.15が2024/03/15

「平成元年1月8日」が 1989/01/08、「令和元年5月1日」が 2019/05/01 になりました。どちらも、元号の初日(平成は1989年1月8日、令和は2019年5月1日)で、合っています。

日付の型にする

式の結果は、見た目は日付でしたが、Text.From で、文字にして比べたものです。実際の仕事では、Text.From を外して、列を日付型にします。

try Date.FromText(Text.Replace([Column1], "元年", "1年"), [Culture = "ja-JP"]) otherwise null

この式の列は、日付の値(2023/04/01 など)が、右寄せで出ました。1行目の「日付」(見出しの文字)は、null になりました。

西暦から和暦へ戻す方向は、そのままでは、できない

Date.ToText に、書式 ggge年M月d日 と、ja-JP を指定しました。

Date.ToText(日付, [Format = "ggge年M月d日", Culture = "ja-JP"])

結果は、「西暦e年4月1日」でした(ggg が「西暦」、e が、文字の「e」になりました)。culture を ja-JP_td にしても、同じでした。

西暦から和暦へ戻そうとした表。和暦A(ja-JP)と和暦B(ja-JP_td)の列は、どちらも「西暦e年4月1日」「西暦e年12月31日」のように出ている

和暦に戻したいときは、日付が、令和(2019年5月1日以降)、平成(1989年1月8日以降)、昭和(1926年12月25日以降)のどれかを、if で分けて、年から基準の年を引く式(令和は 2018、平成は 1988、昭和は 1925)を、自分で書く形になると思います。この式は、この記事では、実機で確かめきれていません。

公式の記載との照合

Microsoft Learn の「Date.FromText」(英語版、確認日 2026年10月24日)と、私の観察を、突き合わせました。

  • options に Culture を渡せる、と書かれています。Format を省略(または null)すると、「できるだけ解釈する(best effort)」形式で読み、Culture が、既定の形式を決める、と書かれています。私の式は、Format を省略して、Culture だけ指定したので、この説明と合っています。
  • 公式の例には、ar-SA(ヒジュラ暦)で「1400」を読む例があり、西暦以外の暦も、culture で扱えることが分かります。
  • 和暦(元号)を読めること、「元年」が通らないことは、公式のページには、書かれていませんでした。私の画面で見えた動きです。

この記事で確認できたこと・できていないこと

確認日: 2026年10月24日。Power BI Desktop(Windows、日本語版、2.159.883.0、未サインイン)、ダミーのデータ7行。

確認できたこと

  • Culture = "ja-JP" で、令和・平成・昭和の年月日が、日付に直ること(昭和64年1月7日を含む)
  • 「R6.3.15」の形も通ること
  • 「元年」が Error になり、「1年」に置き換えると通ること
  • Date.ToText の書式では、和暦に戻らないこと

確認できていないこと

  • 明治・大正の和暦、「H30.4.1」「S64.1.7」など、ほかの略称の形
  • 全角の数字を使った和暦(「令和5年」)。先に半角にそろえる必要があるかもしれません
  • 元号の境目(昭和64年1月8日のように、存在しない日)の動き
  • 西暦から和暦に戻す式(上の説明の、if で分ける方法)
  • Power BI サービスでの動作、英語版の Windows や、別の既定の culture での動作

参考

この記事で使った用語

Power BI Desktop
Windows で動く、レポートを作るためのアプリです。データの取り込みとモデルの作成、レポートの作成に向いています。

用語集をすべて見る