<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WEBSERVICE &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/webservice/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 12:48:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>WEBSERVICE &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのFILTERXML関数の使い方｜文字列分割まで解説</title>
		<link>https://mashukabu.com/excel-function-howto-use-filterxml/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-filterxml/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 04 Feb 2023 09:00:00 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[FILTERXML]]></category>
		<category><![CDATA[WEBSERVICE]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[文字列分割]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=2198</guid>

					<description><![CDATA[ExcelのFILTERXML関数の使い方をわかりやすく解説。XPath記法早見表・WEBSERVICE連携・文字列分割3パターンを網羅。旧バージョンでも活用できる実践テクニックを紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「ExcelでXMLデータから値を取り出したいけど、やり方がわからない…」</p>



<p>XMLデータの扱いは難しそうに見えますよね。専用のツールが必要だと思うかもしれません。しかしExcelには、XML（構造化されたデータ記述形式）から必要な値だけを抜き出せる関数があります。</p>



<p>この記事では、FILTERXML関数の基本から応用まで解説します。XMLデータの取得はもちろん、文字列分割テクニックまでカバーしました。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのFILTERXML関数とは</a><ol><li><a href="#toc2" tabindex="0">FILTERXML関数の読み方</a></li><li><a href="#toc3" tabindex="0">対応バージョンと動作環境（Windows限定・Mac/Web版非対応）</a></li></ol></li><li><a href="#toc4" tabindex="0">FILTERXML関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">第1引数 xml：XML形式の文字列を指定する</a></li><li><a href="#toc6" tabindex="0">第2引数 xpath：取得するデータのパスを指定する</a></li></ol></li><li><a href="#toc7" tabindex="0">XPath記法早見表</a></li><li><a href="#toc8" tabindex="0">FILTERXML関数の使用例</a><ol><li><a href="#toc9" tabindex="0">基本例：XMLデータから特定の要素を取得する</a></li><li><a href="#toc10" tabindex="0">WEBSERVICE関数と組み合わせてWebデータを取得する</a></li></ol></li><li><a href="#toc11" tabindex="0">SUBSTITUTE+FILTERXMLで文字列を分割するテクニック</a><ol><li><a href="#toc12" tabindex="0">カンマ区切りで分割する</a></li><li><a href="#toc13" tabindex="0">スペース区切りで分割する</a></li><li><a href="#toc14" tabindex="0">改行（CHAR(10)）で分割する</a></li><li><a href="#toc15" tabindex="0">N番目の要素だけを取り出す</a></li></ol></li><li><a href="#toc16" tabindex="0">FILTERXML関数のエラーと対処法</a><ol><li><a href="#toc17" tabindex="0">#VALUE!エラーの原因と対処</a></li><li><a href="#toc18" tabindex="0">IFERRORで空白に置き換える</a></li></ol></li><li><a href="#toc19" tabindex="0">TEXTSPLITとの使い分け</a></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのFILTERXML関数とは</span></h2>



<p><strong>FILTERXML関数</strong>は、XML形式の文字列から指定した要素を取得する関数です。XPath（XMLの中の位置を指定する記法）を使って、ほしいデータだけを抜き出せます。</p>



<p>たとえば、商品リストのXMLから特定の商品名だけを取り出す、といった使い方ができます。</p>



<p>FILTERXML関数の真価はXMLの処理だけではありません。<a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>と組み合わせれば、カンマ区切りやスペース区切りの文字列を分割できます。<a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数</a>が使えない環境で重宝するテクニックです。</p>



<h3 class="wp-block-heading"><span id="toc2">FILTERXML関数の読み方</span></h3>



<p>読み方は「<strong>フィルター エックスエムエル</strong>」です。「Filter」（絞り込む）と「XML」（データ記述形式）を組み合わせた名前で、XMLデータをフィルタリングする機能を表しています。</p>



<h3 class="wp-block-heading"><span id="toc3">対応バージョンと動作環境（Windows限定・Mac/Web版非対応）</span></h3>



<p>FILTERXML関数はWindowsの機能に依存しています。そのため、使える環境が限られている点に注意してください。</p>



<figure class="wp-block-table"><table><thead><tr><th>環境</th><th>対応状況</th></tr></thead><tbody><tr><td>Excel 2013（Windows）</td><td>○</td></tr><tr><td>Excel 2016（Windows）</td><td>○</td></tr><tr><td>Excel 2019（Windows）</td><td>○</td></tr><tr><td>Excel 2021（Windows）</td><td>○</td></tr><tr><td>Excel 2024（Windows）</td><td>○</td></tr><tr><td>Microsoft 365（Windows）</td><td>○</td></tr><tr><td>Excel for Mac</td><td>✕（関数一覧に表示されるが結果を返さない）</td></tr><tr><td>Excel for the web</td><td>✕</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>WARNING</strong></p><p>Mac版ではギャラリーに表示されることがあります。しかし実際には結果を返しません。Windows環境でのみ使用してください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">FILTERXML関数の構文と引数</span></h2>



<p>基本構文は次のとおりです。</p>



<pre class="wp-block-code"><code>=FILTERXML(xml, xpath)</code></pre>



<p>引数は2つとも必須です。省略するとエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc5">第1引数 xml：XML形式の文字列を指定する</span></h3>



<p>有効なXML形式の文字列を指定します。セル参照でも直接入力でも構いません。</p>



<p>指定する文字列は、XMLの構文ルールに従っている必要があります。タグの開始と終了が正しく対応していないと <code>#VALUE!</code> エラーが返ります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>XML内に <code><</code> <code>></code> <code>&</code> などの特殊文字が含まれると、エラーの原因になります。これらの文字はXMLの予約文字として扱われるためです。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc6">第2引数 xpath：取得するデータのパスを指定する</span></h3>



<p>XPath（XML Path Language）の記法で、取得したい要素の位置を指定します。</p>



<p>たとえば <code>"//商品名"</code> と書くと、XML内のすべての「商品名」タグの値を取得できます。XPathの詳しい書き方は次のセクションで解説します。</p>



<h2 class="wp-block-heading"><span id="toc7">XPath記法早見表</span></h2>



<p>FILTERXML関数で使うXPathの記法をまとめました。よく使うパターンを押さえておけば十分です。</p>



<figure class="wp-block-table"><table><thead><tr><th>XPath記法</th><th>意味</th><th>使用例</th></tr></thead><tbody><tr><td><code>//タグ名</code></td><td>任意の階層でタグを検索</td><td><code>"//name"</code></td></tr><tr><td><code>/root/child</code></td><td>絶対パスで指定</td><td><code>"/items/item"</code></td></tr><tr><td><code>root/child</code></td><td>相対パスで指定</td><td><code>"items/item"</code></td></tr><tr><td><code>//@属性名</code></td><td>属性値を取得</td><td><code>"//@id"</code></td></tr><tr><td><code>//タグ名[n]</code></td><td>n番目の要素を取得</td><td><code>"//item[2]"</code></td></tr><tr><td><code>//タグ名[last()]</code></td><td>最後の要素を取得</td><td><code>"//item[last()]"</code></td></tr><tr><td><code>//タグ名[position()<=n]</code></td><td>先頭n件を取得</td><td><code>"//item[position()<=3]"</code></td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>XPathのインデックスは <strong>1始まり</strong> です。Excelの行番号と同じ感覚で指定できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc8">FILTERXML関数の使用例</span></h2>



<h3 class="wp-block-heading"><span id="toc9">基本例：XMLデータから特定の要素を取得する</span></h3>



<p>次のようなXML文字列がセルA1に入っているとします。</p>



<pre class="wp-block-code"><code>&lt;fruits&gt;&lt;item&gt;りんご&lt;/item&gt;&lt;item&gt;みかん&lt;/item&gt;&lt;item&gt;ぶどう&lt;/item&gt;&lt;/fruits&gt;</code></pre>



<p>ここから2番目の要素「みかん」を取り出すには、次の数式を使います。</p>



<pre class="wp-block-code"><code>=FILTERXML(A1,&quot;fruits/item[2]&quot;)</code></pre>



<p>結果は <code>みかん</code> です。</p>



<p>すべての要素を取得したい場合は、インデックスを省略します。</p>



<pre class="wp-block-code"><code>=FILTERXML(A1,&quot;fruits/item&quot;)</code></pre>



<p>Microsoft 365やExcel 2021以降では、スピル機能で複数セルに結果が展開されます。Excel 2013〜2019では配列数式（Ctrl+Shift+Enter）として入力してください。</p>



<h3 class="wp-block-heading"><span id="toc10">WEBSERVICE関数と組み合わせてWebデータを取得する</span></h3>



<p>WEBSERVICE関数（Webからデータを取得する関数）と組み合わせると、Web上のXMLデータを直接取得できます。</p>



<pre class="wp-block-code"><code>=FILTERXML(WEBSERVICE(ENCODEURL(URL)),&quot;XPath&quot;)</code></pre>



<p><a href="https://mashukabu.com/excel-function-howto-use-encodeurl/">ENCODEURL関数</a>でURLをエンコードしてから渡すのがポイントです。日本語を含むURLでもエラーを防げます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>WEBSERVICE関数の参照先はサービスの仕様変更で動作しなくなる可能性があります。業務で使う場合は、データが取得できなかったときの代替手段も用意しておきましょう。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">SUBSTITUTE+FILTERXMLで文字列を分割するテクニック</span></h2>



<p>FILTERXML関数の人気の使い方が、文字列の分割です。仕組みはシンプルで、区切り文字をXMLタグに変換してからFILTERXMLで配列として取り出します。</p>



<p>処理の流れを整理すると次のようになります。</p>



<ol class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>で区切り文字をXMLの閉じタグ＋開きタグに変換</li><li>先頭と末尾にルートタグを付けて有効なXML形式にする</li><li>FILTERXML関数でXPathを使い、各要素を配列として取得</li></ol>



<p>パターンを一度覚えれば、どんな区切り文字にも応用できます。</p>



<h3 class="wp-block-heading"><span id="toc12">カンマ区切りで分割する</span></h3>



<p>セルA2に <code>りんご,みかん,ぶどう</code> という文字列が入っている場合です。</p>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(A2,&quot;,&quot;,&quot;&lt;/n&gt;&lt;n&gt;&quot;)&amp;&quot;&lt;/n&gt;&lt;/r&gt;&quot;,&quot;r/n&quot;)</code></pre>



<p>この数式は内部で次のように変換されます。</p>



<ol class="wp-block-list"><li>SUBSTITUTE で <code>,</code> を <code></n><n></code> に置換</li><li>前後にタグを追加して <code><r><n>りんご</n><n>みかん</n><n>ぶどう</n></r></code> になる</li><li>FILTERXML が <code>r/n</code> で各 <code><n></code> 要素を配列として返す</li></ol>



<p>結果は <code>りんご</code> <code>みかん</code> <code>ぶどう</code> の3つの値です。横方向に展開したい場合は、数式全体をTRANSPOSE関数で囲みます。</p>



<h3 class="wp-block-heading"><span id="toc13">スペース区切りで分割する</span></h3>



<p>セルA2に <code>東京 大阪 名古屋</code> が入っている場合です。区切り文字をスペースに変えるだけです。</p>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(A2,&quot; &quot;,&quot;&lt;/n&gt;&lt;n&gt;&quot;)&amp;&quot;&lt;/n&gt;&lt;/r&gt;&quot;,&quot;r/n&quot;)</code></pre>



<p>結果は <code>東京</code> <code>大阪</code> <code>名古屋</code> になります。半角スペースと全角スペースは区別されるので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc14">改行（CHAR(10)）で分割する</span></h3>



<p>セル内改行（Alt+Enter）で区切られたデータを分割する場合です。CHAR(10)が改行コードを表します。</p>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(A2,CHAR(10),&quot;&lt;/n&gt;&lt;n&gt;&quot;)&amp;&quot;&lt;/n&gt;&lt;/r&gt;&quot;,&quot;r/n&quot;)</code></pre>



