<?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>文字列分割 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%E6%96%87%E5%AD%97%E5%88%97%E5%88%86%E5%89%B2/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 02 May 2026 23:01:46 +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>文字列分割 &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのTEXTSPLIT関数の使い方｜列方向・行方向・2次元分割を一発で書く完全ガイド</title>
		<link>https://mashukabu.com/spreadsheet-textsplit-function/</link>
					<comments>https://mashukabu.com/spreadsheet-textsplit-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:29:51 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[CSV変換]]></category>
		<category><![CDATA[SPLIT関数]]></category>
		<category><![CDATA[TEXTJOIN関数]]></category>
		<category><![CDATA[TEXTSPLIT関数]]></category>
		<category><![CDATA[区切り文字]]></category>
		<category><![CDATA[文字列分割]]></category>
		<category><![CDATA[行列分割]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4747</guid>

					<description><![CDATA[スプレッドシートのTEXTSPLIT関数の使い方を実務目線で解説。列方向だけでなく行方向にも分割できる強み、SPLITとの違い、CSV変換、複数回答アンケート展開、TEXTJOINとの相互変換、エラー対処までまるごと網羅。]]></description>
										<content:encoded><![CDATA[
<p>「カンマ区切りで1セルに詰め込まれたデータを、列に分けたい」「セル内改行で複数行入っている回答を、行に展開したい」。こういう依頼、地味にうんざりしますよね。1件ずつコピペで分けていたら半日仕事ですし、ミスも混ざります。</p>



<p>SPLIT関数は便利ですが、列方向にしか分割できません。改行で区切られたデータを行に展開したり、CSVっぽい文字列を一発で2次元の表に変えたりするのは苦手です。</p>



<p>そこで頼りになるのが <strong>TEXTSPLIT関数</strong> です。列方向だけでなく <strong>行方向にも</strong> 分割できて、両方を同時に指定すれば2次元の表もワンショットで作れます。Excel（Microsoft 365）にも同じ名前の関数があるので、両方のツールで使い回せるのも強みです。</p>



<p>この記事ではTEXTSPLIT関数の基本構文から、行方向分割、2次元展開、CSV変換、SPLITとの使い分け、TEXTJOINとの相互変換、よくあるエラーまで実務でそのまま使えるパターンをまるごと紹介していきます。</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">スプレッドシートのTEXTSPLIT関数とは？基本構文</a><ol><li><a href="#toc2" tabindex="0">=TEXTSPLIT(文字列, 列の区切り, &#8230;) の引数</a></li><li><a href="#toc3" tabindex="0">TEXTSPLITとSPLITの大きな違い</a></li></ol></li><li><a href="#toc4" tabindex="0">TEXTSPLIT関数の基本的な使い方（列方向に分割）</a></li><li><a href="#toc5" tabindex="0">TEXTSPLIT関数で行方向（縦）に分割する</a><ol><li><a href="#toc6" tabindex="0">セル内改行で区切られたデータを行に展開する</a></li></ol></li><li><a href="#toc7" tabindex="0">行と列の両方向に分割する（2次元の表に展開）</a><ol><li><a href="#toc8" tabindex="0">埋め値（pad_with）で #N/A を防ぐ</a></li></ol></li><li><a href="#toc9" tabindex="0">実務で使えるTEXTSPLITの活用パターン</a><ol><li><a href="#toc10" tabindex="0">CSVデータを表に変換する</a></li><li><a href="#toc11" tabindex="0">複数回答アンケートを行に展開する</a></li><li><a href="#toc12" tabindex="0">住所を都道府県・市区町村に分解する</a></li><li><a href="#toc13" tabindex="0">タグ文字列を行に並べる</a></li><li><a href="#toc14" tabindex="0">URLからパス要素を取り出す</a></li></ol></li><li><a href="#toc15" tabindex="0">SPLIT関数との違い・使い分け</a></li><li><a href="#toc16" tabindex="0">TEXTJOIN関数との相互変換（分割と結合のセット）</a></li><li><a href="#toc17" tabindex="0">ARRAYFORMULAで複数行を一括分割する</a></li><li><a href="#toc18" tabindex="0">TEXTSPLIT関数のよくあるエラーと対処法</a></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">スプレッドシートのTEXTSPLIT関数とは？基本構文</span></h2>



<p>TEXTSPLIT関数（読み方：テキストスプリット）は、<strong>指定した区切り文字で文字列を列方向・行方向に分割する</strong> 関数です。関数名は「TEXT（文字列）+ SPLIT（分割する）」に由来します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>TEXTSPLIT関数はGoogleスプレッドシートとExcel（Microsoft 365）の両方で使えます。引数の仕様もほぼ同じなので、両方のツールを行き来する方には心強い関数です。Excel 2019以前では使えないので注意してください。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc2">=TEXTSPLIT(文字列, 列の区切り, &#8230;) の引数</span></h3>



<pre class="wp-block-code"><code>=TEXTSPLIT(文字列, 列の区切り, [行の区切り], [空を無視], [大小区別], [埋め値])</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>文字列</td><td>必須</td><td>分割したい文字列またはセル参照</td></tr><tr><td>列の区切り</td><td>必須</td><td>列方向（右方向）の区切り文字。行のみ分割する場合は <code>""</code> を指定</td></tr><tr><td>行の区切り</td><td>任意</td><td>行方向（下方向）の区切り文字</td></tr><tr><td>空を無視</td><td>任意</td><td>TRUE: 空の結果を除外 / FALSE（既定）: 空セルも保持</td></tr><tr><td>大小区別</td><td>任意</td><td>0（既定）: 大文字小文字を区別 / 1: 区別しない</td></tr><tr><td>埋め値</td><td>任意</td><td>行列分割で要素数が揃わないとき不足部分に入れる値（既定は <code>#N/A</code>）</td></tr></tbody></table></figure>



<p>最低限必要なのは「文字列」と「列の区切り」の2つです。行方向の分割が不要なら、SPLIT関数とほぼ同じ感覚で使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">TEXTSPLITとSPLITの大きな違い</span></h3>



<p>ここでひとつだけ先に押さえておきたいのが、TEXTSPLITとSPLITの「区切り文字の扱い」の違いです。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;A-B--C&quot;, &quot;--&quot;)   → 「A-B」「C」 ※区切りは &quot;--&quot; 全体で1つ
=SPLIT(&quot;A-B--C&quot;, &quot;--&quot;)       → 「A」「B」「C」 ※&quot;-&quot; 1文字ずつが区切り扱い</code></pre>



<p>SPLITは既定では区切り文字を <strong>1文字ずつバラして</strong> 区切りに使います。TEXTSPLITは渡した文字列を <strong>そのまま1つの区切り</strong> として扱います。「区切りが2文字以上の記号」「区切りに英単語を使う」場面では、TEXTSPLITの方が直感どおりに動きます。</p>



<h2 class="wp-block-heading"><span id="toc4">TEXTSPLIT関数の基本的な使い方（列方向に分割）</span></h2>



<p>まずは一番シンプルな、列方向への分割から見ていきます。A1に <code>東京,大阪,名古屋,福岡</code> と入っているとします。</p>



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



<p>結果はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>B1</th><th>C1</th><th>D1</th><th>E1</th></tr></thead><tbody><tr><td>東京</td><td>大阪</td><td>名古屋</td><td>福岡</td></tr></tbody></table></figure>



<p>カンマを区切り文字に指定するだけで、4つの都市名が右方向に展開されました。SPLIT関数を知っている方には馴染みのある動きですよね。</p>



<p>スペース区切りや、フルネームの分解にも使えます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;田中 太郎&quot;, &quot; &quot;)
→ 「田中」「太郎」が2つのセルに分かれる</code></pre>



<p>複数文字の区切りもそのまま使えます。たとえば「、」（読点）と「：」（コロン）が混在するデータでも、区切り文字に2文字以上の文字列を指定できるのが強みです。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;商品A:100, 商品B:200, 商品C:300&quot;, &quot;, &quot;)
→ 「商品A:100」「商品B:200」「商品C:300」</code></pre>



<p>「カンマだけ」だと先頭にスペースが残りますが、<code>", "</code>（カンマ+スペース）を区切りにすれば余分なスペースなく分けられます。SPLITで同じことをやるとスペースまで区切り扱いになるので、ここは地味にTEXTSPLITが便利な場面です。</p>



