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?

Windows版Excelで日本の祝日をWEBから取得する方法

Last updated at Posted at 2025-02-14

背景

自身の勤務実態を公的機関に証明するため、出勤簿を作成することになりました。
本来なら改竄できないタイムカードや、WEB就業っぽいシステムが望ましいのですが、法律に関わることに使うわけではないので、お手軽にExcelで作ることにしました。

祝日を自動で判別したいよね

ネットを調べると、内閣府が国民の祝日をCSVで提供しています。
こちらからダウンロードできます。
これはありがたいのですが、毎年CSVファイルをダウンロードしてこなくてはいけませんね。
もっとお手軽に祝日を知る方法はないのかを調べていて、とても便利な方法が見つかりました。

国民の祝日を取得するWebサービス

http://api.excelapi.org/datetime/holiday?date=44197にWebブラウザでアクセスしてみます。
すると、Webブラウザに元日と表示されます。

スクリーンショット 2025-02-14 13.25.34.png

44197という数値はExcelでは2021年1月1日のことです。
このWebサービスに渡す数値を把握できれば、国民の祝日を知ることができます。

WEBSERVICE関数を利用する

Excelの関数にWEBSERVICEというものがあります。
AppleのNumbers派の私はあまり詳しくないですが、Webサービスの結果をセルに表示する関数のようです。

試しに、下記のようにA列に日付を入れます。
Excelが自動的に日付と認識してくれます。

B列は数式=A1=A2=A3を入力し、B列の書式は標準にします。
そうすると、日付の数値が表示されます。これがWebサービスに渡す数値です。
C列は数式=WEBSERVICE("http://api.excelapi.org/datetime/holiday?date="&A1)と入力します。WebサービスにA列の値を渡せば、国民の祝日が返ってきます。
祝日がなければ空白です。

スクリーンショット 2025-02-14 13.32.31.png

これをうまく利用すれば、出勤簿の祝日を赤色に塗るということができます。

出勤簿を作る

WEBSERVICE関数を利用して出勤簿を作ってみました。

スクリーンショット 2025-02-14 13.35.49.png

国民の祝日は確実にお休みです。
また、土日も確実にお休みです。
この辺をうまく検出し、勤務しない日の行を赤色で塗ります。
自動でできて便利ですね。

Windows版Excelのみで動作する

この動作を検証しているのは、ARM版Windows上で動作させたExcelです。
この環境では動作しています。

Mac版のExcel、およびWEBブラウザで動作させるExcelではWEBSERVICE関数は使えませんでした。

参考になるサイト

ExcelAPI〜Excelにインターネットからデータを取り込むサイト

後日談...

ExcelAPIのサイトを読み込んでいたら、Googleスプレッドシートでも使えることがわかりました。
スクリーンショット 2025-02-14 21.50.45.png

=IMPORTXML("https://api.excelapi.org/datetime/holiday?date="&セル, ".")

というように、IMPORTXMLという関数を使えば国民の祝日を取得できます。
とても便利な機能で、こういう情報を提供してくれていることはとてもありがたいですね。

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?