LoginSignup
19
12

More than 1 year has passed since last update.

Power Automate で Excel シリアル値を求める方法

Last updated at Posted at 2023-01-10

はじめに

Power Automate で Excel のシリアル値(日付)を取得する方法を記載します。

ちなみに

Power Automate の Excelアクションには、、シリアル値を ISO 8601形式 に変換し取得するオプションも用意されています。
Power Automate の日付関数は、ISO 8601形式で記載された日付データ(テキスト型)をIN/OUTとすることが多いので、こちらの利用も考慮してください。
その場合、本記事で実施する処理が不要となるケースも存在します。
image.png
image.png

取得したデータに対し、「アレイのフィルター処理」で、ISO 8601形式の日付を利用し、レコードの抽出が可能です。
image.png

Power Automate でシリアル値を求める

シリアル値は、以下の数式で求められます。

add(div(sub(ticks('[求める日付]'),ticks('1/1/1900')),864000000000),2)

[求める日付]部分には、1/10/2023など、MM/dd/yyyy形式で指定してください。
日本の今日であれば、以下の式になります。

formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time','o'),'MM/dd/yyyy')

よって、今日(日本時間)のシリアル値は

add(div(sub(ticks(formatDateTime(convertFromUtc(utcNow(),'Tokyo Standard Time','o'),'MM/dd/yyyy')),ticks('1/1/1900')),864000000000),2)

です。

Excel コネクタの 「行の取得」 アクション等で利用可能です。
image.png

解説

add(div(sub(ticks('[求める日付]'),ticks('1/1/1900')),864000000000),2)

について解説します。

Excelのシリアル値とは、「1900年1月1日 を 「1」 とした連番」 です。

対して、Power Automate では直接シリアル値に変換する関数はなく、日時を連番で取得するには ticks() を利用します。

ticks() とは、「0001年1月1日午前00時00分00秒 を 「0」 とし、経過した 100 ナノ秒間隔の数」 を表します

よって、ティック化したのち、

① 1900年と0001年の差を吸収し、
② ナノ秒を日(日付)に変換し、
③ シリアル値の「1」から開始する仕様と、Excelの「1900/02/29」への対応

を行っています。順に説明します。

① 1900年と0001年の差を吸収

上記でも記載しましたが、シリアル値は1900年1月1日から、ticks()は0001年1月1日からスタートした経過日時になります。
よって、求める日付のティック値より、約1900年分を差し引く必要があります。

sub(ticks('[求める日付]'),ticks('1/1/1900')

② ナノ秒を日(日付)に変換

シリアル値は1日を1とした連番ですが、ticks()は100ナノ秒ごとの連番です。
よって、1,000,000×60×60×24=864,000,000,000 で除算し、日単位に変換します。

div([①の結果],864000000000)

③ シリアル値の「1」から開始する仕様と、Excelの「1900/02/29」への対応

シリアル値は「1」から開始しますが、ticks()は「0」から開始します。
また、Excelには、「1900/02/29」という本来ありえない日付が存在しており、この日もシリアル値にて1加算されています。
よって、上記②で求めたシリアル値に2日分を追加する必要があります。

add([②の結果],2)

まとめ

Excelの日付値を、参照/更新する際、ISO 8601形式での指定が可能となっていますが、シリアル値を扱うことも可能です。その際、当記事をご参考いただければ。

19
12
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
19
12