FILTER関数(フィルター),FILTERXML関数(フィルター・エックスエムエル)のご紹介です。
FILTER関数は、定義した条件に基づいてDateの範囲をFILTER処理する事が出来ます。
データの抽出としては使い勝手の良い関数ですが、条件付きの計算にも重宝しそうな関数になります。
FILTERXML関数は、Web用のXMLコンテンツの特定のデータを返すことが出来ます。
FILTER関数
定義した条件に基づいてデータの範囲をフィルター処理ができます。
注意※FILTER関数がExcel for Office365(Excel2016:サブスクリプション型)で使えるようになりました。
書式は、=FILTER(配列,含む,[空の場合])になります。
配列 :フィルターするデータの範囲または配列
含む :フィルターする条件を書きます(フィルターで残すデータの条件を書きます)
空の場合 :省略可能ですが、FILTERした後にデータがない場合に表示する文字列
(#CALC! エラーとなった時に表示する文字列を選択します)
例を見て確認してみましょう。
例1:中間テストの結果で個人の合計が300以上のデータを抽出します。
I列の4行目のセルに、=FILTER(G4:G12,G4:G12>=300)と入力します。
結果、330~307が導き出されました。
例2:テーブルにして、FILTER関数を利用する例です。
テーブル名は「成績表」にしています。
例3:今度は、合計ではなく名前で抽出してみましょう!
どうですか!300点以上の名前が抽出されました。便利じゃないでしょうか。
テーブルを使っても同じ結果が出ますよ!!
FILTERXML関数
XMLコンテンツ(Web)の特定のデータを返します。
書式は、FILTERXML(XML1, パス2)となります。
XML1 :XML形式の文字列を指定します。
パス2 :XMLのパスを指定します。
例1:Yahoo!天気・災害から東京都の天気情報を取得し、表示してみます。
yahooの天気のXMLは「https://rss-weather.yahoo.co.jp/rss/days/13.xml」
XMLのパスは//channel/item[1]/titleになるので、「A1」に、=FILTERXML(WEBSERVICE(“https://rss-weather.yahoo.co.jp/rss/days/13.xml”),”//channel/item[1]/title”)と入力します。
結果は、【 18日(火)東京(東京)】 曇時々雨-24℃/18℃-Yahoo!天気・災害 と表示されます。
FILTERXML関数なんですが、WEBSERVICE関数でサーバーから取り出したXMLデータから値を取り出したいといった場合に使います。
WebページのHTMLもXMLのルールの中にあるため利用可能です。
多くの場合は、FILTERXML関数単独ではなくWEBSERVICE関数と併用してExcelからマクロなしでWebAPIにアクセスする用途に使用します。
XMLパスにはルールは色々ありますが、以下を押さえれば最低限利用可能です。
「//」で始まり「/」区切りでタグの階層を指定します。「@」でタグの属性を指定します。この2点になります。
例1:では、日本語を含む検索したい言葉などを、Webserviceに渡す文字列をENCODEURL関数を使ってURLエンコードしてみます。
エンコードしたURLを、WEBSERVICE関数を使ってWebserviceに渡すんですね。
WEBSERVICE関数で返ってきたXMLデータをFILTERXML関数を使って必要な値だけ抜き取ります。値はXPathで指定する必要があるんです。
「C2」は検索するキーワード
「C3」ENCODEURL関数でURLをエンコードしたキーワード
「C4」WEBSERVICE関数で取得したデータ
「C5」FILTERXML関数で抽出した値
「C3」には、ENCODEURL関数でURLをエンコードしたキーワードを挿入します。
「C3」に=ENCODEURL($C$2)と入力します。結果です。
「C4」には、WEBSERVICE関数を使用して取得したデータを表示します。
「C4」に=WEBSERVICE(“http://www.bing.com/search?format=RSS&q=” & $C$3)と入力します。結果です。
次に、「C5」には、FILTERXML関数で抽出した値を返してみます。
「C5」に=FILTERXML($C$4,”/rss/channel/item[1]/title”)と入力します。結果です。
「日本マイクロソフト-Official Home Page」と表示されます。
FILTERXML関数のまとめになります。
・関数の使い方
関数の使い方は、FILTER関数・FILTERXML関数は解説して参りましたが下記の様になります。
検索語などを、Web serviceに渡したい文字列をENCODEURL関数を使ってURLにエンコードするんでしたね。
エンコードしたURLを、WEBSERVICE関数を使ってWebserviceに渡すんですね。
WEBSERVICE関数で返ってきたXMLデータをFILTERXML関数を使って必要な値だけ抜き取ります。
値はXPathで指定する必要があるんでしたね。
以上のように、Excel2013から追加されたWeb関数を活用すれば、
面倒なプログラム入力することなく、標準の関数のみでインターネット上のデータを書き出す事ができます。
ExcelはWeb APIを操作出来ます。関数が追加されていまして、これまでVBA無しでは実現出来なかったのですが、Web上の情報取得が出来るようになりました。
例えば郵便番号API(http://zip.cgis.biz/)にアクセスして郵便番号検索を行うことができたり、
WEBSERVICE関数に出てくるURLを利用すれば、SNSの情報や、特定のサイトのhtmlソースを取ることも出来ます。
便利な関数なので、利用してみてくださいね!
今まで関数をあまり活用してこなかった方も、関数をより仕事で効率よく使いこなしたいという方も、
このブログを見て頂き参考にして覚えて頂きたいと思います。
引き続きブログをアップして参りますので、気になる関数があったらまずはソフトキャンパスのブログをじっくり読んでみてくださいね!