[PowerQuery]エラーになる日付を除く
2021-02-07
はじめに
年,月,日が別セルに入っているデータをクエリで読込んで,日付型のデータに変えてひとつのセルに入れる.
元データ

変換後データ

11月31日は存在しないので、変換後データからは除外する。
結論
変換できない日付はnullにして、フィルタでnullを除く。Errorのままだとフィルタで除けない。 nullに変換する方法は以下の2通り。
- 日付に変換する際に
try ~ otherwiseを使い,変換できない値はnullにする - 一旦全部日付に変換して,
Errorをnullにする
元データの準備
年、月、日が別セルに入っているデータを想定する。存在しない日(11月31日)も入っている。

元データを読込む
元データを選択した状態で、クエリを使ってデータを読込む.手順は以下の通り。
- 「データ」タブ
- データの取得
- その他にデータソースから
- テーブルまたは範囲から
- 元データの範囲を指定して読込む.

読込んだデータ.

日付型にできない値をnullに(try ~ otherwise)
まず,カスタム列を追加する.

日付型に変換する式を追加する。追加する式は以下の通り。
try #date([年], [月], [日]) otherwise null

変換できなかった日付にはnullが入る。

フィルタでnullを除く
列「日付」のフィルタでnullを除く。

日付型に変える

日付型に変更後,「閉じて読み込む」ボタンを押すと、存在しない日付を除いた一覧がワークシートにできる。

Errorをフィルタで除いたら
try~otherwiseを使わずに,11月31日のような存在しない日付を日付型に変更すると,Errorとなる。

Errorはフィルタで除くことができない(リストに出てこない)。

日付型にできない値をnullに(日付型に変換してからErrorをnullに変える)
try~otherwiseを使わずに,全ての値を日付型に変換した後でErrorをnull変えることもできる.まず,日付型に変換するためのカスタム列を追加する.

日付型に変換する式を追加する。追加する式は以下の通り(try ~ otherwiseは使わない)。
#date([年], [月], [日])

変換できなかった日付にはErrorが入る。

「変換」タブの「値の変換」から「エラーの変換」を選ぶ.

Errorをnullに変換する.

Errorになった,変換できなかった日付はnullになる。

後はフィルタでnullを除き,日付型に変えれば完了.
環境
- Windows 10 Pro
- Excel 365