0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelから取得した1900年代の日付がListsに転記したときに1日減る事象について

Last updated at Posted at 2025-02-08

Excelの日付に関する使用上の問題

Power Automateを業務で使っているみなさまはExcelの日付データをPower Automateで取得してListsに転記する、というシチュエーションは結構あると思います。

今回は、実務ではあまり起こりにくいものの、市民開発者として知っておいて損はないExcelの仕様についてご紹介します。

前提

Excel上のテーブルから日付を抽出しListsに転記する、というケース

事象

1900年1月5日、1900年2月10日など1900年の特定の日付を転記しようとしたときにLists上で1日減算されて転記される。

再現

Power AutomateでExcelの日付データをSPO Listsに転記するフローを作成して、事象を再現します。

まず下図のようなExcelデータを用意し、onedriveに格納しておきます。
スクリーンショット 2025-01-31 003826.png

日付、曜日、名称列があるテーブル「日付テーブル」を作成しました。

次に、同じ列名の転記先のListsを用意しておきます。
image.png

「タイトル」列がデフォルトで作成されますが、ここでは使用しません。

次にPower Automate クラウドフローをこんな感じで作成します。

Excelのテーブルからデータを取得してListsに転記するシンプルなクラウドフローです。

Excelからのデータ取得のパラメータ
スクリーンショット 2025-01-31 005152.png

Listsへ転記するアクションのパラメータ。Apply to eachは自動で作成されます。
スクリーンショット 2025-02-08 120935.png

この状態でテストすると、「日付が正しくない」と怒られました。
スクリーンショット 2025-01-31 005448.png

最初に処理したレコードだけアクションの実行に失敗したようです。Listsの転記結果を確認してみましょう。

スクリーンショット 2025-01-31 005522.png

名称を「テスト」にしたレコードが転記されていませんね。そしてテスト2、3、4の日付が1日少なくなっています!!これが今回の事象です。

原因

これは、「1900年2月29日という本来存在しない日がExcel上に存在する」ことが原因で発生しています。下記の記事が大変参考になります。

つまり、今回の事象の発生要因は下記の通りです。

1.日付が1日減った状態で転記される
⇒転記元となっているExcelの仕様の問題。Excelでは1900年2月29日という存在しない日付が存在する関係で、それ以前の日付が1日減算された状態で転記されたため。

2.1900年1月1日の日付のレコードが転記できない
⇒1900年2月29日以前の日付であるため、日付が1日減った状態で登録されようとしているが、Listsに転記できるのは1900年1月1日の日付からであり、1899年12月31日のデータは登録できないため。

1900年2月29日(実際には存在しませんが)以前の日付が入力されているばあいは1日分日付を加算する処理を加える必要があるので注意しましょう。

19世紀の日付を扱うことなんてねえよという至極当然の突っ込みは無しでお願いします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?