<p>セル内の改行をそのまま区切り文字として扱えます。複数行のデータを個別のセルに展開したいときに便利です。</p>



<h3 class="wp-block-heading"><span id="toc15">N番目の要素だけを取り出す</span></h3>



<p>分割した中から特定の位置の値だけがほしい場合は、XPathにインデックスを付けます。</p>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(A2,&quot;,&quot;,&quot;&lt;/n&gt;&lt;n&gt;&quot;)&amp;&quot;&lt;/n&gt;&lt;/r&gt;&quot;,&quot;r/n[2]&quot;)</code></pre>



<p><code>r/n[2]</code> で2番目の要素だけを返します。最後の要素がほしい場合は <code>r/n[last()]</code> を使ってください。先頭3件なら <code>r/n[position()<=3]</code> です。</p>



<p><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数</a>や<a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数</a>を使った文字列操作より、はるかにシンプルに書けるのがメリットです。</p>



<h2 class="wp-block-heading"><span id="toc16">FILTERXML関数のエラーと対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc17">#VALUE!エラーの原因と対処</span></h3>



<p>FILTERXML関数で <code>#VALUE!</code> エラーが出る主な原因は次の4つです。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>具体例</th><th>対処法</th></tr></thead><tbody><tr><td>XMLの構文が正しくない</td><td>タグの閉じ忘れ、入れ子の不整合</td><td>タグの開始と終了を確認する</td></tr><tr><td>特殊文字が含まれている</td><td><code><</code> <code>></code> <code>&</code> がデータ内にある</td><td>SUBSTITUTEで事前に除去する</td></tr><tr><td>無効な名前空間プレフィックスがある</td><td>未定義のプレフィックスをXPathで使用</td><td>XPath記法を見直す</td></tr><tr><td>連続した区切り文字がある</td><td><code>りんご,,ぶどう</code> のように空要素が生まれる</td><td>空要素を除去してから処理する</td></tr></tbody></table></figure>