<h2 class="wp-block-heading"><span id="toc5">TEXTSPLIT関数で行方向（縦）に分割する</span></h2>



<p>TEXTSPLIT関数の <strong>最大の特長は行方向（下方向）にも分割できる</strong> ことです。これはSPLIT関数にはない機能ですよ。</p>



<p>行方向に分割するには、第2引数（列の区切り）を空文字列 <code>""</code> にして、第3引数（行の区切り）に区切り文字を指定します。</p>



<p>A1に <code>りんご/みかん/ぶどう</code> と入っているとします。</p>



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



<p>結果はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>行</th><th>A列</th></tr></thead><tbody><tr><td>1</td><td>りんご</td></tr><tr><td>2</td><td>みかん</td></tr><tr><td>3</td><td>ぶどう</td></tr></tbody></table></figure>



<p>データが <strong>下方向に展開</strong> されました。列方向の区切りを空文字列 <code>""</code> にするのがポイントです。第2引数を省略するとエラーになるので注意してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc6">セル内改行で区切られたデータを行に展開する</span></h3>



<p>セル内で <code>Alt + Enter</code>（Macは <code>Option + Enter</code>）の改行で詰め込まれたデータも、TEXTSPLIT関数で行に分割できます。改行コードは <code>CHAR(10)</code> で表します。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A1, &quot;&quot;, CHAR(10))</code></pre>



<p>A1に「読書（改行）映画（改行）旅行」と入っていれば、3行に展開されます。アンケートの自由回答欄や、メモ帳から貼り付けた箇条書きを表データに変えたいときに重宝しますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>Windowsで作られたCSVだと改行コードが <code>CHAR(13)&CHAR(10)</code>（CR+LF）になっている場合があります。うまく分割できないときは、まず<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で <code>CHAR(13)</code> を空文字に置換してから渡すと安定します。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc7">行と列の両方向に分割する（2次元の表に展開）</span></h2>



<p>第2引数と第3引数を <strong>同時に指定</strong> すると、1つのセルから2次元の表を一発で作れます。これがTEXTSPLIT関数のいちばんの強みです。</p>



<p>A1に次のようなデータが入っているとします。</p>



<pre class="wp-block-code"><code>東京,100,個/大阪,200,箱/名古屋,150,個</code></pre>



<p>スラッシュで行を分け、カンマで列を分けたい場合の数式はこうです。</p>



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



<p>結果はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B列</th><th>C列</th><th>D列</th></tr></thead><tbody><tr><td>1行目</td><td>東京</td><td>100</td><td>個</td></tr><tr><td>2行目</td><td>大阪</td><td>200</td><td>箱</td></tr><tr><td>3行目</td><td>名古屋</td><td>150</td><td>個</td></tr></tbody></table></figure>



<p>1セルのデータが3行3列の表に展開されました。CSVデータをサッと表形式にしたいときに最強です。</p>



<h3 class="wp-block-heading"><span id="toc8">埋め値（pad_with）で #N/A を防ぐ</span></h3>



<p>行列分割で各行の要素数が異なると、不足部分に <code>#N/A</code> が表示されます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;東京,100/大阪&quot;, &quot;,&quot;, &quot;/&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>&nbsp;</th><th>B列</th><th>C列</th></tr></thead><tbody><tr><td>1行目</td><td>東京</td><td>100</td></tr><tr><td>2行目</td><td>大阪</td><td>#N/A</td></tr></tbody></table></figure>



<p>2行目は要素が1つしかないため、C列が <code>#N/A</code> になっています。これを避けるには第6引数（埋め値）で代わりの値を指定します。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;東京,100/大阪&quot;, &quot;,&quot;, &quot;/&quot;, , , &quot;&quot;)</code></pre>



<p>第4・第5引数は省略するのでカンマだけ並べます。こうすると <code>#N/A</code> の代わりに空文字列が入ります。<code>0</code> や <code>"-"</code> を指定することもできるので、用途に合わせて選んでみてください。</p>



<h2 class="wp-block-heading"><span id="toc9">実務で使えるTEXTSPLITの活用パターン</span></h2>



<p>ここからは仕事の現場でそのまま使える具体例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc10">CSVデータを表に変換する</span></h3>



<p>テキストファイルからコピーしたCSVデータが1つのセルに入っている場合です。行はセル内改行で区切られ、列はカンマで区切られています。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A1, &quot;,&quot;, CHAR(10))</code></pre>



<p>これだけで複数行・複数列の表データに変換できます。SPLIT関数だと列方向のみなので、1行ずつ処理する必要がありました。TEXTSPLITなら一発ですよ。</p>



<p>ヘッダー行が含まれていて、見出しと中身を分けたい場合は、複数のセルに分けてから<a href="https://mashukabu.com/spreadsheet-query-function/">QUERY関数</a>で整形するのもありです。</p>



<h3 class="wp-block-heading"><span id="toc11">複数回答アンケートを行に展開する</span></h3>



<p>アンケートの複数回答が「読書, 映画, 旅行」のように1セルにまとまっている場合です。集計やピボットテーブルにかけるには、回答ごとに行を分けたい場面が多いですよね。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A2, &quot;&quot;, &quot;, &quot;)</code></pre>



<p>第2引数を空文字列、第3引数に「, 」（カンマ+スペース）を指定すると、回答が下方向に展開されます。これを全回答者ぶん繰り返して縦に積めば、回答数の集計や<a href="https://mashukabu.com/spreadsheet-countif-function/">COUNTIF関数</a>でのカウントがラクになります。</p>



<h3 class="wp-block-heading"><span id="toc12">住所を都道府県・市区町村に分解する</span></h3>



<p>住所データを区切り文字で分割するケースです。「東京都-千代田区-丸の内1-1」のようにハイフンで区切られたデータなら、こう書けます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A2, &quot;-&quot;)</code></pre>



<p>ただし住所のハイフンが番地にも含まれる場合は、想定外の位置で分かれることがあります。番地を残したいときは、最初の2つだけ取り出すなどの工夫が必要です。</p>



<pre class="wp-block-code"><code>=INDEX(TEXTSPLIT(A2, &quot;-&quot;), 1, 1)   → 都道府県
=INDEX(TEXTSPLIT(A2, &quot;-&quot;), 1, 2)   → 市区町村</code></pre>



<p><a href="https://mashukabu.com/spreadsheet-index-function/">INDEX関数</a>で必要な要素だけを取り出す書き方も覚えておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">タグ文字列を行に並べる</span></h3>



<p>「#Excel #VBA #効率化」のようにシャープ区切りのタグ文字列も、TEXTSPLITで分割できます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A2, &quot;&quot;, &quot; &quot;)</code></pre>



