Excel XMLにXPathを指定してデータを取得(FILTERXML関数)

2020年5月24日

FILTERXML関数はXML形式の文字列に対して

XPathを指定して任意のデータを取得する関数です。

HTMLもXMLのルールの中にあるため利用可能です。

多くの場合、FILTERXML関数単独ではなく

WEBSERVICE関数と併用してExcelからマクロなしで

WebAPIにアクセスする用途に使用します。

仕様

=FILTERXML(XML,XPath)
引数省略時の値説明
XML省略不可抽出元となるXML文字列を指定。
Xpath省略不可Xpath構文を指定
引数の詳細

使用例

サンプルのXMLとXPath及びFILTERXML関数の結果です。

XMLかXPathが解析不可能な場合、#VALUE!エラーとなります。

FILTERXML関数の基本的に利用例

Xpathのルールは色々ありますが、以下を押さえれば最低限利用可能でしょう。

  • // で始まり /区切りでタグの階層を指定
  • @でタグの属性を指定

スピルを利用する方法とメリット

Office365やExcel2019以降ではスピルという形式で記述可能です。

これは複数セルに数式をコピーする場合に便利な機能です。

スピルの利用には何れかの引数を複数セルの範囲で指定します。

スピルでFILTERXML関数を記述する例(C6セル)
スピルでFILTERXML関数を記述する例(C6セル)

数式を入力するのは最初の一つのセルですが、

引数で指定した高さ分、数式がセルのコピーなしで自動拡大されます。

C6に指定したFILTERXML関数がC9まで自動拡大
C6に指定したFILTERXML関数がC9まで自動拡大

スピルを利用することで今回の例では、

C6セルに入力するだけでよいため(C7以降にコピーペーストが不要)

以下のメリットがあります。

  • 入力の手間が少ない(数式のセルが多いほど効果が大きい)
  • 数式を編集した時、コピー忘れのリスクがない(最初のセルを更新すると全セルに反映)
  • 絶対参照が不要
  • 途中に行を追加した場合、数式のコピー&ペーストが不要。行削除でも壊れにくい。

関連記事

活用例

週間天気予報を表示する方法

関数の仕様と使い方の記事一覧