<?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>XML &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/xml/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>XML &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのIMPORTXML関数の使い方｜XMLデータ取得</title>
		<link>https://mashukabu.com/spreadsheet-importxml-function/</link>
					<comments>https://mashukabu.com/spreadsheet-importxml-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 22 Mar 2026 01:13:07 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[IMPORTXML]]></category>
		<category><![CDATA[Sheets独自]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4985</guid>

					<description><![CDATA[GoogleスプレッドシートのIMPORTXML関数の使い方を初心者向けに解説。XPathの基本構文からWebページのデータ取得、実践的な活用例、よくあるエラーの対処法、IMPORTHTML・IMPORTDATAとの使い分けまで詳しく紹介します。]]></description>
										<content:encoded><![CDATA[
<p>「Webページから特定のデータだけを取り出したいのに、表まるごとしか取得できない」。そんな経験はありませんか。</p>



<p>IMPORTHTML関数では表やリスト単位の取得しかできず、「ページタイトルだけ」「特定のリンクだけ」といったピンポイントの抽出には向いていません。</p>



<p>そんなときに活躍するのが <strong>IMPORTXML関数</strong> です。XPathという指定方法を使えば、Webページ内の好きな要素をピンポイントで取得できます。</p>



<p>この記事では、スプレッドシートのIMPORTXML関数の基本からXPathの書き方、実践的な活用パターンまで解説します。</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">IMPORTXML関数とは？</a></li><li><a href="#toc2" tabindex="0">IMPORTXML関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の説明</a></li></ol></li><li><a href="#toc5" tabindex="0">IMPORTXML関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">XPathの基本構文</a></li><li><a href="#toc7" tabindex="0">ページタイトルを取得する</a></li><li><a href="#toc8" tabindex="0">見出し一覧を取得する</a></li><li><a href="#toc9" tabindex="0">リンクURLを取得する</a></li><li><a href="#toc10" tabindex="0">メタディスクリプションを取得する</a></li></ol></li><li><a href="#toc11" tabindex="0">IMPORTXML関数の実践的な使い方・応用例</a><ol><li><a href="#toc12" tabindex="0">複数ページのタイトルを一括取得する</a></li><li><a href="#toc13" tabindex="0">特定のクラスを持つ要素を取得する</a></li><li><a href="#toc14" tabindex="0">XPathで特定の位置の要素を取得する</a></li><li><a href="#toc15" tabindex="0">IMPORTXML関数の結果を加工する</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc17" tabindex="0">Excelとの違い</a></li><li><a href="#toc18" tabindex="0">IMPORT系関数の使い分け</a></li><li><a href="#toc19" tabindex="0">まとめ</a><ol><li><a href="#toc20" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">IMPORTXML関数とは？</span></h2>



<p>IMPORTXML関数は、<strong>XMLやHTML形式のデータからXPathで指定した要素を取得する関数</strong>です。</p>



<p>名前は英語の「import（取り込む）」と「XML（データの構造化形式）」が由来です。</p>



<p>たとえば、次のようなデータを取得できます。</p>



<ul class="wp-block-list"><li>Webページのタイトルタグの内容</li><li>特定のHTMLタグに含まれるテキスト</li><li>メタディスクリプションの内容</li><li>リンクのURL一覧</li><li>見出し（h2やh3）のテキスト一覧</li></ul>



<p>IMPORTHTML関数が「表やリストをまるごと取得」するのに対し、IMPORTXML関数は「欲しい要素だけをXPathで指定して取得」できるのが特徴です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>IMPORTXML関数は<strong>Googleスプレッドシート専用</strong>の関数です。Excelには同じ関数は存在しません。ExcelでXMLデータを取得するには、Power Queryの「XMLから」機能やXMLの読み込み機能を使います。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">IMPORTXML関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=IMPORTXML(URL, XPathクエリ)</code></pre>



<p>カッコの中に2つの引数を指定します。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の説明</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>URL</td><td>必須</td><td>データを取得したいWebページのURL。文字列で指定</td></tr><tr><td>XPathクエリ</td><td>必須</td><td>取得したい要素を指定するXPath式。文字列で指定</td></tr></tbody></table></figure>



<p>第1引数にはWebページのURLを指定します。ダブルクォーテーションで囲むか、URLが入力されたセルを参照します。</p>



<p>第2引数にはXPathクエリを指定します。XPathとは、XMLやHTMLの中から特定の要素を指定するための記法です。次のセクションで基本的な書き方を紹介します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>URLはセル参照で指定するのがおすすめです。数式が見やすくなりますし、複数の数式で同じURLを使い回せます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">IMPORTXML関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc6">XPathの基本構文</span></h3>



<p>IMPORTXML関数を使うには、XPathの書き方を知っておく必要があります。ちょっとむずかしく見えますが、基本パターンは数個だけなのでシンプルです。</p>



<p>よく使うXPathの書き方をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>XPath</th><th>取得できるもの</th></tr></thead><tbody><tr><td><code>//title</code></td><td>ページのタイトルタグの内容</td></tr><tr><td><code>//h2</code></td><td>すべてのh2見出しのテキスト</td></tr><tr><td><code>//a/@href</code></td><td>すべてのリンクのURL</td></tr><tr><td><code>//meta[@name='description']/@content</code></td><td>メタディスクリプションの内容</td></tr><tr><td><code>//p</code></td><td>すべての段落テキスト</td></tr><tr><td><code>//img/@src</code></td><td>すべての画像のURL</td></tr><tr><td><code>//li</code></td><td>すべてのリスト項目のテキスト</td></tr></tbody></table></figure>



<p><code>//</code> は「ページ内のどこにあっても検索する」という意味です。タグ名を続けるだけで、そのタグの中身を取得できます。</p>



<p><code>/@属性名</code> を付けると、タグの属性値を取得できます。たとえば <code>//a/@href</code> は「aタグのhref属性（リンク先URL）」を取得します。</p>



<h3 class="wp-block-heading"><span id="toc7">ページタイトルを取得する</span></h3>



<p>最もシンプルな使い方です。Webページのtitleタグの内容を取得します。</p>



<pre class="wp-block-code"><code>=IMPORTXML(&quot;https://example.com&quot;, &quot;//title&quot;)</code></pre>



<p>1つのセルにページタイトルが表示されます。</p>



<h3 class="wp-block-heading"><span id="toc8">見出し一覧を取得する</span></h3>



<p>ページ内のすべてのh2見出しを一覧で取得できます。</p>



<pre class="wp-block-code"><code>=IMPORTXML(&quot;https://example.com/article&quot;, &quot;//h2&quot;)</code></pre>



<p>h2タグが複数ある場合は、縦方向にすべての見出しが展開されます。h3見出しを取得したい場合は <code>"//h3"</code> に変えるだけです。</p>



<h3 class="wp-block-heading"><span id="toc9">リンクURLを取得する</span></h3>



<p>ページ内のすべてのリンク先URLを取得するにはこう書きます。</p>



<pre class="wp-block-code"><code>=IMPORTXML(&quot;https://example.com&quot;, &quot;//a/@href&quot;)</code></pre>



<p><code>@href</code> はaタグの「href属性」を指定しています。ページ内のすべてのリンクURLが縦方向に展開されます。</p>



<h3 class="wp-block-heading"><span id="toc10">メタディスクリプションを取得する</span></h3>



<p>SEOの調査で使えるテクニックです。ページのメタディスクリプションを取得します。</p>



<pre class="wp-block-code"><code>=IMPORTXML(&quot;https://example.com&quot;, &quot;//meta[@name='description']/@content&quot;)</code></pre>



<p><code>[@name='description']</code> は「name属性がdescriptionであるmetaタグ」を指定する条件式です。<code>/@content</code> でそのタグのcontent属性の値を取得します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>XPathの <code>[]</code> は条件を指定する書き方です。<code>[@属性名='値']</code> の形で、特定の属性を持つ要素だけに絞り込めます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">IMPORTXML関数の実践的な使い方・応用例</span></h2>



<h3 class="wp-block-heading"><span id="toc12">複数ページのタイトルを一括取得する</span></h3>



<p>A列にURLを並べておけば、各ページのタイトルをまとめて取得できます。</p>



<p>A1セルにURLを入力し、B1セルに次の数式を入れます。</p>



<pre class="wp-block-code"><code>=IMPORTXML(A1, &quot;//title&quot;)</code></pre>



<p>この数式をB列にコピーすれば、各URLのタイトルを一覧表にできます。競合調査やサイト内のタイトル確認に便利ですよ。</p>



<p>ただし、IMPORT系関数は1つのスプレッドシートにつき50個までという制限があります。大量のURLを調査する場合は50個以内に抑えてください。</p>



<h3 class="wp-block-heading"><span id="toc13">特定のクラスを持つ要素を取得する</span></h3>



<p>XPathの条件指定を使えば、特定のclass属性を持つ要素だけを取り出せます。</p>



<pre class="wp-block-code"><code>=IMPORTXML(&quot;https://example.com&quot;, &quot;//div[@class='price']&quot;)</code></pre>



<p>この数式は、<code>class="price"</code> が付いたdivタグの内容だけを取得します。</p>



<p>Webページから価格情報やステータス表示などを取り出すときに使えるテクニックです。</p>



<h3 class="wp-block-heading"><span id="toc14">XPathで特定の位置の要素を取得する</span></h3>



<p>見出しの中から「最初の1つだけ」を取得したい場合は、XPathに位置指定を追加します。</p>



<pre class="wp-block-code"><code>=IMPORTXML(&quot;https://example.com&quot;, &quot;(//h2)[1]&quot;)</code></pre>



<p><code>(//h2)[1]</code> は「すべてのh2の中から1番目だけ」を意味します。2番目なら <code>[2]</code> に変えてください。</p>



<p>複数のデータが展開されると困る場面で、ピンポイントで1つだけ取り出したいときに役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc15">IMPORTXML関数の結果を加工する</span></h3>



<p>IMPORTXML関数の結果は他の関数と組み合わせて加工できます。</p>



<p>たとえば、取得した文字列の文字数をカウントするにはこう書きます。</p>



<pre class="wp-block-code"><code>=LEN(IMPORTXML(&quot;https://example.com&quot;, &quot;//title&quot;))</code></pre>



<p>LEN関数（文字列の文字数を返す関数）と組み合わせれば、ページタイトルの文字数を確認できます。</p>



<h2 class="wp-block-heading"><span id="toc16">よくあるエラーと対処法</span></h2>



<p>IMPORTXML関数で「データが取得できない」ケースをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#N/A</code> エラー</td><td>XPathで指定した要素が存在しない</td><td>XPathの記述を確認する。ブラウザの開発者ツールでHTML構造を確認してタグ名やクラス名を再確認</td></tr><tr><td><code>#N/A</code> エラー</td><td>URLが間違っている・ページが存在しない</td><td>URLをブラウザで開いて正しいか確認する</td></tr><tr><td><code>#VALUE!</code> エラー</td><td>XPathの構文が間違っている</td><td>クォーテーションの閉じ忘れやスラッシュの抜けを確認する</td></tr><tr><td>データが取得できない</td><td>サイト側がアクセスを拒否している</td><td>robots.txtやサーバー設定で制限されているサイトからは取得できない</td></tr><tr><td>データが空になる</td><td>JavaScriptで動的に生成されたコンテンツ</td><td>IMPORTXML関数はHTMLソースの静的な要素のみ取得可能。JavaScriptで後から描画されるデータは対象外</td></tr><tr><td>古いデータが表示される</td><td>キャッシュが更新されていない</td><td>スプレッドシートを再読み込みする。または数式を一度消して再入力する</td></tr><tr><td><code>#ERROR!</code> エラー</td><td>IMPORT系関数の上限（50個）を超えた</td><td>1つのスプレッドシートで使えるIMPORT系関数は合計50個まで。不要な数式を削除する</td></tr></tbody></table></figure>



<p><code>#N/A</code> エラーが最もよく出ます。まずはシンプルな <code>"//title"</code> で取得テストしてみてください。タイトルが取得できればURLは正しいので、XPathの指定に問題があるとわかります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>XPathのデバッグには、ブラウザの開発者ツール（F12）が便利です。「Elements」タブでHTML構造を確認すれば、どのタグ名・クラス名を指定すべきかがわかります。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc17">Excelとの違い</span></h2>



<p>IMPORTXML関数はGoogleスプレッドシート専用の関数です。Excelには存在しません。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>Googleスプレッドシート</th><th>Excel</th></tr></thead><tbody><tr><td>IMPORTXML関数</td><td>使える</td><td>なし</td></tr><tr><td>XMLデータ取得の代替手段</td><td>IMPORTXML関数</td><td>Power Query「XMLから」</td></tr><tr><td>操作方法</td><td>セルに数式を入力するだけ</td><td>GUIウィザードで設定</td></tr><tr><td>XPath指定</td><td>数式の引数で直接指定</td><td>Power Queryエディタで操作</td></tr><tr><td>自動更新</td><td>シート再読み込み時</td><td>手動更新または自動更新設定</td></tr></tbody></table></figure>



<p>ExcelでXMLデータを取り込みたい場合は、「データ」タブ →「データの取得」→「XMLから」でPower Queryを使います。</p>



<p>スプレッドシートのIMPORTXML関数なら数式1つで完結するので、手軽さでは圧倒的に便利です。</p>



<h2 class="wp-block-heading"><span id="toc18">IMPORT系関数の使い分け</span></h2>



<p>Googleスプレッドシートには、IMPORTXML以外にもデータを取得するIMPORT系関数が用意されています。目的に応じて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>取得対象</th><th>用途例</th></tr></thead><tbody><tr><td><strong>IMPORTXML</strong></td><td>XPathで指定した要素</td><td>Webページの特定要素をピンポイントで取得</td></tr><tr><td><strong><a href="https://mashukabu.com/spreadsheet-importhtml-function/">IMPORTHTML</a></strong></td><td>HTMLのtable / list</td><td>Webページの表やリストをまるごと取得</td></tr><tr><td><strong><a href="https://mashukabu.com/spreadsheet-importdata-function/">IMPORTDATA</a></strong></td><td>CSV / TSVデータ</td><td>公開されているCSVファイルを取得</td></tr><tr><td><strong>IMPORTFEED</strong></td><td>RSS / Atomフィード</td><td>ニュースサイトの更新情報を取得</td></tr><tr><td><strong>IMPORTRANGE</strong></td><td>別のスプレッドシート</td><td>別ファイルのセル範囲を取得</td></tr></tbody></table></figure>



<p><strong>使い分けのポイント</strong>: Webページの「表」がほしいだけならIMPORTHTMLが手軽です。特定の要素をピンポイントで取り出したい場合はIMPORTXMLを使いましょう。CSVファイルの読み込みにはIMPORTDATAが最適です。</p>



<p>IMPORTXML関数はXPathの知識が必要なぶん、最も自由度が高い関数です。「表やリストでは取得できない要素を取りたい」と感じたら、IMPORTXML関数の出番ですよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>IMPORT系関数は1つのスプレッドシートにつき合計50個までしか使えません。複数のIMPORT関数を組み合わせる場合は、上限に注意してください。</p></blockquote>



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



<p>IMPORTXML関数は、XPathを使ってWebページやXMLデータから特定の要素を取得できる関数です。</p>



<p>ポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=IMPORTXML(URL, XPathクエリ)</code> で、引数は2つ</li><li>XPathでタグ名や属性を指定して、欲しいデータだけをピンポイントで取得できる</li><li>よく使うXPath: <code>//title</code>（タイトル）、<code>//h2</code>（見出し）、<code>//a/@href</code>（リンクURL）</li><li>Googleスプレッドシート専用の関数で、Excelには存在しない</li><li>JavaScriptで動的に生成されたコンテンツは取得できない</li><li>1スプレッドシートあたりIMPORT系関数は合計50個まで</li><li>表の取得には<a href="https://mashukabu.com/spreadsheet-importhtml-function/">IMPORTHTML関数</a>、CSV取得には<a href="https://mashukabu.com/spreadsheet-importdata-function/">IMPORTDATA関数</a>と使い分ける</li></ul>



<p>まずは <code>=IMPORTXML("好きなURL", "//title")</code> でページタイトルの取得から試してみてください。XPathの基本がわかれば、応用の幅はぐんと広がりますよ。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc20">関連記事</span></h3>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-importhtml-function/">スプレッドシートのIMPORTHTML関数の使い方｜Webページの表/リスト取得</a></li><li><a href="https://mashukabu.com/spreadsheet-importdata-function/">スプレッドシートのIMPORTDATA関数の使い方｜CSV/TSVデータ取得</a></li><li><a href="https://mashukabu.com/spreadsheet-filter-function/">スプレッドシートのFILTER関数の使い方｜条件でデータを自動抽出</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-importxml-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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-2" checked><label class="toc-title" for="toc-checkbox-2">目次</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>