<p>連続区切り文字は見落としやすいポイントです。<code>りんご,,ぶどう</code> のようなデータでは、カンマの間に空の <code><n></n></code> 要素ができます。これが予期しない空白セルとして展開されるため、事前にデータをクリーニングしておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc18">IFERRORで空白に置き換える</span></h3>



<p>配列で結果を返す場合、一部のセルでエラーが出ることがあります。IFERROR関数で囲めば、エラーセルを空白に置き換えられます。</p>



<pre class="wp-block-code"><code>=IFERROR(FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(A2,&quot;,&quot;,&quot;&lt;/n&gt;&lt;n&gt;&quot;)&amp;&quot;&lt;/n&gt;&lt;/r&gt;&quot;,&quot;r/n&quot;),&quot;&quot;)</code></pre>



<p>文字列分割で使う場合は、この書き方をセットで覚えておくと安心です。</p>



<h2 class="wp-block-heading"><span id="toc19">TEXTSPLITとの使い分け</span></h2>



<p>文字列分割の用途では、<a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数</a>も選択肢に入ります。それぞれの特徴を比較してみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>TEXTSPLIT</th><th>FILTERXML+SUBSTITUTE</th></tr></thead><tbody><tr><td>対応バージョン</td><td>Microsoft 365 / Excel 2021以降</td><td>Excel 2013以降</td></tr><tr><td>対応OS</td><td>Windows / Mac / Web</td><td><strong>Windows版のみ</strong></td></tr><tr><td>数式のシンプルさ</td><td>◎（1関数で完結）</td><td>△（3関数の組み合わせ）</td></tr><tr><td>N番目の要素指定</td><td>✕（分割のみ）</td><td>○（XPathで指定可能）</td></tr><tr><td>空要素の扱い</td><td>空文字で対応可</td><td>予期しない空白セルが入る</td></tr></tbody></table></figure>