<p>スペースで行に区切れば、タグごとに集計したり、別シートに転記したりが簡単です。シャープ自体を消したいときは、SUBSTITUTE関数を組み合わせます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(SUBSTITUTE(A2, &quot;#&quot;, &quot;&quot;), &quot;&quot;, &quot; &quot;)</code></pre>



<p>入れ子にすると一発でタグだけの縦リストが完成します。</p>



<h3 class="wp-block-heading"><span id="toc14">URLからパス要素を取り出す</span></h3>



<p>URLの「/」区切りも分割できます。<code>https://example.com/blog/2026/01/article</code> のようなURLからパス部分だけ取り出したいときに便利です。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;blog/2026/01/article&quot;, &quot;/&quot;)
→ 「blog」「2026」「01」「article」</code></pre>



<p>URL全体を渡すと先頭にスキーム（<code>https:</code>）が入るので、必要に応じて<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>や<a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>で前処理してから渡してくださいね。</p>



<h2 class="wp-block-heading"><span id="toc15">SPLIT関数との違い・使い分け</span></h2>



<p>TEXTSPLIT関数と<a href="https://mashukabu.com/spreadsheet-split-function/">SPLIT関数</a>はどちらも文字列分割の関数ですが、得意分野が違います。違いを整理してみました。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>TEXTSPLIT</th><th>SPLIT</th></tr></thead><tbody><tr><td>分割方向</td><td>列方向 + 行方向</td><td>列方向のみ</td></tr><tr><td>2次元分割</td><td>対応（列+行）</td><td>非対応</td></tr><tr><td>区切り文字の扱い</td><td>文字列全体を1つの区切りとして扱う</td><td>既定で1文字ずつ区切りとして扱う</td></tr><tr><td>1文字ずつ区切る</td><td>非対応</td><td>第3引数 TRUE で対応</td></tr><tr><td>空セルの扱い</td><td>第4引数で制御（既定 FALSE = 残す）</td><td>第4引数で制御（既定 TRUE = 除く）</td></tr><tr><td>大文字小文字</td><td>第5引数で区別しない設定が可能</td><td>区別する（変更不可）</td></tr><tr><td>埋め値の指定</td><td>第6引数で指定可能</td><td>なし</td></tr><tr><td>Excel互換</td><td>あり（Microsoft 365）</td><td>なし（スプレッドシート独自）</td></tr></tbody></table></figure>



<p><strong>使い分けの目安はこちらです。</strong></p>



<ul class="wp-block-list"><li><strong>列方向だけ・1区切り文字</strong>: どちらでもOK。シンプルにいくならSPLITが軽い</li><li><strong>区切り文字が2文字以上</strong>: TEXTSPLITが直感どおりに動く</li><li><strong>行方向の分割が必要</strong>: TEXTSPLIT一択</li><li><strong>2次元の表に展開したい</strong>: TEXTSPLITの独壇場</li><li><strong>1文字ずつ区切りたい（例: &#8220;a:b;c,d&#8221; を3記号で分けたい）</strong>: SPLITの第3引数 TRUE が便利</li><li><strong>Excelとの互換性が大事</strong>: TEXTSPLITならExcelでも同じ式で動く</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>既存のSPLIT関数の数式を移行するときは、区切り文字の扱いの違いに注意してください。SPLITで <code>",;"</code> を渡していた式は「カンマと;のいずれか」で区切る挙動ですが、TEXTSPLITだと「カンマ+セミコロン」の2文字を1つの区切り扱いにします。挙動を合わせたい場合は、TEXTSPLITの第2引数を配列 <code>{",", ";"}</code> で渡してください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc16">TEXTJOIN関数との相互変換（分割と結合のセット）</span></h2>



<p>TEXTSPLIT関数と<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>は <strong>「分割」と「結合」の逆の関係</strong> にあります。セットで覚えておくと、文字列操作の幅がグッと広がりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>操作</th><th>関数</th><th>やりたいこと</th></tr></thead><tbody><tr><td>分割</td><td>TEXTSPLIT</td><td>「東京,大阪,名古屋」→ 3つのセルに分ける</td></tr><tr><td>結合</td><td>TEXTJOIN</td><td>3つのセルを → 「東京,大阪,名古屋」にまとめる</td></tr></tbody></table></figure>



<p>実際に相互変換してみましょう。</p>



<p><strong>分割（TEXTSPLIT）:</strong></p>



<pre class="wp-block-code"><code>=TEXTSPLIT(&quot;東京,大阪,名古屋&quot;, &quot;,&quot;)
→ B1:「東京」 C1:「大阪」 D1:「名古屋」</code></pre>



<p><strong>結合（TEXTJOIN）:</strong></p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;,&quot;, TRUE, B1:D1)
→ 「東京,大阪,名古屋」</code></pre>



<p>同じ区切り文字（カンマ）を使えば元の形に戻せます。データの前処理で分割し、後処理で結合するパイプラインを組むときは、この2つを行き来できると効率的です。</p>



<p>なお、スプレッドシート独自の<a href="https://mashukabu.com/spreadsheet-join-function/">JOIN関数</a>でも結合はできます。ただし空セルを除外できる引数がない分、TEXTJOIN関数のほうが使い勝手はよいですよ。</p>



<h2 class="wp-block-heading"><span id="toc17">ARRAYFORMULAで複数行を一括分割する</span></h2>



<p>TEXTSPLIT関数は1セルの分割が基本ですが、複数行のデータを一気に分割したいときは少し工夫が必要です。スプレッドシートの場合、TEXTSPLITをARRAYFORMULAでそのまま囲ってもうまく動きません。各行で結果が複数セルに広がるため、衝突してしまうからです。</p>



<p>実務的には次の方針が安全です。</p>



<ul class="wp-block-list"><li><strong>数行〜数十行ぶん</strong>: TEXTSPLITをセルごとに貼り付ける（行ごとに展開先がずれない範囲で）</li><li><strong>大量行をまとめて処理したい</strong>: SPLIT関数を ARRAYFORMULAでまとめる</li></ul>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IFERROR(SPLIT(A2:A100, &quot;,&quot;)))</code></pre>



<p>行方向に分けたいなら、TEXTSPLITを1セルずつ貼り付けるか、 <a href="https://mashukabu.com/spreadsheet-flatten-function/">FLATTEN関数</a>や<a href="https://mashukabu.com/spreadsheet-tocol-function/">TOCOL関数</a>と組み合わせてリスト化する方法もあります。やりたい形に応じて関数を選んでみてください。</p>



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



<p>TEXTSPLIT関数で発生しやすいエラーをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>列の区切り（第2引数）が未指定</td><td>第2引数は必須。行のみ分割する場合は <code>""</code> を指定する</td></tr><tr><td><code>#N/A</code></td><td>行列分割で要素数が揃わない</td><td>第6引数（埋め値）に <code>""</code> や <code>0</code> を指定して埋める</td></tr><tr><td><code>#REF!</code></td><td>分割結果が隣のセルのデータを上書きしようとした</td><td>展開先に十分な空きセルを確保する</td></tr><tr><td>分割されない</td><td>全角・半角の不一致（<code>,</code> と <code>，</code> など）</td><td>区切り文字の全角・半角を確認する。SUBSTITUTEで統一する</td></tr><tr><td>大文字小文字で分割されない</td><td>既定で大文字小文字を区別する</td><td>第5引数を <code>1</code> にして区別しない設定にする</td></tr><tr><td>改行で分割できない</td><td>改行コードがLFではなくCRLF</td><td>SUBSTITUTEで <code>CHAR(13)</code> を除いてから渡す</td></tr></tbody></table></figure>



<p>最も多いのが <code>#N/A</code> エラーです。行列分割で各行の要素数が異なると自動的に <code>#N/A</code> が入る仕組みなので、 <strong>第6引数で埋め値を指定する</strong> 癖をつけておくと安心です。</p>



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



<p>第4・第5引数は省略するのでカンマだけ並べる、という書き方を覚えておけば困りません。</p>



<h2 class="wp-block-heading"><span id="toc19">TEXTSPLITが使えないときの代替手段</span></h2>



<p>TEXTSPLIT関数はGoogleスプレッドシートとExcel（Microsoft 365）で使えますが、Excel 2019以前のバージョンでは使えません。社内ファイルが古いExcelで開かれる可能性があるなら、代替手段も覚えておくと安心です。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>スプレッドシート</th><th>Excel 2019以前</th></tr></thead><tbody><tr><td>列方向の分割</td><td>SPLIT または TEXTSPLIT</td><td>データ→区切り位置 / 関数なら LEFT+FIND の組み合わせ</td></tr><tr><td>行方向の分割</td><td>TEXTSPLIT</td><td>関数では困難（マクロ推奨）</td></tr><tr><td>2次元分割</td><td>TEXTSPLIT</td><td>パワークエリ</td></tr></tbody></table></figure>



<p>スプレッドシートで完結する作業ならTEXTSPLITで十分です。Excelとファイルをやり取りするチームでは、相手のExcelバージョンを確認してから使うのが安全ですよ。</p>



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



<p>スプレッドシートのTEXTSPLIT関数は、 <strong>区切り文字で文字列を列方向・行方向・両方向に分割できる</strong> 強力な関数です。SPLIT関数では届かなかった「行方向の分割」「2次元展開」がワンショットで書けるのが大きな魅力です。</p>



<p>この記事で紹介したパターンをおさらいします。</p>



