ExcelのFILTERXML関数でXPathを指定してXMLからデータ抽出する事例です。
題材は、【Excel】WEBSERVICE関数でXML形式のデータを取得してデータ抽出と同様に、国税庁の法人番号公表サイトにある「法人番号システム Web-API」で取得できるXML形式のデータです。
また、使用のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2311)です。
アウトプットイメージ(数式と結果)
国税庁法人番号公表サイトにある「Web-API(Ver.4.0)のリクエストの設定方法及び提供データの内容について」に掲載されているXMLサンプルからFILTERXML関数で抽出で抽出しています。
補足説明
- Xpathには、色々な表記ルールがありますが、上記事例の抽出における必要な最低限として、抽出したいタグのスタートを”//(タグ名)”と指定します。
- 上記事例では、<corporateNumber>のタグが複数あります(サンプルで中略しているので、XML上では2回)。
そのため、FILTERXML関数のスピル機能でC8とC9に抽出結果が表示されています。 - <corporateNumber>の二回目出現を抽出する場合は、一つ上の階層の<corporation>の2回目という指定で、次のようにします。
=FILTERXML($B$2,"//corporation[2]/corporateNumber")
角括弧で順番を指定し、一つ下の階層を"/"で区切ります。
上記のXMLの内容は、次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<corporations>
<lastUpdateDate>2017-05-10</lastUpdateDate>
<count>10</count>
<divideNumber>1</divideNumber>
<divideSize>1</divideSize>
<corporation>
<sequenceNumber>1</sequenceNumber>
<corporateNumber>2040001999902</corporateNumber>
(中略)
<enAddressOutside/>
<furigana/>
<hihyoji>0</hihyoji>
</corporation>
(中略)
<corporation>
<sequenceNumber>10</sequenceNumber>
<corporateNumber>3040001999901</corporateNumber>
(中略)
<enAddressOutside/>
<furigana/>
<hihyoji>0</hihyoji>
</corporation>
</corporations>
以上、「法人番号システム Web-API」で取得できるXML形式のデータをFILTERXML関数で抽出する事例でした。