<p><strong>TEXTSPLITが使える環境ならTEXTSPLITを優先</strong>してください。数式がシンプルで、Mac・Web版でも動作します。</p>



<p>一方、Excel 2013〜2019を使っている場合はTEXTSPLITが使えません。FILTERXML+SUBSTITUTEが実質的な代替手段になります。また、N番目の要素だけを取り出したい場合は、XPathで柔軟に指定できるFILTERXMLの方が便利です。</p>



<h2 class="wp-block-heading"><span id="toc20">まとめ</span></h2>



<p>FILTERXML関数は、XMLデータから必要な値を取り出せる関数です。この記事のポイントをおさらいしましょう。</p>



<ul class="wp-block-list"><li><strong>構文</strong>: <code>=FILTERXML(xml, xpath)</code> で、XPathを使って要素を指定する</li><li><strong>対応環境</strong>: Excel 2013以降のWindows版のみ（Mac・Web版は非対応）</li><li><strong>文字列分割</strong>: SUBSTITUTEと組み合わせれば、カンマ・スペース・改行で分割できる</li><li><strong>エラー対策</strong>: IFERRORで囲んでおくと安心</li><li><strong>TEXTSPLITとの使い分け</strong>: 使える環境ならTEXTSPLIT優先。Excel 2019以前ならFILTERXML</li></ul>



<p>文字列分割のテクニックは、Excel 2013〜2019ユーザーにとって特に役立ちます。ぜひ実際のデータで試してみてください。他のExcel関数の使い方も、あわせてご覧ください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-filterxml/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