<ul class="wp-block-list"><li><strong>列方向の分割</strong>: <code>=TEXTSPLIT(A1, ",")</code> でSPLIT感覚に使える</li><li><strong>行方向の分割</strong>: 第2引数を <code>""</code> に、第3引数に区切り文字を指定</li><li><strong>2次元分割</strong>: 第2・第3引数を両方指定して1セルから表を作る</li><li><strong>CSV変換</strong>: <code>=TEXTSPLIT(A1, ",", CHAR(10))</code> で改行+カンマのCSVを表化</li><li><strong>複数回答アンケート</strong>: 第3引数に <code>", "</code> で回答ごとに行展開</li><li><strong>埋め値で #N/A 回避</strong>: 第6引数に <code>""</code> や <code>0</code> を指定</li><li><strong>TEXTJOINとセットで覚える</strong>: 分割と結合を行き来する前処理に強い</li></ul>



<p>列方向だけの分割なら<a href="https://mashukabu.com/spreadsheet-split-function/">SPLIT関数</a>でも十分ですが、行方向への分割やCSVデータの2次元展開はTEXTSPLIT関数の出番です。 <a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>との相互変換もセットで覚えておくと、文字列操作の選択肢が一気に増えますよ。</p>



<p>文字列を途中から取り出したいときは<a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>、余分なスペースを整理したいときは<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>、特定文字を別の文字に置き換えたいときは<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>も合わせてチェックしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-textsplit-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのSPLIT関数の使い方｜区切り文字で分割</title>
		<link>https://mashukabu.com/spreadsheet-split-function/</link>
					<comments>https://mashukabu.com/spreadsheet-split-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 09:49:06 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ARRAYFORMULA]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[SPLIT]]></category>
		<category><![CDATA[TEXTJOIN]]></category>
		<category><![CDATA[区切り文字]]></category>
		<category><![CDATA[文字列分割]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4305</guid>

					<description><![CDATA[スプレッドシートのSPLIT関数の使い方を基礎から解説。カンマ区切りデータの分割、姓名の分離、第3引数の使いどころ、ARRAYFORMULAとの一括処理まで。TEXTJOINとの相互変換も紹介。]]></description>
										<content:encoded><![CDATA[

  <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">SPLIT関数の基本的な使い方（スプレッドシート）</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">構文と引数の説明</a></li></ol></li><li><a href="#toc4" tabindex="0">SPLIT関数の基本的な使い方</a></li><li><a href="#toc5" tabindex="0">第3引数の使いどころ（各文字で分割するか）</a><ol><li><a href="#toc6" tabindex="0">TRUE（デフォルト）の動作</a></li><li><a href="#toc7" tabindex="0">FALSEにした場合の動作</a></li></ol></li><li><a href="#toc8" tabindex="0">実務で使える活用例</a><ol><li><a href="#toc9" tabindex="0">カンマ区切りデータの分割</a></li><li><a href="#toc10" tabindex="0">スラッシュ区切りの日付を年月日に分解</a></li><li><a href="#toc11" tabindex="0">メールアドレスから@より前を取り出す</a></li></ol></li><li><a href="#toc12" tabindex="0">ARRAYFORMULAとの組み合わせで一括処理</a></li><li><a href="#toc13" tabindex="0">TEXTJOINとの相互変換（分割と結合）</a></li><li><a href="#toc14" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc15" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SPLIT関数の基本的な使い方（スプレッドシート）</span></h2>



<p>Googleスプレッドシートで「カンマ区切りのデータを列ごとに分けたい」「名前を姓と名に分割したい」と思ったことはありませんか?</p>



<p>ExcelならCtrl+Eのフラッシュフィルや区切り位置機能が使えます。でもスプレッドシートにはその機能がなくて困りますよね。</p>



<p>そんなときに便利なのが<strong>SPLIT関数</strong>です。区切り文字を指定するだけで、文字列をパッと分割してくれますよ。この記事ではSPLIT関数の基本から、ARRAYFORMULAとの一括処理やTEXTJOINとの相互変換まで解説します。</p>



<h3 class="wp-block-heading"><span id="toc2">読み方と語源</span></h3>



<p>SPLIT関数の読み方は「スプリット」です。英語で「分割する」という意味があります。名前のとおり「文字列を分割する関数」と覚えてください。</p>



<p>なおSPLIT関数はGoogleスプレッドシート独自の関数です。Excelには搭載されていません。Excel（Microsoft 365）ではTEXTSPLIT関数が同様の機能を持ちます。古いバージョンでは使えないので注意してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc3">構文と引数の説明</span></h3>



<p>SPLIT関数の構文はこちらです。</p>



<pre class="wp-block-code"><code>=SPLIT(テキスト, 区切り文字, [各文字で分割], [空のテキストを削除])</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略可</th><th>説明</th></tr></thead><tbody><tr><td>テキスト</td><td>必須</td><td>分割したい文字列またはセル参照</td></tr><tr><td>区切り文字</td><td>必須</td><td>分割の基準となる文字（&#8221;,&#8221;や&#8221;/&#8221;など）</td></tr><tr><td>各文字で分割</td><td>省略可</td><td>TRUE（デフォルト）: 各文字で分割 / FALSE: 文字列全体で分割</td></tr><tr><td>空のテキストを削除</td><td>省略可</td><td>TRUE（デフォルト）: 空の結果を除外 / FALSE: 空セルも保持</td></tr></tbody></table></figure>



<p>SPLIT関数は結果を<strong>右方向に自動展開</strong>します。分割後の値が隣のセルに順番に入る仕組みです。</p>



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



<p>まずはシンプルな例から見てみましょう。A1に「東京,大阪,名古屋,福岡」と入っているとします。</p>



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



<p>結果はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>B1</th><th>C1</th><th>D1</th><th>E1</th></tr></thead><tbody><tr><td>東京</td><td>大阪</td><td>名古屋</td><td>福岡</td></tr></tbody></table></figure>



<p>カンマを区切り文字に指定しただけで、4つの都市名がB1からE1に分割されました。数式を入れたセルから右に向かって結果が展開されるのがポイントです。</p>



<p>スペース区切りのデータも同じ要領で分割できます。</p>



<pre class="wp-block-code"><code>=SPLIT(&quot;田中 太郎&quot;, &quot; &quot;)
→ 「田中」と「太郎」が2つのセルに分かれる</code></pre>



<p>フルネームを姓と名に分けたいときに便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc5">第3引数の使いどころ（各文字で分割するか）</span></h2>



<p>SPLIT関数でいちばん分かりにくいのが第3引数です。ここをしっかり押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">TRUE（デフォルト）の動作</span></h3>



<p>第3引数がTRUEのとき、区切り文字の<strong>1文字ずつ</strong>が区切りとして扱われます。</p>



<pre class="wp-block-code"><code>=SPLIT(&quot;2026/03-19&quot;, &quot;/-&quot;)</code></pre>



<p>この場合「/」と「-」のどちらでも分割されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>結果1</th><th>結果2</th><th>結果3</th></tr></thead><tbody><tr><td>2026</td><td>03</td><td>19</td></tr></tbody></table></figure>



<p>複数の区切り文字を一度に指定できるので便利ですよ。データの形式がバラバラなときに重宝します。</p>



<h3 class="wp-block-heading"><span id="toc7">FALSEにした場合の動作</span></h3>



<p>第3引数をFALSEにすると、区切り文字の<strong>文字列全体</strong>を1つの区切りとして扱います。</p>



<pre class="wp-block-code"><code>=SPLIT(&quot;りんご::みかん::ぶどう&quot;, &quot;::&quot;, FALSE)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>結果1</th><th>結果2</th><th>結果3</th></tr></thead><tbody><tr><td>りんご</td><td>みかん</td><td>ぶどう</td></tr></tbody></table></figure>



<p>「::」という2文字の文字列で分割されました。FALSEを指定しないと「:」1文字ずつで分割されて意図しない結果になります。</p>



<p><strong>使い分けの目安をまとめます。</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>場面</th><th>第3引数</th><th>理由</th></tr></thead><tbody><tr><td>カンマ・スラッシュなど1文字の区切り</td><td>TRUE（省略可）</td><td>デフォルトで問題なし</td></tr><tr><td>「, 」（カンマ+スペース）で区切り</td><td>FALSE</td><td>「,」と「 」が別々に扱われるのを防ぐ</td></tr><tr><td>「::」「->」など2文字以上の区切り</td><td>FALSE</td><td>文字列全体を1つの区切りにする</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc8">実務で使える活用例</span></h2>



<p>ここからは仕事で使える具体的な例を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc9">カンマ区切りデータの分割</span></h3>



<p>CSVデータを貼り付けたとき、1つのセルに「商品A,100,個」のように入ることがあります。</p>



<pre class="wp-block-code"><code>=SPLIT(A2, &quot;,&quot;)</code></pre>



<p>これだけで「商品A」「100」「個」が別々のセルに分かれます。大量のCSVデータを整理するときの第一歩ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">スラッシュ区切りの日付を年月日に分解</span></h3>



<p>「2026/03/19」のような日付文字列を年・月・日に分けたい場合です。</p>



<pre class="wp-block-code"><code>=SPLIT(A2, &quot;/&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>年</th><th>月</th><th>日</th></tr></thead><tbody><tr><td>2026</td><td>03</td><td>19</td></tr></tbody></table></figure>



<p>分割後の値は文字列になります。数値として使いたい場合はVALUE関数（文字列を数値に変換する関数）で変換してください。</p>



<h3 class="wp-block-heading"><span id="toc11">メールアドレスから@より前を取り出す</span></h3>



<p>「user@example.com」からユーザー名だけを取り出すケースです。</p>



<pre class="wp-block-code"><code>=SPLIT(A2, &quot;@&quot;)</code></pre>



<p>1つ目のセルに「user」、2つ目に「example.com」が入ります。<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>とLEFT関数を組み合わせる方法もありますが、SPLIT関数のほうがシンプルですね。</p>



<h2 class="wp-block-heading"><span id="toc12">ARRAYFORMULAとの組み合わせで一括処理</span></h2>



<p>SPLIT関数は1つのセルに対して処理を行います。「複数行のデータを一括で分割したい」と思うかもしれませんね。</p>



<p>実はSPLIT関数は直接ARRAYFORMULAに対応していません。複数行を一括処理するには、各行にSPLIT関数をコピーするのがいちばん確実です。</p>



<p>B2セルに以下の数式を入れて、下方向にコピーしてください。</p>



<pre class="wp-block-code"><code>=SPLIT(A2, &quot;,&quot;)</code></pre>



<p>A2からA10にデータがあるなら、B2からB10にコピーするだけです。スプレッドシートはCtrl+Dで下方向にコピーできますよ。</p>



<p>ただし行数が多い場合は、ARRAYFORMULA + MID + FIND を組み合わせた方法や、Google Apps Scriptを使う方法もあります。シンプルな用途ならコピーで十分です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>分割結果の列数がバラバラだと、隣のセルにあるデータを上書きすることがあります。右方向に十分な空きセルを確保しておきましょう。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc13">TEXTJOINとの相互変換（分割と結合）</span></h2>



<p>SPLIT関数と<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>は「分割」と「結合」の逆の関係にあります。セットで覚えておくと便利ですよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>操作</th><th>関数</th><th>例</th></tr></thead><tbody><tr><td>分割</td><td>SPLIT</td><td>「東京,大阪,名古屋」→ 3つのセルに分割</td></tr><tr><td>結合</td><td>TEXTJOIN</td><td>3つのセルを → 「東京,大阪,名古屋」に結合</td></tr></tbody></table></figure>



<p>実際に相互変換してみましょう。</p>



<p><strong>分割（SPLIT）:</strong></p>



<pre class="wp-block-code"><code>=SPLIT(&quot;東京,大阪,名古屋&quot;, &quot;,&quot;)
→ B1:「東京」, C1:「大阪」, D1:「名古屋」</code></pre>



<p><strong>結合（TEXTJOIN）:</strong></p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;,&quot;, TRUE, B1:D1)
→ 「東京,大阪,名古屋」</code></pre>



<p>同じ区切り文字（カンマ）を使えば、元の形に戻せます。データの分割と結合を行き来する場面で活躍しますよ。</p>



<p>なお、区切り文字なしで単純に結合したいだけなら<a href="https://mashukabu.com/spreadsheet-concat-function/">CONCAT関数</a>がシンプルです。用途に応じて使い分けてくださいね。</p>



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



<p>SPLIT関数で発生しやすいエラーをまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>区切り文字が空文字（&#8221;&#8221;）</td><td>区切り文字に1文字以上を指定する</td></tr><tr><td>#REF!</td><td>分割結果が隣のセルのデータを上書きしようとした</td><td>右方向に十分な空きセルを確保する</td></tr><tr><td>分割されない</td><td>全角・半角の不一致（「,」と「，」など）</td><td>区切り文字の全角・半角を確認する</td></tr><tr><td>余分な空白が残る</td><td>区切り文字の前後にスペースがある</td><td>TRIM関数で前後の空白を削除してからSPLITする</td></tr></tbody></table></figure>



<p>特に多いのが全角・半角の不一致です。データの入力元によって全角カンマ「，」と半角カンマ「,」が混在していることがあります。第3引数をTRUEにして両方を区切り文字に指定するのがおすすめですよ。</p>



<pre class="wp-block-code"><code>=SPLIT(A2, &quot;,，&quot;)</code></pre>



<p>これで全角カンマと半角カンマのどちらでも分割できます。</p>



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



<p>スプレッドシートのSPLIT関数の使い方を振り返りましょう。</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>文字列を区切り文字で分割して複数セルに展開</td></tr><tr><td>構文</td><td>=SPLIT(テキスト, 区切り文字, [各文字で分割], [空のテキストを削除])</td></tr><tr><td>第3引数</td><td>TRUE: 各文字で分割 / FALSE: 文字列全体で分割</td></tr><tr><td>対になる関数</td><td>TEXTJOIN（結合）</td></tr><tr><td>注意点</td><td>Excelには非搭載（スプレッドシート独自関数）</td></tr></tbody></table></figure>



<p>カンマ区切りデータの分割から日付の分解、メールアドレスの分離まで使える場面はたくさんあります。<a href="https://mashukabu.com/spreadsheet-textjoin-function/">TEXTJOIN関数</a>との相互変換もセットで覚えておくと、文字列操作の幅がグッと広がりますよ。</p>



<p>文字列を途中から取り出したいときは<a href="https://mashukabu.com/spreadsheet-mid-function/">MID関数</a>、特定の文字の位置を調べたいときは<a href="https://mashukabu.com/spreadsheet-find-function/">FIND関数</a>も合わせてチェックしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-split-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Excelの文字列関数まとめ｜抽出・結合・分割・置換を実務シーン別に解説</title>
		<link>https://mashukabu.com/excel-string-functions-guide/</link>
					<comments>https://mashukabu.com/excel-string-functions-guide/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Wed, 18 Mar 2026 12:36:46 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[CONCAT]]></category>
		<category><![CDATA[Excel関数まとめ]]></category>
		<category><![CDATA[FIND]]></category>
		<category><![CDATA[LEFT]]></category>
		<category><![CDATA[LEN]]></category>
		<category><![CDATA[MID]]></category>
		<category><![CDATA[RIGHT]]></category>
		<category><![CDATA[SUBSTITUTE]]></category>
		<category><![CDATA[TEXTJOIN]]></category>
		<category><![CDATA[TEXTSPLIT]]></category>
		<category><![CDATA[文字列分割]]></category>
		<category><![CDATA[文字列抽出]]></category>
		<category><![CDATA[文字列結合]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[文字列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4030</guid>

					<description><![CDATA[Excelの文字列関数を実務シーン別に整理。氏名から姓だけ取り出す、住所から都道府県を除く、CSV分割、文字列結合まで、LEFT・FIND・SUBSTITUTE・TEXTSPLIT・TEXTJOINなどの使い分けを逆引き一覧と比較表で解説します。]]></description>
										<content:encoded><![CDATA[
<p>Excelで「氏名から姓だけ取り出したい」「カンマ区切りのデータを列に分けたい」と悩んだことはありませんか。文字列関数は種類が多く、どれを使えばいいか迷いますよね。</p>



<p>この記事では、<strong>抽出・結合・分割・置換</strong>の4カテゴリに分けて文字列関数の使い分けを整理しました。実務シーンに合わせて「この作業にはこの関数」がすぐわかる逆引きインデックスも用意しています。</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">文字列関数の逆引きインデックス【やりたいこと別】</a></li><li><a href="#toc2" tabindex="0">文字列を「抽出」する関数の使い方</a><ol><li><a href="#toc3" tabindex="0">LEFT関数 + FIND関数で姓だけ取り出す</a></li><li><a href="#toc4" tabindex="0">RIGHT関数 + LEN関数で名だけ取り出す</a></li><li><a href="#toc5" tabindex="0">MID関数で途中の文字列を取り出す</a></li><li><a href="#toc6" tabindex="0">FIND関数とSEARCH関数の違い</a></li><li><a href="#toc7" tabindex="0">M365ならTEXTBEFORE・TEXTAFTERが便利</a></li></ol></li><li><a href="#toc8" tabindex="0">文字列を「結合」する関数の使い方</a><ol><li><a href="#toc9" tabindex="0">&#038;演算子でシンプルに結合する</a></li><li><a href="#toc10" tabindex="0">CONCAT関数でセル範囲を一括結合する</a></li><li><a href="#toc11" tabindex="0">TEXTJOIN関数で区切り文字付きの結合をする</a></li><li><a href="#toc12" tabindex="0">結合関数の選び方</a></li></ol></li><li><a href="#toc13" tabindex="0">文字列を「分割」する関数の使い方</a><ol><li><a href="#toc14" tabindex="0">TEXTSPLIT関数でカンマ区切りデータを列に分ける</a></li><li><a href="#toc15" tabindex="0">TEXTSPLIT が使えない環境での分割テクニック</a></li><li><a href="#toc16" tabindex="0">「区切り位置」機能との比較</a></li></ol></li><li><a href="#toc17" tabindex="0">文字列を「置換・整形」する関数の使い方</a><ol><li><a href="#toc18" tabindex="0">SUBSTITUTE関数で特定の文字列を置き換える</a></li><li><a href="#toc19" tabindex="0">REPLACE関数で位置を指定して置き換える</a></li><li><a href="#toc20" tabindex="0">TRIM関数でスペースを整える</a></li><li><a href="#toc21" tabindex="0">大文字・小文字・全角・半角の変換</a></li></ol></li><li><a href="#toc22" tabindex="0">新旧関数の対比表で文字列関数を整理</a></li><li><a href="#toc23" tabindex="0">文字列関数でよくあるエラーと対処法</a></li><li><a href="#toc24" tabindex="0">まとめ</a><ol><li><a href="#toc25" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">文字列関数の逆引きインデックス【やりたいこと別】</span></h2>



<p>まずは「やりたいこと」から使う関数を探せる一覧表です。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>使う関数</th><th>数式の例</th></tr></thead><tbody><tr><td>左端からN文字を取り出す</td><td>LEFT</td><td><code>=LEFT(A1,3)</code></td></tr><tr><td>右端からN文字を取り出す</td><td>RIGHT</td><td><code>=RIGHT(A1,4)</code></td></tr><tr><td>途中からN文字を取り出す</td><td><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID</a></td><td><code>=MID(A1,2,3)</code></td></tr><tr><td>特定の文字の位置を調べる</td><td>FIND / SEARCH</td><td><code>=FIND("@",A1)</code></td></tr><tr><td>文字数を数える</td><td><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN</a></td><td><code>=LEN(A1)</code></td></tr><tr><td>文字列をそのまま結合する</td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a> / &#038;</td><td><code>=A1&B1</code></td></tr><tr><td>区切り文字を入れて結合する</td><td><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></td><td><code>=TEXTJOIN(",",TRUE,A1:C1)</code></td></tr><tr><td>区切り文字で列に分割する</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a></td><td><code>=TEXTSPLIT(A1,",")</code></td></tr><tr><td>区切り文字の前だけ取り出す</td><td><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE</a></td><td><code>=TEXTBEFORE(A1,"@")</code></td></tr><tr><td>区切り文字の後だけ取り出す</td><td><a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER</a></td><td><code>=TEXTAFTER(A1,"@")</code></td></tr><tr><td>特定の文字列を別の文字列に置き換える</td><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE</a></td><td><code>=SUBSTITUTE(A1,"-","")</code></td></tr><tr><td>位置を指定して文字列を置き換える</td><td>REPLACE</td><td><code>=REPLACE(A1,1,3,"新")</code></td></tr><tr><td>余分なスペースを除去する</td><td><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM</a></td><td><code>=TRIM(A1)</code></td></tr><tr><td>大文字に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-upper/">UPPER</a></td><td><code>=UPPER(A1)</code></td></tr><tr><td>小文字に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-lower/">LOWER</a></td><td><code>=LOWER(A1)</code></td></tr><tr><td>先頭だけ大文字にする</td><td><a href="https://mashukabu.com/excel-function-howto-use-proper/">PROPER</a></td><td><code>=PROPER(A1)</code></td></tr><tr><td>全角を半角に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC</a></td><td><code>=ASC(A1)</code></td></tr><tr><td>数値を指定の表示形式に変換する</td><td><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT</a></td><td><code>=TEXT(A1,"#,##0")</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>このインデックスをブックマークしておくと便利です。「どの関数だっけ？」と迷ったときにすぐ確認できます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">文字列を「抽出」する関数の使い方</span></h2>



<p>文字列の一部だけを取り出すには、LEFT・RIGHT・MID・FIND（SEARCH）を組み合わせます。</p>



<h3 class="wp-block-heading"><span id="toc3">LEFT関数 + FIND関数で姓だけ取り出す</span></h3>



<p>氏名リストから姓だけを取り出すケースです。「山田 太郎」のようにスペースで区切られた氏名を想定します。</p>



<pre class="wp-block-code"><code>=LEFT(A1,FIND(&quot; &quot;,A1)-1)</code></pre>



<p>この数式がやっていることはシンプルです。</p>



<ol class="wp-block-list"><li><code>FIND(" ",A1)</code> でスペースの位置を調べる（例: 3）</li><li>スペースの手前までが姓なので <code>-1</code> する（例: 2）</li><li><code>LEFT(A1,2)</code> で左端から2文字を取り出す（例: 山田）</li></ol>



<p>LEFT関数は「左端から何文字」と決まっている場合にそのまま使えます。たとえば左端から3文字なら次のように書きます。</p>



<pre class="wp-block-code"><code>=LEFT(A1,3)</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>FIND関数は大文字と小文字を区別します。区別せずに検索したい場合は、代わりにSEARCH関数を使ってください。SEARCH関数はワイルドカード（<code>*</code> や <code>?</code>）にも対応しています。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc4">RIGHT関数 + LEN関数で名だけ取り出す</span></h3>



<p>今度は名前の方を取り出してみましょう。RIGHT関数で右端から取り出します。</p>



<pre class="wp-block-code"><code>=RIGHT(A1,LEN(A1)-FIND(&quot; &quot;,A1))</code></pre>



<p>取り出す文字数の計算がポイントです。</p>



<ol class="wp-block-list"><li><code>LEN(A1)</code> で全体の文字数を取得（例: 5）</li><li><code>FIND(" ",A1)</code> でスペースの位置を取得（例: 3）</li><li>全体の文字数からスペースの位置を引く（例: 5-3=2）</li><li><code>RIGHT(A1,2)</code> で右端から2文字を取り出す（例: 太郎）</li></ol>



<h3 class="wp-block-heading"><span id="toc5">MID関数で途中の文字列を取り出す</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数</a>は「何文字目から何文字」を指定して取り出せます。</p>



<p><strong>5文字目から4文字を取り出す場合:</strong></p>



<pre class="wp-block-code"><code>=MID(A1,5,4)</code></pre>



<p>たとえば社員番号「DEPT-1234-A」から数字部分だけを取り出す場合です。6文字目から4文字で「1234」が得られます。</p>



<pre class="wp-block-code"><code>=MID(A1,6,4)</code></pre>



<p>MID関数は開始位置と文字数が固定の場合に便利です。位置が可変の場合はFIND関数と組み合わせます。</p>



<h3 class="wp-block-heading"><span id="toc6">FIND関数とSEARCH関数の違い</span></h3>



<p>どちらも「特定の文字が何文字目にあるか」を返す関数です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FIND</th><th>SEARCH</th></tr></thead><tbody><tr><td>大文字・小文字</td><td>区別する</td><td>区別しない</td></tr><tr><td>ワイルドカード</td><td>使えない</td><td><code>*</code> <code>?</code> が使える</td></tr><tr><td>用途</td><td>完全一致で位置を調べる</td><td>あいまい検索で位置を調べる</td></tr></tbody></table></figure>



<p>実務では「スペースの位置を調べる」「@の位置を調べる」のような用途が多いため、FIND関数で十分な場面がほとんどです。</p>



<h3 class="wp-block-heading"><span id="toc7">M365ならTEXTBEFORE・TEXTAFTERが便利</span></h3>



<p>Microsoft 365をお使いなら、LEFT+FINDの組み合わせを1つの関数で置き換えられます。</p>



<p><strong>スペースの前（姓）を取り出す場合:</strong></p>



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



<p><strong>スペースの後（名）を取り出す場合:</strong></p>



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



<p><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE関数</a>と<a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER関数</a>は区切り文字を指定するだけでOKです。LEFT+FIND+LENの複雑な計算が不要になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>TEXTBEFORE・TEXTAFTER・TEXTSPLITはMicrosoft 365専用の関数です。Excel 2021以前では使用できません。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc8">文字列を「結合」する関数の使い方</span></h2>



<p>複数のセルの値をひとつにまとめるには、&#038;演算子・CONCAT・TEXTJOIN・CONCATENATEを使います。</p>



<h3 class="wp-block-heading"><span id="toc9">&#038;演算子でシンプルに結合する</span></h3>



<p>もっとも基本的な結合方法です。</p>



<p><strong>姓と名をスペース区切りで結合する場合:</strong></p>



<pre class="wp-block-code"><code>=A1&amp;&quot; &quot;&amp;B1</code></pre>



<p>セルの数が少ない（2~3個）場合は&#038;演算子がわかりやすいです。ハイフン区切りで3つ結合するならこう書きます。</p>



<pre class="wp-block-code"><code>=A1&amp;&quot;-&quot;&amp;B1&amp;&quot;-&quot;&amp;C1</code></pre>



<h3 class="wp-block-heading"><span id="toc10">CONCAT関数でセル範囲を一括結合する</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数</a>はセル範囲をまるごと結合できます。</p>



<p><strong>A1からD1まで一括結合する場合:</strong></p>



<pre class="wp-block-code"><code>=CONCAT(A1:D1)</code></pre>



<p>&#038;演算子と違い、範囲指定ができるのがメリットです。ただし区切り文字を自動で入れる機能はありません。</p>



<h3 class="wp-block-heading"><span id="toc11">TEXTJOIN関数で区切り文字付きの結合をする</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数</a>は区切り文字を指定して結合できます。</p>



<pre class="wp-block-code"><code>=TEXTJOIN(&quot;,&quot;,TRUE,A1:D1)</code></pre>



<p>各引数の意味はこちらです。</p>



<ul class="wp-block-list"><li>第1引数: 区切り文字（カンマ、スペース、ハイフンなど）</li><li>第2引数: 空セルを無視するか（TRUE = 無視する）</li><li>第3引数: 結合するセル範囲</li></ul>



<p>空セルを無視してくれるのが大きなポイントです。たとえばA1~D1のうちC1が空白でも、余計な区切り文字が入りません。</p>



<p>A1=東京, B1=大阪, C1=(空白), D1=福岡 の場合で比べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th></tr></thead><tbody><tr><td><code>=TEXTJOIN(",",TRUE,A1:D1)</code></td><td>東京,大阪,福岡</td></tr><tr><td><code>=TEXTJOIN(",",FALSE,A1:D1)</code></td><td>東京,大阪,,福岡</td></tr></tbody></table></figure>



<p>TRUEにすると空セルのC1が飛ばされ、余計なカンマが入りません。</p>



<h3 class="wp-block-heading"><span id="toc12">結合関数の選び方</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>&#038;</th><th><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a></th><th><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE</a></th><th><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></th></tr></thead><tbody><tr><td>範囲指定</td><td>不可</td><td>可能</td><td>不可</td><td>可能</td></tr><tr><td>区切り文字</td><td>手動で挿入</td><td>なし</td><td>なし</td><td>自動挿入</td></tr><tr><td>空セル無視</td><td>不可</td><td>不可</td><td>不可</td><td>可能</td></tr><tr><td>対応バージョン</td><td>全バージョン</td><td>Excel 2019以降</td><td>全バージョン</td><td>Excel 2019以降</td></tr><tr><td>おすすめ度</td><td>2~3個の結合</td><td>範囲一括</td><td>旧環境向け</td><td>区切り文字付き結合</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>CONCATENATEは互換性のために残されている旧関数です。新しい環境ではCONCAT関数を使ってください。詳しくは「<a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数の使い方</a>」で解説しています。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc13">文字列を「分割」する関数の使い方</span></h2>



<p>1つのセルに入っている文字列を複数のセルに分けたい場面は多いです。TEXTSPLIT関数やLEFT+FIND関数の組み合わせで対応できます。</p>



<h3 class="wp-block-heading"><span id="toc14">TEXTSPLIT関数でカンマ区切りデータを列に分ける</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数</a>はM365で追加された強力な関数です。</p>



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



<p>カンマ区切りの「東京,大阪,名古屋,福岡」を入力すると、4つのセルに自動で分割されます。スピル機能で横方向に展開されるので、数式は1つだけでOKです。</p>



<p>行方向に分割したい場合は、第3引数を使います。</p>



<p><strong>第3引数に区切り文字を指定すると行方向に分割されます。</strong></p>



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



<p>複数の区切り文字を同時に指定することも可能です。カンマとセミコロンの両方で分割する場合はこう書きます。</p>



<pre class="wp-block-code"><code>=TEXTSPLIT(A1,{&quot;,&quot;,&quot;;&quot;})</code></pre>



<h3 class="wp-block-heading"><span id="toc15">TEXTSPLIT が使えない環境での分割テクニック</span></h3>



<p>Excel 2021以前ではTEXTSPLIT関数が使えません。その場合はLEFT+FIND+MID+LENを組み合わせます。</p>



<p><strong>1つ目の要素（カンマの前）を取り出す場合:</strong></p>



<pre class="wp-block-code"><code>=LEFT(A1,FIND(&quot;,&quot;,A1)-1)</code></pre>



<p><strong>2つ目の要素（1つ目のカンマ～2つ目のカンマの間）を取り出す場合:</strong></p>



<pre class="wp-block-code"><code>=MID(A1,FIND(&quot;,&quot;,A1)+1,FIND(&quot;,&quot;,A1,FIND(&quot;,&quot;,A1)+1)-FIND(&quot;,&quot;,A1)-1)</code></pre>



<p>ちょっと複雑に見えますが、やっていることはシンプルです。</p>



<ol class="wp-block-list"><li>1つ目のカンマの位置を調べる</li><li>2つ目のカンマの位置を調べる（FINDの第3引数で開始位置を指定）</li><li>2つの位置の間の文字列をMIDで取り出す</li></ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>要素数が多い場合は数式が非常に複雑になります。M365環境であればTEXTSPLIT関数の利用を強くおすすめします。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">「区切り位置」機能との比較</span></h3>



<p>Excelには関数以外にも「区切り位置」というメニュー機能があります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>TEXTSPLIT関数</th><th>区切り位置（メニュー）</th></tr></thead><tbody><tr><td>操作方法</td><td>数式を入力</td><td>データ > 区切り位置</td></tr><tr><td>元データ</td><td>保持される</td><td>上書きされる</td></tr><tr><td>自動更新</td><td>元データが変わると自動反映</td><td>手動で再実行が必要</td></tr><tr><td>対応バージョン</td><td>Microsoft 365</td><td>全バージョン</td></tr><tr><td>大量データ</td><td>数式1つで対応可</td><td>毎回手動操作</td></tr></tbody></table></figure>



<p>元データを残しつつ自動更新したい場合はTEXTSPLIT関数が圧倒的に便利です。一度きりの変換なら区切り位置機能でも十分対応できます。</p>



<h2 class="wp-block-heading"><span id="toc17">文字列を「置換・整形」する関数の使い方</span></h2>



<p>文字列を別の文字列に置き換えたり、余分なスペースを取り除く場面で活躍します。SUBSTITUTE・REPLACE・TRIM関数が代表的です。</p>



<h3 class="wp-block-heading"><span id="toc18">SUBSTITUTE関数で特定の文字列を置き換える</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数</a>は「この文字列をこの文字列に変える」という置換に使います。</p>



<p><strong>住所から「東京都」を除く場合:</strong></p>



<pre class="wp-block-code"><code>=SUBSTITUTE(A1,&quot;東京都&quot;,&quot;&quot;)</code></pre>



<p><strong>電話番号のハイフンを除去する場合:</strong></p>



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



<p>第4引数を指定すると、何番目の出現だけを置換できます。</p>



<p><strong>1番目のハイフンだけをスラッシュに変換する場合:</strong></p>



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



<h3 class="wp-block-heading"><span id="toc19">REPLACE関数で位置を指定して置き換える</span></h3>



<p>REPLACE関数は「何文字目から何文字」を指定して置き換えます。</p>



<p><strong>1文字目から3文字を「ABC」に置換する場合:</strong></p>



<pre class="wp-block-code"><code>=REPLACE(A1,1,3,&quot;ABC&quot;)</code></pre>



<p>SUBSTITUTEとREPLACEの使い分けはこちらです。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE</a></th><th>REPLACE</th></tr></thead><tbody><tr><td>指定方法</td><td>置き換える文字列</td><td>位置と文字数</td></tr><tr><td>用途</td><td>「この文字を消したい」</td><td>「何文字目を変えたい」</td></tr><tr><td>全出現の置換</td><td>可能（第4引数で制御）</td><td>1箇所のみ</td></tr><tr><td>文字列が不明な場合</td><td>使えない</td><td>位置さえわかればOK</td></tr></tbody></table></figure>



<p>実務では「ハイフンを消す」「都道府県を除く」のようにSUBSTITUTE関数を使う場面が多いです。</p>



<h3 class="wp-block-heading"><span id="toc20">TRIM関数でスペースを整える</span></h3>



<p><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数</a>は文字列の前後のスペースを除去し、単語間のスペースを1つに統一します。</p>



<pre class="wp-block-code"><code>=TRIM(A1)</code></pre>



<p>たとえば「  山田  太郎  」が「山田 太郎」になります。データのコピー&#038;ペーストで余分なスペースが入ってしまったときに重宝します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>TRIM関数は半角スペースのみ対応です。全角スペースを除去したい場合は <code>=SUBSTITUTE(A1,"　","")</code> で全角スペースを空文字に置換してからTRIMを適用してください。詳しくは「<a href="https://mashukabu.com/about-nbsp/">ノーブレークスペースの対処法</a>」も参考になります。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc21">大文字・小文字・全角・半角の変換</span></h3>



<p>文字の変換系関数をまとめて紹介します。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>変換内容</th><th>数式の例</th><th>結果</th></tr></thead><tbody><tr><td><a href="https://mashukabu.com/excel-function-howto-use-upper/">UPPER</a></td><td>全部大文字</td><td><code>=UPPER("abc")</code></td><td>ABC</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-lower/">LOWER</a></td><td>全部小文字</td><td><code>=LOWER("ABC")</code></td><td>abc</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-proper/">PROPER</a></td><td>先頭だけ大文字</td><td><code>=PROPER("john smith")</code></td><td>John Smith</td></tr><tr><td><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC</a></td><td>全角→半角</td><td><code>=ASC("ＡＢＣ")</code></td><td>ABC</td></tr><tr><td>JIS</td><td>半角→全角</td><td><code>=JIS("ABC")</code></td><td>ABC</td></tr></tbody></table></figure>



<p>商品コードや顧客名の表記を統一するときに使います。<a href="https://mashukabu.com/excel-function-howto-use-exact/">EXACT関数</a>で大文字小文字の一致を確認してから変換するのも効果的です。</p>



<h2 class="wp-block-heading"><span id="toc22">新旧関数の対比表で文字列関数を整理</span></h2>



<p>ここまで紹介した関数の中には、新旧の関係にあるものがあります。環境に合わせて選んでください。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>旧関数・旧手法</th><th>新関数（M365）</th><th>新関数のメリット</th></tr></thead><tbody><tr><td>文字列の結合</td><td><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE</a></td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a></td><td>セル範囲を指定可能</td></tr><tr><td>区切り文字付き結合</td><td>&#038;で手動挿入</td><td><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a></td><td>空セル無視が可能</td></tr><tr><td>区切り文字で分割</td><td>区切り位置（メニュー）</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a></td><td>数式で自動更新</td></tr><tr><td>区切り文字の前を取得</td><td>LEFT + FIND</td><td><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE</a></td><td>数式がシンプル</td></tr><tr><td>区切り文字の後を取得</td><td>RIGHT + LEN + FIND</td><td><a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER</a></td><td>数式がシンプル</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>新関数が使えるかわからない場合は、セルに <code>=TEXTSPLIT("a,b",",")</code> と入力して試してみてください。<code>#NAME?</code> エラーが出たらお使いのExcelでは未対応です。</p></blockquote>



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



<p>文字列関数を使っていると遭遇しやすいエラーをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>FIND/SEARCHで検索文字が見つからない</td><td><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数</a>やISERRORで「見つからない場合」の処理を追加する</td></tr><tr><td><code>#NAME?</code></td><td>関数名のスペルミス、または未対応バージョン</td><td>関数名を確認する。TEXTSPLIT等はM365専用</td></tr><tr><td>意図しない結合結果</td><td>数値がそのまま結合されて桁が変わる</td><td><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT関数</a>で書式指定してから結合する</td></tr><tr><td>スペースが残る</td><td>全角スペースがTRIMで除去できない</td><td><code>=SUBSTITUTE(A1,"　","")</code> で全角スペースを先に除去</td></tr><tr><td>分割結果がずれる</td><td>区切り文字が想定と違う（全角カンマなど）</td><td><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数</a>で文字数を確認し、区切り文字を特定する</td></tr></tbody></table></figure>



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



<p>Excelの文字列関数を4つのカテゴリで整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>カテゴリ</th><th>主な関数</th><th>代表的な使い方</th></tr></thead><tbody><tr><td>抽出</td><td>LEFT, RIGHT, <a href="https://mashukabu.com/excel-function-howto-use-mid/">MID</a>, FIND</td><td>氏名から姓・名を取り出す</td></tr><tr><td>結合</td><td><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT</a>, <a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN</a>, &#038;</td><td>名前と部署を結合する</td></tr><tr><td>分割</td><td><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT</a>, LEFT+FIND</td><td>カンマ区切りデータを列に分ける</td></tr><tr><td>置換・整形</td><td><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE</a>, <a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM</a></td><td>住所から都道府県を除く</td></tr></tbody></table></figure>



<p>迷ったら冒頭の逆引きインデックスに戻ってみてください。「やりたいこと」から関数を選ぶのが一番確実です。</p>



<p>M365環境であれば、TEXTSPLIT・TEXTBEFORE・TEXTAFTERといった新関数もぜひ試してみてください。数式がぐっとシンプルになりますよ。</p>



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



<h4 class="wp-block-heading">抽出系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-mid/">MID関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-midb/">MIDB関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-len/">LEN関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-textbefore/">TEXTBEFORE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-textafter/">TEXTAFTER関数の使い方</a></li></ul>



<h4 class="wp-block-heading">結合系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-concat/">CONCAT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-concatenate/">CONCATENATE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-textjoin/">TEXTJOIN関数の使い方</a></li></ul>



<h4 class="wp-block-heading">分割系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-textsplit/">TEXTSPLIT関数の使い方</a></li></ul>



<h4 class="wp-block-heading">置換・整形系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-substitute/">SUBSTITUTE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-trim/">TRIM関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-text/">TEXT関数の使い方</a></li></ul>



<h4 class="wp-block-heading">変換系</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-upper/">UPPER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-lower/">LOWER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-proper/">PROPER関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-asc/">ASC関数の使い方</a></li></ul>



<h4 class="wp-block-heading">その他</h4>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-exact/">EXACT関数の使い方</a></li><li><a href="https://mashukabu.com/about-nbsp/">ノーブレークスペースの対処法</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-rept/">REPT関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">IF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-vlookup/">VLOOKUP関数の使い方</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-string-functions-guide/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-4" checked><label class="toc-title" for="toc-checkbox-4">目次</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>
