見出し画像

天気・気象情報を、Excel関数で取得する


クラウドに対応したExcel関数

Excelの関数といえば、数値を計算したり、文字列をこねくり回すイメージが強いと思いますが、最近追加された関数には、クラウドを意識したものが増えています。
今回ご照会するwebservice関数もその1つ。Excel2013の頃から搭載されていたのですが、意味のある挙動をさせるには「相手を選ぶ」ため、認知度もイマイチでした。

webservice関数の使い方

webservice関数とは、その名の通り、webサーバの結果を取得する関数です。
難しい関数と違って、URLを指定するだけというお手軽さなのですが…
何も考えずにgoogleのURLを指定してみると、htmlが表示されます。

webservice関数の結果(1)

"指定したURLにアクセスした結果”を表示する関数なので、当然といえば当然です。
ところが、サーバ側で問い合わせた内容に応じた結果を返せるようにしておけば、「会話」が成り立ちます。

試しに、以下の式をExcel(但しWindows版365)に貼付けてみると、「みずほ銀行」と表示されるはずです。最後の"0001"は銀行コードなので、任意の銀行コードに変更すると、その名称が表示されます。

=WEBSERVICE("http://castanet.one/TT20_TR.php?KBN=ginko&Key1=0001")

webservice関数の実際

webservice関数でわかる、過去の天気

以下の例では、日付を指定し、気象情報を取得した結果を並べたものです。

webservice関数の結果(2)

こうして過去の同じ日付を並べてみると、地球が温暖化している・・・かも知れない、といったことが見えてくるかも知れません。
夏休みの日記の宿題を溜め込んだあの時、こんなしくみがあればどんなに便利だったことか…

実際に気象情報を取得してみる

それでは、自分の環境でこれを再現する方法について、解説します。

動作環境の確認

その前に、webservice関数は、Excel2013で実装された後、Excel2019で廃止された・・・というのも妙ですが、以後は365でしか動かなくなりました。
動作にWindowsOSの機能を使うことから、オンライン版やMac版のExcelでは動かない、そうです。
まずは条件の合うバージョンのExcelをお持ちかどうか、ご確認下さい。

事前準備:シートの構成

まずは、こんな感じでシートを用意しておきます。

下準備

上のサンプルでは、D12とE12が可変要素(パラメータ)を入れるセルです。
webservice関数を設定するのは14行目です。

続いて、例として、E14の式です。
先の可変要素のセルを反映させてあります(色が対応しています)。

wevservice関数の式サンプル(下準備シートとは色で対応)

上の式の最後に”&2”とあるのは、2番目の「最高気温」を取得するためのもので、最低気温の場合は”&3”になります(他も同様)。
式のサンプルを文字化しておくので、よかったらコピペして使って下さい。

=WEBSERVICE("https://castanet.one/DT20_TR.php?KBN=kisho&Key1=" & $D$12 & "&Key2=" & $E$12 & "&2")

E14に配置する場合の式サンプル
webservice関数で、日付→気象情報のサンプル

地区だけ変えてみると、同じ日にここまで気温が異なるか、ということがわかります。時系列で並べてみると、地球温暖化の真偽が見えてくる・・・かもしれません。
ちなみに、地区はこの3ヶ所(札幌、東京、那覇)のみ、東京以外は2024年のみです。

応用例(動画)

実際に可変要素を別セルに分離した状態で動かすと、こんな使い方ができます。

https://castanet.one/images/demo.mp4

https://castanet.one/images/demo_cal.mp4


留意事項

接続先(指定したURL)により、パラメータ設定は異なります。
今回接続したURLでは、ここの流儀でパラメータを設定することで、他の情報(銀行・支店コード ⇔ 名称 / 食品コード → 栄養素等)が取得できます。

それから、この関数はOSを通して処理をするためか処理速度が遅く、打てば響く、とは行きません。たまに#valueになってしまいますが、しばらくすると表示が戻ってきます。それでも戻らない場合は、F2を押すと直ります。

今回はwebservice関数でこんなことができる、という紹介がてら、気象情報の取得について取り上げてみました。


この記事が気に入ったらサポートをしてみませんか?