<?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>XPath &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/xpath/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Tue, 26 May 2026 14:04:07 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>XPath &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ExcelのWEBSERVICE関数の使い方｜Webサービスからデータを取得する（※廃止予定）</title>
		<link>https://mashukabu.com/excel-function-howto-use-webservice/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-webservice/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 23:41:38 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[API連携]]></category>
		<category><![CDATA[ENCODEURL関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[FILTERXML関数]]></category>
		<category><![CDATA[WEBSERVICE関数]]></category>
		<category><![CDATA[Web関数]]></category>
		<category><![CDATA[XPath]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6026</guid>

					<description><![CDATA[ExcelのWEBSERVICE関数の使い方を基本構文から実例まで解説。URL指定でWebサービスからデータを取得する手順、FILTERXML・ENCODEURLとの連携、廃止扱いの現状、代替手段（Power Query）まで丁寧に紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「ExcelのセルにURLを書いたら、そのままWebの情報を引っ張ってこれないかな？」</p>



<p class="wp-block-paragraph">為替レートや天気情報、RSSフィードなど、Webにある情報をExcelに取り込みたい場面ってありますよね。毎回コピペするのは面倒ですし、自動更新されれば作業がかなり楽になります。</p>



<p class="wp-block-paragraph">ExcelのWEBSERVICE関数を使えば、URLを指定するだけでWebサービスからデータを取得できますよ。FILTERXML関数と組み合わせれば、欲しい項目だけをスマートに抜き出すこともできます。</p>



<p class="wp-block-paragraph">この記事では、ExcelのWEBSERVICE関数の基本構文から、FILTERXML・ENCODEURLとの連携、現状の「廃止扱い」の注意点、Power Queryなど代替手段までを丁寧に解説します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>対象環境</strong>: Excel 2013以降のデスクトップ版（Windows/Mac）。Excel for the web・Excel Mobile では利用できません。また、2019年12月以降のMicrosoft 365では新規ファイルでの利用が廃止扱いになっています（後述）。</p></blockquote>




  <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のWEBSERVICE関数とは？Webからデータを取得するWeb関数</a><ol><li><a href="#toc2" tabindex="0">WEBSERVICE関数の読み方と位置づけ</a></li><li><a href="#toc3" tabindex="0">WEBSERVICE関数でできること</a></li><li><a href="#toc4" tabindex="0">対応バージョンと利用制限</a></li></ol></li><li><a href="#toc5" tabindex="0">ExcelのWEBSERVICE関数の書式と引数</a><ol><li><a href="#toc6" tabindex="0">基本構文</a></li><li><a href="#toc7" tabindex="0">引数の意味</a></li><li><a href="#toc8" tabindex="0">戻り値</a></li><li><a href="#toc9" tabindex="0">対応プロトコル</a></li></ol></li><li><a href="#toc10" tabindex="0">ExcelのWEBSERVICE関数の基本的な使い方</a><ol><li><a href="#toc11" tabindex="0">RSSフィードを取得する</a></li><li><a href="#toc12" tabindex="0">セル参照でURLを指定する</a></li><li><a href="#toc13" tabindex="0">動的なURLを作る</a></li></ol></li><li><a href="#toc14" tabindex="0">ExcelのWEBSERVICE関数の実践的な使い方・応用例</a><ol><li><a href="#toc15" tabindex="0">FILTERXML関数と組み合わせてXMLから値を抜き出す</a></li><li><a href="#toc16" tabindex="0">ENCODEURL関数で日本語URLをエンコードする</a></li><li><a href="#toc17" tabindex="0">為替レート取得の定番パターン</a></li></ol></li><li><a href="#toc18" tabindex="0">WEBSERVICE関数が廃止扱いになった背景と現状</a><ol><li><a href="#toc19" tabindex="0">廃止扱いの具体的な挙動</a></li><li><a href="#toc20" tabindex="0">廃止された理由</a></li><li><a href="#toc21" tabindex="0">実務での推奨方針</a></li></ol></li><li><a href="#toc22" tabindex="0">WEBSERVICE関数の代替手段</a><ol><li><a href="#toc23" tabindex="0">Power Queryを使う方法</a></li><li><a href="#toc24" tabindex="0">データ型「株価・地理」機能を使う</a></li><li><a href="#toc25" tabindex="0">VBAのXMLHTTPを使う方法</a></li></ol></li><li><a href="#toc26" tabindex="0">WEBSERVICE関数でよくあるエラーと対処法</a><ol><li><a href="#toc27" tabindex="0">#VALUE!エラーの原因と対処</a></li><li><a href="#toc28" tabindex="0">#NAME?エラーの原因と対処</a></li><li><a href="#toc29" tabindex="0">文字化けや日本語URLの対処</a></li></ol></li><li><a href="#toc30" tabindex="0">WEBSERVICE・FILTERXML・ENCODEURLの3点セット連携</a><ol><li><a href="#toc31" tabindex="0">基本テンプレート</a></li><li><a href="#toc32" tabindex="0">実務での使い分け早見表</a></li></ol></li><li><a href="#toc33" tabindex="0">まとめ｜ExcelのWEBSERVICE関数は用途を見極めて使おう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのWEBSERVICE関数とは？Webからデータを取得するWeb関数</span></h2>



<p class="wp-block-paragraph">ExcelのWEBSERVICE関数は、指定したURLにアクセスしてその応答データをセルに返してくれるWeb関数です。Excel 2013で追加されました。</p>



<p class="wp-block-paragraph">「わざわざブラウザでページを開いてコピペする」という手間を、関数ひとつで自動化できる便利な関数ですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">WEBSERVICE関数の読み方と位置づけ</span></h3>



<p class="wp-block-paragraph">WEBSERVICEは「ウェブサービス」と読みます。英語名そのままです。</p>



<p class="wp-block-paragraph">ExcelにはWeb関連の関数が3つあります。この3つは<strong>セットで使うのが基本</strong>ですよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>役割</th></tr></thead><tbody><tr><td>ENCODEURL</td><td>URLに含める文字列をエンコードする</td></tr><tr><td>WEBSERVICE</td><td>URLにアクセスしてデータを取得する</td></tr><tr><td>FILTERXML</td><td>取得したXMLデータから必要な要素を抜き出す</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">単独で使うよりも、組み合わせて使うと本領を発揮します。</p>



<h3 class="wp-block-heading"><span id="toc3">WEBSERVICE関数でできること</span></h3>



<p class="wp-block-paragraph">WEBSERVICE関数を使うと、次のようなことができます。</p>



<ul class="wp-block-list"><li>Web APIからJSONやXMLデータを取得する</li><li>RSSフィードを取り込んで最新記事の一覧を作る</li><li>為替レートや株価などの外部データを自動取得する</li><li>郵便番号検索APIで住所を自動入力する</li><li>天気予報APIで1週間の天気をExcelに表示する</li></ul>



<p class="wp-block-paragraph">要するに、<strong>「URLで取得できるデータはExcelに引き込める」</strong>という便利な関数なんです。</p>



<h3 class="wp-block-heading"><span id="toc4">対応バージョンと利用制限</span></h3>



<p class="wp-block-paragraph">ここは重要なポイントなので、しっかり押さえてくださいね。</p>



<figure class="wp-block-table"><table><thead><tr><th>環境</th><th>利用可否</th></tr></thead><tbody><tr><td>Excel 2013〜2021（Windows/Mac デスクトップ版）</td><td>利用可能</td></tr><tr><td>Microsoft 365（Windows デスクトップ版）</td><td>廃止扱い（既存ファイルのみ動作）</td></tr><tr><td>Excel for the web（ブラウザ版）</td><td>利用不可</td></tr><tr><td>Excel Mobile（iOS/Android）</td><td>利用不可</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Microsoft 365では、2019年12月以降の新規ファイルではWEBSERVICE関数が利用できません。これは「deprecated（廃止扱い）」というステータスで、<strong>古いファイルでは引き続き動作するものの、新規入力はブロックされる</strong>という扱いです。</p>



<p class="wp-block-paragraph">セキュリティ上の懸念と、Power Queryなどより高機能な代替手段が登場したことが廃止の背景ですよ。代替手段については記事後半で紹介しますね。</p>



<h2 class="wp-block-heading"><span id="toc5">ExcelのWEBSERVICE関数の書式と引数</span></h2>



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



<pre class="wp-block-code"><code>=WEBSERVICE(URL)</code></pre>



<p class="wp-block-paragraph">カッコの中に、アクセスしたいURLを文字列として指定します。非常にシンプルな構文ですね。</p>



<h3 class="wp-block-heading"><span id="toc7">引数の意味</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>アクセス先のURL。HTTPまたはHTTPSのみ対応。最大32,767文字まで</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">引数はURLひとつだけなので、とても覚えやすい関数です。</p>



<h3 class="wp-block-heading"><span id="toc8">戻り値</span></h3>



<p class="wp-block-paragraph">戻り値は、指定したURLにアクセスして取得した<strong>生の文字列データ</strong>です。XML形式、JSON形式、プレーンテキストなど、サーバーが返す内容がそのまま返ってきます。</p>



<p class="wp-block-paragraph">戻り値の文字列の長さは<strong>最大32,767文字</strong>までです。セルの表示上限と同じですね。これを超えるデータは切り捨てられるので、大量データの取得には向いていません。</p>



<h3 class="wp-block-heading"><span id="toc9">対応プロトコル</span></h3>



<p class="wp-block-paragraph">HTTPまたはHTTPSのみ対応しています。FTPやSMTP、ファイルパス（<code>file://</code>）は使えません。</p>



<p class="wp-block-paragraph">また、サーバー側でCookie認証や複雑な認証ヘッダーを要求するAPIには対応していません。<strong>認証不要の公開API</strong>を使うのが基本ですよ。</p>



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



<p class="wp-block-paragraph">まずはシンプルな例で動きを確認してみましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">RSSフィードを取得する</span></h3>



<p class="wp-block-paragraph">試しにRSSフィードのURLを指定してみます。A1セルに次の数式を入力します。</p>



<pre class="wp-block-code"><code>=WEBSERVICE(&quot;https://news.yahoo.co.jp/rss/topics/top-picks.xml&quot;)</code></pre>



<p class="wp-block-paragraph">結果として、RSSフィードのXMLデータがそのまま文字列でA1セルに返ってきます。セルをダブルクリックすると、<code><rss version="2.0">...<item><title>ニュース見出し</title>...</code> のような長い文字列が入っているのが確認できますよ。</p>



<p class="wp-block-paragraph">このままだと読みにくいので、次のFILTERXML関数で必要な部分だけを抜き出します。</p>



<h3 class="wp-block-heading"><span id="toc12">セル参照でURLを指定する</span></h3>



<p class="wp-block-paragraph">URLを直接書かずに、セル参照で渡すこともできますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>セル</th><th>内容</th></tr></thead><tbody><tr><td>A1</td><td><code>https://example.com/api/data.xml</code></td></tr><tr><td>B1</td><td><code>=WEBSERVICE(A1)</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">B1セルに <code>=WEBSERVICE(A1)</code> と入力すると、A1セルのURLにアクセスした結果が返ります。</p>



<p class="wp-block-paragraph">URLを変更するだけで結果を切り替えられるので、<strong>複数のAPIを使い分ける用途</strong>に便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">動的なURLを作る</span></h3>



<p class="wp-block-paragraph">URLの一部を変数として組み立てたいケースもあります。<code>&</code> で文字列を連結すれば、セル値を組み込んだURLが作れますよ。</p>



<pre class="wp-block-code"><code>=WEBSERVICE(&quot;https://api.example.com/weather?city=&quot; &amp; A1)</code></pre>



<p class="wp-block-paragraph">A1セルに「tokyo」と入れれば <code>?city=tokyo</code>、「osaka」と入れれば <code>?city=osaka</code> のURLにアクセスできます。</p>



<p class="wp-block-paragraph">ただし日本語を含む場合は、後述のENCODEURL関数でエンコードする必要があります。半角英数字だけなら、このシンプルな連結で問題ありませんよ。</p>



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



<p class="wp-block-paragraph">基本がわかったところで、実務で使う応用例を3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc15">FILTERXML関数と組み合わせてXMLから値を抜き出す</span></h3>



<p class="wp-block-paragraph">WEBSERVICE関数の一番メジャーな使い方が、FILTERXML関数との組み合わせです。取得したXMLから、XPathで指定した要素だけを抜き出せます。</p>



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



<p class="wp-block-paragraph">たとえばRSSフィードの最新記事タイトルを1件取得するなら、次のように書きます。</p>



<pre class="wp-block-code"><code>=FILTERXML(WEBSERVICE(&quot;https://news.yahoo.co.jp/rss/topics/top-picks.xml&quot;), &quot;//item/title&quot;)</code></pre>



<p class="wp-block-paragraph">Microsoft 365やExcel 2021以降ならスピル機能で複数行に展開されますよ。Excel 2013〜2019では配列数式として入力してください。</p>



<p class="wp-block-paragraph">XPathの書き方は、<a href="https://mashukabu.com/excel-function-howto-use-filterxml/">ExcelのFILTERXML関数の使い方</a> で詳しく解説しています。</p>



<h3 class="wp-block-heading"><span id="toc16">ENCODEURL関数で日本語URLをエンコードする</span></h3>



<p class="wp-block-paragraph">URLに日本語や記号を含める場合は、ENCODEURL関数でエンコードしてから渡します。</p>



<pre class="wp-block-code"><code>=WEBSERVICE(&quot;https://api.example.com/search?q=&quot; &amp; ENCODEURL(A1))</code></pre>



<p class="wp-block-paragraph">A1に「経理処理」と入れた場合、ENCODEURL関数が「%E7%B5%8C%E7%90%86%E5%87%A6%E7%90%86」に変換してくれます。これでサーバー側でも正しく受け取れますよ。</p>



<p class="wp-block-paragraph">日本語を含むURLを直接 WEBSERVICE に渡すと、サーバーによっては<strong>文字化けや400エラー</strong>になることがあります。<strong>日本語が絡むときは必ず ENCODEURL を通す</strong>のがセオリーです。</p>



<p class="wp-block-paragraph">詳しくは <a href="https://mashukabu.com/excel-function-howto-use-encodeurl/">ExcelのENCODEURL関数の使い方</a> を参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc17">為替レート取得の定番パターン</span></h3>



<p class="wp-block-paragraph">Excelで為替レートを自動取得するパターンもよく使われます。無料の為替APIを使った例です。</p>



<figure class="wp-block-table"><table><thead><tr><th>セル</th><th>内容</th></tr></thead><tbody><tr><td>A1</td><td><code>USD</code></td></tr><tr><td>A2</td><td><code>JPY</code></td></tr><tr><td>B1</td><td><code>=FILTERXML(WEBSERVICE("https://www.floatrates.com/daily/" & LOWER(A1) & ".xml"), "//item[targetCurrency='" & A2 & "']/exchangeRate")</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これで「1USD＝何JPY」の為替レートが取れますよ。</p>



<p class="wp-block-paragraph">セルの値を変えれば他の通貨ペアにも対応できるので、<strong>為替計算シートのテンプレート</strong>として使いやすいですね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>WEBSERVICE関数は、シートを開くたびや再計算のたびにAPIへアクセスします。リクエスト頻度に制限のあるAPIでは、意図せず制限に引っかかる可能性があるので注意してくださいね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc18">WEBSERVICE関数が廃止扱いになった背景と現状</span></h2>



<p class="wp-block-paragraph">2019年12月以降のMicrosoft 365では、WEBSERVICE関数が廃止扱い（deprecated）になっています。ここは実務で必ず知っておきたいポイントですよ。</p>



<h3 class="wp-block-heading"><span id="toc19">廃止扱いの具体的な挙動</span></h3>



<p class="wp-block-paragraph">「廃止扱い」と聞くと「もう使えないの？」と思うかもしれませんが、実際の挙動はもう少し複雑です。</p>



<figure class="wp-block-table"><table><thead><tr><th>状況</th><th>挙動</th></tr></thead><tbody><tr><td>既存ファイルに書かれたWEBSERVICE関数</td><td>そのまま動作する（計算される）</td></tr><tr><td>新規ファイルで入力</td><td>関数名が認識されず <code>#NAME?</code> エラーになる場合がある</td></tr><tr><td>組織ポリシーでブロック</td><td>管理者が無効化している場合は使えない</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">つまり、<strong>過去に作ったファイルは動くが、新規に作るファイルでは使えない</strong>というのが基本的な状況です。</p>



<p class="wp-block-paragraph">Excel 2013〜2021（パッケージ版）やMac版では今でも普通に使えるので、Microsoft 365限定の話ですよ。</p>



<h3 class="wp-block-heading"><span id="toc20">廃止された理由</span></h3>



<p class="wp-block-paragraph">Microsoftが WEBSERVICE 関数を廃止扱いにした理由は、大きく2つあります。</p>



<ol class="wp-block-list"><li><strong>セキュリティ上の懸念</strong>: 悪意のあるURLをセルに埋め込む攻撃ベクトルになりうる</li><li><strong>代替手段の成熟</strong>: Power Query が標準搭載され、より安全で高機能なデータ取得が可能になった</li></ol>



<p class="wp-block-paragraph">要するに、「セキュリティリスクが高く、もっと良い代替手段があるから引退させる」という判断ですね。</p>



<h3 class="wp-block-heading"><span id="toc21">実務での推奨方針</span></h3>



<p class="wp-block-paragraph">これから新しく作る業務ファイルでは、<strong>WEBSERVICE関数よりもPower Queryを使うのがおすすめ</strong>です。</p>



<p class="wp-block-paragraph">ただし、次のようなケースでは引き続きWEBSERVICE関数が有効ですよ。</p>



<ul class="wp-block-list"><li>過去に作った既存ファイルのメンテナンス</li><li>Excel 2016/2019/2021のパッケージ版を使っている環境</li><li>シンプルなRSS取得など軽い用途</li><li>学習目的やプロトタイピング</li></ul>



<p class="wp-block-paragraph">仕事で長期運用するシートなら、次のセクションで紹介するPower Queryへの移行を検討してくださいね。</p>



<h2 class="wp-block-heading"><span id="toc22">WEBSERVICE関数の代替手段</span></h2>



<p class="wp-block-paragraph">WEBSERVICE関数の代わりとして、Excelには複数の選択肢があります。用途に応じて使い分けましょう。</p>



<h3 class="wp-block-heading"><span id="toc23">Power Queryを使う方法</span></h3>



<p class="wp-block-paragraph">一番おすすめなのが <strong>Power Query</strong>（データ > データの取得）です。Microsoft 365・Excel 2016以降に標準搭載されています。</p>



<p class="wp-block-paragraph">Power Queryには、次のようなメリットがありますよ。</p>



<ul class="wp-block-list"><li>JSON・XML・CSV・HTMLなど多様な形式に対応</li><li>認証付きAPIに対応（OAuth・Basic認証など）</li><li>32,767文字制限なし</li><li>データ整形（列追加・フィルタ・結合）まで一貫して処理できる</li><li>定期更新のスケジュール設定が可能</li></ul>



<p class="wp-block-paragraph">手順は「データ」タブ →「データの取得」→「Webから」→ URLを入力、という流れです。GUIで操作できるので、関数を書くより直感的ですよ。</p>



<h3 class="wp-block-heading"><span id="toc24">データ型「株価・地理」機能を使う</span></h3>



<p class="wp-block-paragraph">Microsoft 365には「株価」「地理」という<strong>データ型機能</strong>があります。リンクされたデータ型とも呼ばれます。</p>



<figure class="wp-block-table"><table><thead><tr><th>データ型</th><th>取得できる情報</th></tr></thead><tbody><tr><td>株価</td><td>株価、時価総額、為替レート、変化率など</td></tr><tr><td>地理</td><td>人口、首都、GDP、通貨、タイムゾーンなど</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い方は簡単で、セルに「USD/JPY」と入れて「データ > 株価」を選ぶだけ。Excelが自動でデータを引き込んできますよ。</p>



<p class="wp-block-paragraph">株価や為替レートだけなら、WEBSERVICE関数よりもこちらの方が手軽で安全です。</p>



<h3 class="wp-block-heading"><span id="toc25">VBAのXMLHTTPを使う方法</span></h3>



<p class="wp-block-paragraph">より高度な制御が必要なら、VBAの <code>MSXML2.XMLHTTP</code> を使う方法もあります。Excelのマクロから直接HTTPリクエストを投げられますよ。</p>



<pre class="wp-block-code"><code>Sub getApiData()
    '--- 変数宣言 ---
    Dim http As Object
    Dim url As String

    '--- 取得先URL ---
    url = &quot;https://api.example.com/data.xml&quot;

    '--- HTTPリクエスト送信 ---
    Set http = CreateObject(&quot;MSXML2.XMLHTTP&quot;)
    http.Open &quot;GET&quot;, url, False
    http.send

    '--- 結果をセルに書き込み ---
    Range(&quot;A1&quot;).Value = http.responseText
End Sub</code></pre>



<p class="wp-block-paragraph">認証ヘッダーの追加や、POSTリクエストの送信、長大なレスポンスの処理など、WEBSERVICE関数ではできない処理が可能ですよ。</p>



<p class="wp-block-paragraph">ただしVBAはマクロ有効ブック（.xlsm）が必要で、組織によってはマクロブロックがかかっています。<strong>Power Queryが使えるならPower Queryを優先</strong>するのが無難ですね。</p>



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



<p class="wp-block-paragraph">実際にWEBSERVICE関数を使うと、エラーに遭遇することがあります。原因と対処法を表でまとめておきますね。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー/症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>URLがHTTP/HTTPS以外、または不正な形式</td><td>httpsで始まる正しいURLを指定する</td></tr><tr><td>#VALUE!</td><td>サーバーが200以外のHTTPステータスを返した</td><td>URLをブラウザで開いて動作確認する</td></tr><tr><td>#VALUE!</td><td>タイムアウト（30秒以上応答なし）</td><td>APIの応答速度を確認する、キャッシュを検討</td></tr><tr><td>#N/A</td><td>Excel for the web・Mobileで実行している</td><td>デスクトップ版Excelで開く</td></tr><tr><td>#NAME?</td><td>Microsoft 365で新規ファイル利用（廃止扱い）</td><td>Power Queryなど代替手段を使う</td></tr><tr><td>文字化け</td><td>日本語URLを直接指定している</td><td>ENCODEURL関数でエンコードする</td></tr><tr><td>結果が切れる</td><td>32,767文字の上限を超えている</td><td>Power QueryかVBAで取得する</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">一番多いのが #VALUE! エラーです。主な原因は3つあります。</p>



<p class="wp-block-paragraph"><strong>パターン1: URLの形式が不正</strong></p>



<pre class="wp-block-code"><code>=WEBSERVICE(&quot;example.com/data.xml&quot;)</code></pre>



<p class="wp-block-paragraph"><code>https://</code> のようなスキームが抜けていると #VALUE! になります。必ず <code>https://</code> や <code>http://</code> から始まるフルURLを指定してくださいね。</p>



<p class="wp-block-paragraph"><strong>パターン2: サーバーが4xx・5xx応答を返した</strong></p>



<p class="wp-block-paragraph">URL自体は正しくても、サーバー側で認証エラー（401）やNotFound（404）を返すと #VALUE! が返ります。</p>



<p class="wp-block-paragraph">まずはブラウザで同じURLを開き、<strong>画面が正しく表示されるか</strong>を確認しましょう。ブラウザで見られないURLはWEBSERVICE関数でも取得できません。</p>



<p class="wp-block-paragraph"><strong>パターン3: タイムアウト</strong></p>



<p class="wp-block-paragraph">WEBSERVICE関数には30秒程度のタイムアウトがあります。応答の遅いサーバーではタイムアウトでエラーになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc28">#NAME?エラーの原因と対処</span></h3>



<p class="wp-block-paragraph">Microsoft 365で新規ファイルに入力したときに #NAME? エラーになったら、これが <strong>廃止扱い</strong>の影響です。</p>



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



<p class="wp-block-paragraph">Excelが「この関数は知らない」と判断してエラーを返してきます。この場合は <strong>Power Queryを使うしかありません</strong>。</p>



<p class="wp-block-paragraph">古いExcelファイル（.xls形式、2019年より前に作ったファイル）で開き直せば動く場合もありますが、基本は代替手段に移行するのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc29">文字化けや日本語URLの対処</span></h3>



<p class="wp-block-paragraph">URLに日本語や記号が含まれるとき、ENCODEURL関数を通さないと文字化けしますよ。</p>



<pre class="wp-block-code"><code># 誤った書き方
=WEBSERVICE(&quot;https://api.example.com/search?q=経理処理&quot;)

# 正しい書き方
=WEBSERVICE(&quot;https://api.example.com/search?q=&quot; &amp; ENCODEURL(&quot;経理処理&quot;))</code></pre>



<p class="wp-block-paragraph">ENCODEURL関数は日本語・記号・スペースなどを「%XX」形式に変換してくれます。<strong>URLに変動する値を埋め込むときは必ずENCODEURLを通す</strong>と覚えておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc30">WEBSERVICE・FILTERXML・ENCODEURLの3点セット連携</span></h2>



<p class="wp-block-paragraph">最後に、Web関数3点セットの定番パターンをまとめておきますね。この形をテンプレとして覚えると、応用範囲がグッと広がりますよ。</p>



<h3 class="wp-block-heading"><span id="toc31">基本テンプレート</span></h3>



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



<p class="wp-block-paragraph">処理の流れはこうです。</p>



<ol class="wp-block-list"><li>ENCODEURLでURLを安全な形式にエンコード</li><li>WEBSERVICEでエンコード済みURLにアクセスしてXMLを取得</li><li>FILTERXMLでXPathを使って必要な要素を抜き出す</li></ol>



<p class="wp-block-paragraph">それぞれの関数の役割を分担することで、<strong>どんなWebデータでも扱える万能パターン</strong>になります。</p>



<h3 class="wp-block-heading"><span id="toc32">実務での使い分け早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>使う関数</th></tr></thead><tbody><tr><td>URLでWebデータを丸ごと取得したい</td><td>WEBSERVICE のみ</td></tr><tr><td>取得したXMLから一部だけ抜き出したい</td><td>WEBSERVICE + FILTERXML</td></tr><tr><td>URLに日本語・記号を含める必要がある</td><td>ENCODEURL を追加</td></tr><tr><td>JSON形式のAPIを使いたい</td><td>Power Query（WEBSERVICEはJSON非対応）</td></tr><tr><td>認証付きAPIを使いたい</td><td>Power Query または VBA</td></tr><tr><td>32,767文字を超える大量データ</td><td>Power Query または VBA</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">WEBSERVICE関数が得意なのは「<strong>公開されているシンプルなXML/RSSデータの取得</strong>」です。JSONや認証付きAPI、大量データはPower Queryに任せるのが賢い使い分けですよ。</p>



<h2 class="wp-block-heading"><span id="toc33">まとめ｜ExcelのWEBSERVICE関数は用途を見極めて使おう</span></h2>



<p class="wp-block-paragraph">ExcelのWEBSERVICE関数の使い方を、基本から応用まで一通り紹介してきました。要点をおさらいしておきますね。</p>



<ul class="wp-block-list"><li>WEBSERVICE関数は <strong>URLを指定してWebからデータを取得する</strong> Web関数</li><li>構文は <code>=WEBSERVICE(URL)</code>。引数はURL1つだけとシンプル</li><li>戻り値は<strong>生の文字列データ</strong>。最大32,767文字まで</li><li>HTTP/HTTPSのみ対応。FTP・認証付きAPIは不可</li><li>Excel 2013以降のデスクトップ版で利用可能。Webブラウザ版・Mobile版は非対応</li><li><strong>Microsoft 365では2019年12月以降、新規ファイルでの利用が廃止扱い</strong></li><li>FILTERXML・ENCODEURLとセットで使うのが定番パターン</li><li>新規の業務ファイルでは <strong>Power Query や データ型機能</strong> の利用が推奨</li></ul>



<p class="wp-block-paragraph">「URLでデータを取れる時代は終わりつつある」と捉えて、<strong>既存ファイルのメンテナンスではWEBSERVICE、新規ではPower Query</strong>と使い分けるのが実務的な判断ですよ。</p>



<p class="wp-block-paragraph">Web関数を使いこなせると、Excelの活用シーンがグッと広がります。下の関連記事もあわせて読んで、Excelのデータ連携スキルを高めてみてくださいね。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-filterxml/">ExcelのFILTERXML関数の使い方</a> — 取得したXMLの解析に必須</li><li><a href="https://mashukabu.com/excel-function-howto-use-encodeurl/">ExcelのENCODEURL関数の使い方</a> — 日本語URLのエンコードに必須</li><li><a href="https://mashukabu.com/excel-function-alphabetical-order/">Excel関数一覧（アルファベット順）</a> — 関数全体を俯瞰したいとき</li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数 機能別リファレンス</a> — 目的から関数を探したいとき</li></ul>



<p class="wp-block-paragraph">Webデータを自在に扱えるビジネスパーソンを目指していきましょうね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-webservice/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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 class="wp-block-paragraph">「Webページから特定のデータだけを取り出したいのに、表まるごとしか取得できない」。そんな経験はありませんか。</p>



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



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



<p class="wp-block-paragraph">この記事では、スプレッドシートの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-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">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 class="wp-block-paragraph">IMPORTXML関数は、<strong>XMLやHTML形式のデータからXPathで指定した要素を取得する関数</strong>です。</p>



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



<p class="wp-block-paragraph">たとえば、次のようなデータを取得できます。</p>



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">カッコの中に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 class="wp-block-paragraph">第1引数にはWebページのURLを指定します。ダブルクォーテーションで囲むか、URLが入力されたセルを参照します。</p>



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



<p class="wp-block-paragraph">よく使う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 class="wp-block-paragraph"><code>//</code> は「ページ内のどこにあっても検索する」という意味です。タグ名を続けるだけで、そのタグの中身を取得できます。</p>



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



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



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



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



<p class="wp-block-paragraph">1つのセルにページタイトルが表示されます。</p>



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



<p class="wp-block-paragraph">ページ内のすべてのh2見出しを一覧で取得できます。</p>



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph"><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 class="wp-block-paragraph">A列にURLを並べておけば、各ページのタイトルをまとめて取得できます。</p>



<p class="wp-block-paragraph">A1セルにURLを入力し、B1セルに次の数式を入れます。</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p class="wp-block-paragraph">IMPORTXML関数の結果は他の関数と組み合わせて加工できます。</p>



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



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



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">ExcelでXMLデータを取り込みたい場合は、「データ」タブ →「データの取得」→「XMLから」でPower Queryを使います。</p>



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



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">IMPORTXML関数は、XPathを使ってWebページやXMLデータから特定の要素を取得できる関数です。</p>



<p class="wp-block-paragraph">ポイントを整理します。</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 class="wp-block-paragraph">まずは <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 class="wp-block-paragraph">「ExcelでXMLデータから値を取り出したいけど、やり方がわからない…」</p>



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



<p class="wp-block-paragraph">この記事では、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-3" checked><label class="toc-title" for="toc-checkbox-3">目次</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">文字列の要素数を数える（FILTERXML応用）</a><ol><li><a href="#toc21" tabindex="0">ROWS関数と組み合わせて要素数を取得する</a></li></ol></li><li><a href="#toc22" tabindex="0">LET関数との組み合わせで数式を読みやすくする</a><ol><li><a href="#toc23" tabindex="0">基本パターン：カンマ区切りの分割</a></li><li><a href="#toc24" tabindex="0">複数区切り文字のケース</a></li></ol></li><li><a href="#toc25" tabindex="0">FILTERXML関数のよくある質問（FAQ）</a><ol><li><a href="#toc26" tabindex="0">Q1. Mac版のExcelでFILTERXML関数は使える？</a></li><li><a href="#toc27" tabindex="0">Q2. 区切り文字が複数種類ある場合はどうすれば？</a></li><li><a href="#toc28" tabindex="0">Q3. データに & や </a></li><li><a href="#toc29" tabindex="0">Q4. FILTERXML関数はExcel 365でも使える？</a></li></ol></li><li><a href="#toc30" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



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



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">基本構文は次のとおりです。</p>



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



<p class="wp-block-paragraph">引数は2つとも必須です。省略するとエラーになります。</p>



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



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



<p class="wp-block-paragraph">指定する文字列は、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 class="wp-block-paragraph">XPath（XML Path Language）の記法で、取得したい要素の位置を指定します。</p>



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



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">次のような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 class="wp-block-paragraph">ここから2番目の要素「みかん」を取り出すには、次の数式を使います。</p>



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



<p class="wp-block-paragraph">結果は <code>みかん</code> です。</p>



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



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



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



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



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



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



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



<p class="wp-block-paragraph">処理の流れを整理すると次のようになります。</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 class="wp-block-paragraph">パターンを一度覚えれば、どんな区切り文字にも応用できます。</p>



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



<p class="wp-block-paragraph">セル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 class="wp-block-paragraph">この数式は内部で次のように変換されます。</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 class="wp-block-paragraph">結果は <code>りんご</code> <code>みかん</code> <code>ぶどう</code> の3つの値です。横方向に展開したい場合は、数式全体をTRANSPOSE関数で囲みます。</p>



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



<p class="wp-block-paragraph">セル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 class="wp-block-paragraph">結果は <code>東京</code> <code>大阪</code> <code>名古屋</code> になります。半角スペースと全角スペースは区別されるので注意してください。</p>



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



<p class="wp-block-paragraph">セル内改行（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 class="wp-block-paragraph">セル内の改行をそのまま区切り文字として扱えます。複数行のデータを個別のセルに展開したいときに便利です。</p>



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



<p class="wp-block-paragraph">分割した中から特定の位置の値だけがほしい場合は、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 class="wp-block-paragraph"><code>r/n[2]</code> で2番目の要素だけを返します。最後の要素がほしい場合は <code>r/n[last()]</code> を使ってください。先頭3件なら <code>r/n[position()<=3]</code> です。</p>



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



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



<p class="wp-block-paragraph">配列で結果を返す場合、一部のセルでエラーが出ることがあります。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 class="wp-block-paragraph">文字列分割で使う場合は、この書き方をセットで覚えておくと安心です。</p>



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



<p class="wp-block-paragraph">文字列分割の用途では、<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 class="wp-block-paragraph"><strong>TEXTSPLITが使える環境ならTEXTSPLITを優先</strong>してください。数式がシンプルで、Mac・Web版でも動作します。</p>



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



<h2 class="wp-block-heading"><span id="toc20">文字列の要素数を数える（FILTERXML応用）</span></h2>



<p class="wp-block-paragraph">カンマ区切りの文字列が何個の要素を持つかを数えたいときも、FILTERXMLが使えます。</p>



<h3 class="wp-block-heading"><span id="toc21">ROWS関数と組み合わせて要素数を取得する</span></h3>



<p class="wp-block-paragraph">A2に <code>りんご,みかん,ぶどう</code> が入っているとき、カンマ区切りの要素数は次の数式で求められます。</p>



<pre class="wp-block-code"><code>=ROWS(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 class="wp-block-paragraph">結果は「3」です。FILTERXML が3要素の配列を返し、ROWS関数でその行数（＝要素数）を数えています。</p>



<p class="wp-block-paragraph">同じことはLENとSUBSTITUTEだけでも計算できます。</p>



<pre class="wp-block-code"><code>=LEN(A2)-LEN(SUBSTITUTE(A2,&quot;,&quot;,&quot;&quot;))+1</code></pre>



<p class="wp-block-paragraph">「区切り文字の数 + 1 = 要素数」という発想です。空白要素が含まれない場合はこちらの方がシンプルです。</p>



<h2 class="wp-block-heading"><span id="toc22">LET関数との組み合わせで数式を読みやすくする</span></h2>



<p class="wp-block-paragraph">FILTERXMLを使った文字列分割の数式は、SUBSTITUTE関数のネストが深くなりがちで読みにくくなります。<a href="https://mashukabu.com/excel-function-howto-use-let/">LET関数</a>を組み合わせると、途中の計算結果に名前をつけて数式を整理できます。</p>



<h3 class="wp-block-heading"><span id="toc23">基本パターン：カンマ区切りの分割</span></h3>



<p class="wp-block-paragraph">A2に <code>りんご,みかん,ぶどう</code> が入っているとき、LET関数なしの数式はこう書きます。</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 class="wp-block-paragraph">LET関数を使うと、XMLへの変換部分に名前をつけて意図を明確にできます。</p>



<pre class="wp-block-code"><code>=LET(
  xml, &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;,
  FILTERXML(xml,&quot;r/n&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>xml</code> という変数にXML文字列の組み立て処理を切り出すことで、「XML化してから取り出す」という2段階の構造がひと目でわかります。</p>



<h3 class="wp-block-heading"><span id="toc24">複数区切り文字のケース</span></h3>



<p class="wp-block-paragraph">カンマと読点（、）の両方を区切りにする場合、通常はSUBSTITUTEのネストが2段になります。</p>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(SUBSTITUTE(A2,&quot;,&quot;,&quot;&lt;/n&gt;&lt;n&gt;&quot;),&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 class="wp-block-paragraph">LET関数で各置換ステップを分けると、処理の流れが追いやすくなります。</p>



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



<p class="wp-block-paragraph"><code>step1</code> でカンマを変換し、<code>step2</code> で読点を変換するという順序が明確になります。区切り文字の種類が増えた場合も <code>step3</code> を追加するだけで対応できます。</p>



<p class="wp-block-paragraph">LET関数はMicrosoft 365（Windows・Mac共通）で使えます。FILTERXML自体はMac版で動作しないため、この組み合わせはWindows環境向けの使い方です。</p>



<h2 class="wp-block-heading"><span id="toc25">FILTERXML関数のよくある質問（FAQ）</span></h2>



<h3 class="wp-block-heading"><span id="toc26">Q1. Mac版のExcelでFILTERXML関数は使える？</span></h3>



<p class="wp-block-paragraph">使えません。FILTERXML関数はWindowsのXML解析エンジンに依存しているため、Mac版ExcelやExcel for the webでは動作しません。Macでは関数名が補完候補に表示されることがありますが、実行しても空白または #VALUE! が返ります。</p>



<p class="wp-block-paragraph">代替手段として、Mac版でも使える <a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数</a>（Microsoft 365必要）またはPower Queryを検討してください。</p>



<h3 class="wp-block-heading"><span id="toc27">Q2. 区切り文字が複数種類ある場合はどうすれば？</span></h3>



<p class="wp-block-paragraph">SUBSTITUTE関数をネストして複数の区切り文字を統一してからFILTERXMLに渡します。たとえばカンマと読点（、）の両方を区切りとしたい場合です。</p>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(SUBSTITUTE(A2,&quot;,&quot;,&quot;&lt;/n&gt;&lt;n&gt;&quot;),&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 class="wp-block-paragraph">内側のSUBSTITUTEで <code>、</code> を <code></n><n></code> に、外側で <code>,</code> を同様に変換します。区切り文字の種類が増える場合は同じようにSUBSTITUTEを追加してください。</p>



<h3 class="wp-block-heading"><span id="toc28">Q3. データに & や </span></h3>



<p class="wp-block-paragraph">XMLの予約文字（<code><</code> <code>></code> <code>&</code>）がデータに含まれていると <code>#VALUE!</code> エラーになります。事前にSUBSTITUTEで安全な文字に置き換えてください。</p>



<figure class="wp-block-table"><table><thead><tr><th>予約文字</th><th>置き換え例</th></tr></thead><tbody><tr><td><code>&</code></td><td><code>&amp;</code></td></tr><tr><td><code><</code></td><td><code>&lt;</code></td></tr><tr><td><code>></code></td><td><code>&gt;</code></td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>=FILTERXML(&quot;&lt;r&gt;&lt;n&gt;&quot;&amp;SUBSTITUTE(SUBSTITUTE(A2,&quot;&amp;&quot;,&quot;&amp;amp;&quot;),&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 class="wp-block-paragraph"><code>&</code> の置換は他の変換より先に行ってください。後から行うと置換後の <code>&amp;</code> の <code>&</code> まで再置換されてしまいます。</p>



<h3 class="wp-block-heading"><span id="toc29">Q4. FILTERXML関数はExcel 365でも使える？</span></h3>



<p class="wp-block-paragraph">はい。Microsoft 365（Windows版）でも使えます。ただし、Microsoft 365ではより機能豊富な<a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数</a>が利用可能です。単純な文字列分割であれば、TEXTSPLITの方がシンプルに書けてMacでも動作するため優先して使いましょう。FILTERXMLはExcel 2013〜2019との互換性が必要な場面や、XPathで要素数・特定インデックスを指定したい場面で使うのが最適です。</p>



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



<p class="wp-block-paragraph">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 class="wp-block-paragraph">文字列分割のテクニックは、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>
