<?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/%e3%83%87%e3%83%bc%e3%82%bf%e3%82%af%e3%83%ac%e3%83%b3%e3%82%b8%e3%83%b3%e3%82%b0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Mon, 08 Jun 2026 15:50:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</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>VBA正規表現（RegExp）の使い方｜実務パターン5選コード付き</title>
		<link>https://mashukabu.com/excel-vba-regexp-howto/</link>
					<comments>https://mashukabu.com/excel-vba-regexp-howto/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 15:50:54 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[中級VBA]]></category>
		<category><![CDATA[文字列処理]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7851</guid>

					<description><![CDATA[VBAで正規表現（RegExp）を使う方法を基本から実務パターンまで解説。参照設定の手順、Test/Replace/Executeの使い方、メールアドレス検証・電話番号統一など実務5パターンのコードを掲載。早見表付きでそのままコピペ可能。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「半角・全角が混ざった文字列を整えたい」「メールアドレスが正しい形式か一発でチェックしたい」。VBAでデータ処理をしていると、こんな場面によく出くわしますよね。</p>



<p class="wp-block-paragraph">TRIMやSUBSTITUTE、LEFTやMIDなどの文字列関数を組み合わせれば、簡単な処理ならなんとかなります。でも「数字3桁＋ハイフン＋数字4桁」のような「形のパターン」を扱おうとすると、とたんに数式が長く複雑になります。書いた本人すら後で読めなくなる、なんてこともありますよね。</p>



<p class="wp-block-paragraph">そんな複雑な文字列処理を一気にシンプルにしてくれるのが、VBAの正規表現（RegExp）です。「特定の形に一致するか」「一致した部分だけ取り出す」「一致した部分だけ置き換える」といった処理を、短いパターン文字列で表現できます。</p>



<p class="wp-block-paragraph">この記事では、VBAで正規表現を使う方法を、準備から実務パターンまで丁寧に解説します。コピペで使えるサンプルコード5本と、ブックマークしておくと便利なメタ文字の早見表も用意しました。正規表現に触れたことがない方でも、読み終わるころには自分のマクロに組み込めるようになりますよ。</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">VBAで正規表現が必要になる場面</a><ol><li><a href="#toc2" tabindex="0">TRIM・SUBSTITUTEでは対処できないケースとは</a></li><li><a href="#toc3" tabindex="0">Like演算子との使い分け基準</a></li></ol></li><li><a href="#toc4" tabindex="0">RegExpオブジェクトの準備</a><ol><li><a href="#toc5" tabindex="0">参照設定あり（早期バインディング）の手順</a></li><li><a href="#toc6" tabindex="0">CreateObjectあり（遅延バインディング）の手順</a></li><li><a href="#toc7" tabindex="0">早期 vs 遅延 どちらを選ぶか比較表</a></li></ol></li><li><a href="#toc8" tabindex="0">RegExpの3つのプロパティと3つのメソッド</a><ol><li><a href="#toc9" tabindex="0">Pattern・IgnoreCase・Globalの設定方法</a></li><li><a href="#toc10" tabindex="0">Test：パターン一致チェック</a></li><li><a href="#toc11" tabindex="0">Replace：パターン一致部分の置換</a></li><li><a href="#toc12" tabindex="0">Execute：マッチ結果のコレクション取得</a></li></ol></li><li><a href="#toc13" tabindex="0">よく使うメタ文字と正規表現パターン早見表</a><ol><li><a href="#toc14" tabindex="0">メタ文字一覧（記号・意味・使用例）</a></li><li><a href="#toc15" tabindex="0">実務でよく使うパターン集8選</a></li></ol></li><li><a href="#toc16" tabindex="0">実務パターン5選：コピペで使えるサンプルコード</a><ol><li><a href="#toc17" tabindex="0">①メールアドレス形式チェック</a></li><li><a href="#toc18" tabindex="0">②電話番号ハイフン統一</a></li><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">エラー処理：不正パターン入力時の対策</a><ol><li><a href="#toc23" tabindex="0">On Error GoToでRegExpエラーを捕捉する</a></li><li><a href="#toc24" tabindex="0">パターン検証関数を作っておくと安全</a></li></ol></li><li><a href="#toc25" tabindex="0">ワークシート関数との使い分け</a><ol><li><a href="#toc26" tabindex="0">REGEXTEST・REGEXREPLACE・REGEXEXTRACTとの違い</a></li><li><a href="#toc27" tabindex="0">VBA RegExpを選ぶべきシーン</a></li></ol></li><li><a href="#toc28" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBAで正規表現が必要になる場面</span></h2>



<p class="wp-block-paragraph">正規表現は「文字列の形（パターン）」を表現するための記法です。たとえば「数字が3桁続く」「先頭が0で始まる電話番号」といったルールを、短い記号の並びで書き表せます。</p>



<p class="wp-block-paragraph">VBAでは標準の文字列関数も豊富に用意されています。ではなぜ、わざわざ正規表現を使うのでしょうか。それは、文字列関数だけでは「形のパターン」を扱うのが苦手だからです。</p>



<p class="wp-block-paragraph">ここでは、正規表現が本当に役立つ場面を整理します。逆に言えば、ここで挙げる悩みがなければ無理に使う必要はありません。適材適所で使い分けるのがコツですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">TRIM・SUBSTITUTEでは対処できないケースとは</span></h3>



<p class="wp-block-paragraph">VBAの文字列関数は「決まった位置」や「決まった文字」を扱うのは得意です。たとえば前後の空白を消すならTRIM、特定の文字を別の文字に置き換えるならSUBSTITUTE（Replace関数）で十分です。</p>



<p class="wp-block-paragraph">ところが、次のようなケースになると一気に難しくなります。</p>



<ul class="wp-block-list"><li>「数字が3桁、ハイフン、数字が4桁」のように、文字の「並び方のルール」で判定したい</li><li>セルの中に紛れ込んだ郵便番号や電話番号だけを取り出したい</li><li>全角の英数字が混ざっているかどうかを検出したい</li><li>複数種類の記号をまとめて一括削除したい</li></ul>



<p class="wp-block-paragraph">たとえば「文字列がメールアドレスの形式か」を文字列関数だけで判定するとします。アットマークの有無、ドットの位置、前後の文字種など、無数のIf文が必要になります。考えただけで気が遠くなりますよね。</p>



<p class="wp-block-paragraph">これを正規表現なら、たった1行のパターンで表現できます。「形のルールで判定・抽出・置換したい」という場面こそ、正規表現の出番なのです。</p>



<h3 class="wp-block-heading"><span id="toc3">Like演算子との使い分け基準</span></h3>



<p class="wp-block-paragraph">VBAには正規表現に似た機能として、Like演算子があります。<code>If 文字列 Like "A*"</code> のように、ワイルドカードを使った曖昧な比較ができる演算子です。</p>



<p class="wp-block-paragraph">Like演算子は手軽で、参照設定も不要です。「Aで始まる」「数字を1文字含む」程度の単純な判定なら、Like演算子のほうが速く書けます。</p>



<p class="wp-block-paragraph">ただしLike演算子には限界があります。「数字が3桁以上連続する」のような繰り返し回数の指定や、一致した部分の抽出はできません。複雑なパターンになるほど、正規表現に軍配が上がります。</p>



<p class="wp-block-paragraph">ざっくりした使い分けの目安は次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>おすすめ</th></tr></thead><tbody><tr><td>「〜で始まる」「〜を含む」程度の単純判定</td><td>Like演算子</td></tr><tr><td>繰り返し回数や文字種の細かい指定</td><td>正規表現（RegExp）</td></tr><tr><td>一致した部分を取り出したい（抽出）</td><td>正規表現（RegExp）</td></tr><tr><td>パターンに一致する全箇所を置換したい</td><td>正規表現（RegExp）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Like演算子の詳しい使い方は、<a href="https://mashukabu.com/excel-vba-like-wildcard/">VBA Like演算子の使い方｜ワイルドカード5種で文字列を曖昧比較する方法</a>で解説しています。「Likeでは難しいな」と感じたら正規表現へ、と覚えておくとスムーズですよ。</p>



<h2 class="wp-block-heading"><span id="toc4">RegExpオブジェクトの準備</span></h2>



<p class="wp-block-paragraph">VBAの正規表現は、RegExpという専用のオブジェクトを使って動かします。このRegExpは、もともとVBScript用に作られた正規表現エンジンです。Windowsに標準で組み込まれているCOMコンポーネントなので、Excel VBAから呼び出して使えます。</p>



<p class="wp-block-paragraph">RegExpオブジェクトを用意する方法は2つあります。1つは「参照設定」をする方法（早期バインディング）、もう1つはCreateObject関数で呼び出す方法（遅延バインディング）です。</p>



<p class="wp-block-paragraph">どちらでも同じことができますが、メリットが異なります。まずは両方の手順を見て、最後に使い分けの基準を整理しますね。なお、この記事のコードはExcel 2019・2021・Microsoft 365のいずれでも動作します。</p>



<h3 class="wp-block-heading"><span id="toc5">参照設定あり（早期バインディング）の手順</span></h3>



<p class="wp-block-paragraph">参照設定をしておくと、コードの記述が少しスッキリし、入力補助（IntelliSense）も効くようになります。手順は次のとおりです。</p>



<p class="wp-block-paragraph">まずVBE（Visual Basic Editor）を開きます。ExcelでAlt + F11キーを押すか、開発タブの「Visual Basic」ボタンから開けます。開発タブが表示されていない場合は、ファイル → オプション → リボンのユーザー設定で「開発」にチェックを入れてください。</p>



<p class="wp-block-paragraph">VBEが開いたら、メニューの「ツール」→「参照設定」を選びます。一覧から「Microsoft VBScript Regular Expressions 5.5」を探してチェックを入れ、OKを押します。これで準備完了です。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/excel-vba-regexp-howto/01_screenshot_vbe-reference-setting.png/">_images/excel-vba-regexp-howto/01_screenshot_vbe-reference-setting.png</a></p>



<p class="wp-block-paragraph">参照設定をした場合、RegExpオブジェクトは次のように宣言します。</p>



<pre class="wp-block-code"><code>Sub RegExp早期バインディング例()
    Dim re As New RegExp '参照設定でRegExp型が使えるようになる
    re.Pattern = &quot;d{3}&quot;  'パターン: 数字が3桁連続
    re.Global = True       '一致する全箇所を対象にする

    MsgBox re.Test(&quot;商品コード123&quot;)  '「123」を含むのでTrueが返る
End Sub</code></pre>



<p class="wp-block-paragraph"><code>Dim re As New RegExp</code> のように型名を直接書ける点が、参照設定のメリットです。入力中に候補が出るので、プロパティ名のタイプミスも防げますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">CreateObjectあり（遅延バインディング）の手順</span></h3>



<p class="wp-block-paragraph">もう1つの方法が、CreateObject関数を使う遅延バインディングです。参照設定が不要なので、マクロを他の人に配布するときに便利です。</p>



<p class="wp-block-paragraph">宣言と作成は次のように書きます。</p>



<pre class="wp-block-code"><code>Sub RegExp遅延バインディング例()
    Dim re As Object '型は汎用のObjectで宣言する
    Set re = CreateObject(&quot;VBScript.RegExp&quot;) 'RegExpを実行時に生成

    re.Pattern = &quot;d{3}&quot; 'パターン: 数字が3桁連続
    re.Global = True      '一致する全箇所を対象にする

    MsgBox re.Test(&quot;商品コード123&quot;)  '「123」を含むのでTrueが返る
End Sub</code></pre>



<p class="wp-block-paragraph">ポイントは2つです。1つ目は、変数を <code>As Object</code> で宣言すること。2つ目は、<code>Set re = CreateObject("VBScript.RegExp")</code> でオブジェクトを生成することです。</p>



<p class="wp-block-paragraph">参照設定をしていない環境でもそのまま動くので、社内の複数のパソコンでマクロを共有する場合はこちらが安心です。「あれ、参照設定し忘れた」というトラブルが起きませんよ。</p>



<h3 class="wp-block-heading"><span id="toc7">早期 vs 遅延 どちらを選ぶか比較表</span></h3>



<p class="wp-block-paragraph">早期バインディングと遅延バインディングは、それぞれ得意な場面が違います。次の比較表で整理しました。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>早期バインディング（参照設定）</th><th>遅延バインディング（CreateObject）</th></tr></thead><tbody><tr><td>参照設定</td><td>必要</td><td>不要</td></tr><tr><td>宣言の書き方</td><td><code>Dim re As New RegExp</code></td><td><code>Dim re As Object</code> ＋ CreateObject</td></tr><tr><td>入力補助（IntelliSense）</td><td>効く</td><td>効かない</td></tr><tr><td>実行速度</td><td>速い</td><td>やや遅い</td></tr><tr><td>配布マクロへの向き</td><td>配布先でも参照設定が必要</td><td>環境を選ばず動く</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Microsoftは、可能な限り早期バインディングを使うことを公式に推奨しています。自分専用のマクロや、速度を重視したい処理では早期バインディングが向いています。</p>



<p class="wp-block-paragraph">一方で、配布先の環境がわからない場合や、複数バージョンのExcel間で使い回したい場合は、遅延バインディングが安全です。「自分用は早期、配布用は遅延」と覚えておくと迷いませんよ。</p>



<p class="wp-block-paragraph">なお、この記事のサンプルコードは、どちらの方式でもそのまま動くように書いていきます。</p>



<h2 class="wp-block-heading"><span id="toc8">RegExpの3つのプロパティと3つのメソッド</span></h2>



<p class="wp-block-paragraph">RegExpオブジェクトは、3つのプロパティと3つのメソッドさえ押さえれば使いこなせます。覚えることが少ないのは、うれしいポイントですよね。</p>



<p class="wp-block-paragraph">プロパティは「どう探すか」の設定で、Pattern・Global・IgnoreCaseの3つです。メソッドは「何をするか」の動作で、Test・Replace・Executeの3つです。</p>



<p class="wp-block-paragraph">ここからは、それぞれを順番に見ていきます。この6つを理解すれば、後半の実務パターンもすんなり読めるようになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">Pattern・IgnoreCase・Globalの設定方法</span></h3>



<p class="wp-block-paragraph">まずは3つのプロパティです。RegExpオブジェクトを作ったあと、探す前に設定しておきます。</p>



<pre class="wp-block-code"><code>Sub プロパティの設定例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    re.Pattern = &quot;[a-z]+&quot;  '探したいパターンを指定する（必須）
    re.IgnoreCase = True    '大文字小文字を区別しない（既定はFalse）
    re.Global = True        '一致する全箇所を対象にする（既定はFalse）

    MsgBox re.Test(&quot;Hello&quot;) 'IgnoreCase=TrueなのでTrueが返る
End Sub</code></pre>



<p class="wp-block-paragraph">3つのプロパティの役割をまとめます。</p>



<ul class="wp-block-list"><li><strong>Pattern</strong>：探す正規表現のパターンを文字列で指定します。これがないと始まりません。</li><li><strong>IgnoreCase</strong>：Trueにすると、大文字と小文字を区別せず一致を判定します。既定値はFalseです。</li><li><strong>Global</strong>：Trueにすると、一致する箇所をすべて対象にします。既定値のFalseだと、最初の1件だけが対象です。</li></ul>



<p class="wp-block-paragraph">特に注意したいのがGlobalです。既定はFalseなので、置換や抽出で「全部のはずなのに1件しか処理されない」というときは、たいていGlobalの設定漏れですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">Test：パターン一致チェック</span></h3>



<p class="wp-block-paragraph">Testメソッドは、文字列がパターンに一致する箇所を含むかどうかを判定します。戻り値はTrueまたはFalseのブール値です。</p>



<pre class="wp-block-code"><code>Sub Testメソッドの例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;d+&quot; '数字が1文字以上続く

    MsgBox re.Test(&quot;注文番号A100&quot;) 'True（100が一致する）
    MsgBox re.Test(&quot;注文番号なし&quot;)  'False（数字がない）
End Sub</code></pre>



<p class="wp-block-paragraph">「一致するものが含まれていればTrue」という単純な動きです。入力チェックやバリデーションにぴったりですね。</p>



<p class="wp-block-paragraph">文字列全体が完全に一致するかを判定したいときは、パターンの先頭に <code>^</code>、末尾に <code>$</code> を付けます。<code>^</code> は文字列の先頭、<code>$</code> は末尾を表すアンカーです。この使い方は実務パターンのメールアドレス検証で詳しく見ていきます。</p>



<p class="wp-block-paragraph">このTestメソッドは、Microsoft 365のワークシート関数<a href="https://mashukabu.com/excel-function-howto-use-regextest/">REGEXTEST</a>と同じ役割を果たします。数式で完結させたいか、マクロで処理したいかで使い分けるとよいですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">Replace：パターン一致部分の置換</span></h3>



<p class="wp-block-paragraph">Replaceメソッドは、パターンに一致した部分を別の文字列に置き換えて返します。<code>Replace(対象文字列, 置換後の文字列)</code> の形で呼び出します。</p>



<pre class="wp-block-code"><code>Sub Replaceメソッドの例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;s+&quot; '空白文字（スペース・タブなど）が1文字以上
    re.Global = True    '全箇所を対象にする

    Dim result As String
    result = re.Replace(&quot;山田　太郎  さん&quot;, &quot;&quot;) '空白をすべて削除
    MsgBox result '「山田太郎さん」が返る
End Sub</code></pre>



<p class="wp-block-paragraph">この例では、半角の空白をまとめて削除しています。<code>s</code> は半角スペースやタブなどの空白文字を表すので、種類を気にせず一括で消せるのが便利です。なお全角スペースの扱いには注意が必要で、これは後述の早見表でくわしく補足します。</p>



<p class="wp-block-paragraph">置換後の文字列に空文字（<code>""</code>）を指定すると、一致部分の「削除」になります。不要な記号の一括削除でよく使うテクニックですよ。なお、一致部分を残したまま前後に文字を足したい場合は、キャプチャグループと後方参照（<code>$1</code> など）を使います。</p>



<p class="wp-block-paragraph">ワークシート関数の<a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">REGEXREPLACE</a>も同じ置換処理を担当します。大量データをループ処理するならVBA、セル単位で完結させるなら関数、という選び方がおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc12">Execute：マッチ結果のコレクション取得</span></h3>



<p class="wp-block-paragraph">Executeメソッドは、一致した箇所の情報をまとめたコレクション（MatchCollection）を返します。「一致したものを取り出したい（抽出したい）」ときに使います。</p>



<pre class="wp-block-code"><code>Sub Executeメソッドの例()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;d+&quot; '数字が1文字以上続く
    re.Global = True    '全箇所を取り出す

    Dim matches As Object, m As Object
    Set matches = re.Execute(&quot;価格は1200円、送料は500円&quot;)

    Dim msg As String
    For Each m In matches
        msg = msg &amp; m.Value &amp; vbCrLf '一致した文字列を取り出す
    Next m
    MsgBox msg '「1200」と「500」が改行区切りで表示される
End Sub</code></pre>



<p class="wp-block-paragraph">Executeが返すMatchCollectionは、For Eachで1件ずつ取り出せます。<code>matches.Count</code> で一致件数も取得できます。</p>



<p class="wp-block-paragraph">取り出したMatchオブジェクトには、主に3つのプロパティがあります。</p>



<ul class="wp-block-list"><li><strong>Value</strong>：一致した文字列そのもの</li><li><strong>FirstIndex</strong>：一致が始まった位置（0から数える）</li><li><strong>Length</strong>：一致した文字列の長さ</li></ul>



<p class="wp-block-paragraph">抽出処理は、ワークシート関数の<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">REGEXEXTRACT</a>に対応します。複数件をまとめてループ処理したいときは、VBAのExecuteが力を発揮しますよ。</p>



<h2 class="wp-block-heading"><span id="toc13">よく使うメタ文字と正規表現パターン早見表</span></h2>



<p class="wp-block-paragraph">正規表現は、記号（メタ文字）を組み合わせてパターンを作ります。最初は呪文のように見えますが、よく使う記号は限られています。</p>



<p class="wp-block-paragraph">このセクションは早見表としてまとめました。コードを書いていて「あの記号なんだっけ」となったとき、ここに戻ってくれば大丈夫です。ブックマークしておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">メタ文字一覧（記号・意味・使用例）</span></h3>



<p class="wp-block-paragraph">VBScript RegExpの正規表現は、Perl由来のフレーバーです。基本的なメタ文字は他の言語とほぼ共通です。よく使うものを一覧にしました。</p>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>使用例</th></tr></thead><tbody><tr><td><code>^</code></td><td>文字列の先頭</td><td><code>^A</code> → Aで始まる</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td><td><code>円$</code> → 円で終わる</td></tr><tr><td><code>b</code></td><td>単語境界</td><td><code>bcatb</code> → 単語catだけ</td></tr><tr><td><code>B</code></td><td>単語境界以外</td><td><code>Bcat</code> → 単語の途中のcat</td></tr><tr><td><code>.</code></td><td>改行以外の任意1文字</td><td><code>a.c</code> → axcなど</td></tr><tr><td><code>w</code></td><td>半角英数字とアンダースコア（[a-zA-Z_0-9]）</td><td><code>w+</code> → 英数字の連続</td></tr><tr><td><code>W</code></td><td><code>w</code>以外の文字</td><td><code>W</code> → 記号や空白</td></tr><tr><td><code>d</code></td><td>数字（[0-9]）</td><td><code>d{4}</code> → 数字4桁</td></tr><tr><td><code>D</code></td><td>数字以外の文字</td><td><code>D+</code> → 数字以外の連続</td></tr><tr><td><code>s</code></td><td>空白文字（スペース・タブ・改行など）</td><td><code>s+</code> → 空白の連続</td></tr><tr><td><code>S</code></td><td>空白以外の文字</td><td><code>S+</code> → 空白でない連続</td></tr><tr><td><code>[xyz]</code></td><td>x・y・zのいずれか1文字</td><td><code>[abc]</code> → a/b/c</td></tr><tr><td><code>[^xyz]</code></td><td>x・y・z以外の1文字</td><td><code>[^0-9]</code> → 数字以外</td></tr><tr><td><code>*</code></td><td>直前の0回以上の繰り返し</td><td><code>a*</code> → 空文字やaaa</td></tr><tr><td><code>+</code></td><td>直前の1回以上の繰り返し</td><td><code>a+</code> → a、aaa</td></tr><tr><td><code>?</code></td><td>直前の0または1回</td><td><code>colou?r</code> → colorとcolour</td></tr><tr><td><code>{n}</code></td><td>ちょうどn回</td><td><code>d{3}</code> → 数字ちょうど3桁</td></tr><tr><td><code>{n,}</code></td><td>n回以上</td><td><code>d{2,}</code> → 数字2桁以上</td></tr><tr><td><code>{n,m}</code></td><td>n回以上m回以下</td><td><code>d{2,4}</code> → 数字2〜4桁</td></tr><tr><td><code>(abc)</code></td><td>グループ化・キャプチャ</td><td><code>(d{3})-(d{4})</code></td></tr><tr><td>`a</td><td>b`</td><td>aまたはb</td><td>`cat</td><td>dog` → catかdog</td></tr><tr><td><code>1 2</code></td><td>後方参照</td><td>1番目のグループの再利用</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここで1つ大事な注意点があります。<code>w</code> や <code>d</code> は、半角の英数字にしか一致しません。日本語（ひらがな・カタカナ・漢字）や全角の英数字には一致しないのです。</p>



<p class="wp-block-paragraph">日本語を扱いたいときは、文字コードの範囲を直接指定します。たとえばひらがなは <code>[ぁ-ゖ]</code>、カタカナは <code>[ァ-ヺ]</code> のように書きます。全角英数字の扱いは、後半の実務パターンで具体的に解説しますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">実務でよく使うパターン集8選</span></h3>



<p class="wp-block-paragraph">実務でそのまま使えるパターンを8つ厳選しました。Patternプロパティに貼り付けて使えます。コピペ用にどうぞ。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>パターン</th></tr></thead><tbody><tr><td>メールアドレス形式（完全一致）</td><td><code>^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$</code></td></tr><tr><td>電話番号（ハイフン区切り）</td><td><code>^0d{1,4}-d{1,4}-d{4}$</code></td></tr><tr><td>郵便番号（3桁-4桁）</td><td><code>d{3}-d{4}</code></td></tr><tr><td>半角数字のみ</td><td><code>^d+$</code></td></tr><tr><td>URL（httpまたはhttps）</td><td><code>https?://[w./%#&?=-]+</code></td></tr><tr><td>全角英数字の検出</td><td><code>[Ａ-Ｚａ-ｚ０-９]+</code></td></tr><tr><td>日付（YYYY/MM/DD形式）</td><td><code>d{4}/d{1,2}/d{1,2}</code></td></tr><tr><td>前後の空白（全角・半角）</td><td>`^[s　]+</td><td>[s　]+$`</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最後の空白パターンにある <code>　</code> は全角スペースです。VBScript RegExpの <code>s</code> は半角スペースやタブを対象とし、全角スペース（U+3000）には一致しません。全角も確実に対象にしたいときは、このように全角スペースを文字クラスへ明示的に含めると安心ですよ。</p>



<p class="wp-block-paragraph">それでは、これらのパターンを使った実務コードを次のセクションで見ていきましょう。</p>



<h2 class="wp-block-heading"><span id="toc16">実務パターン5選：コピペで使えるサンプルコード</span></h2>



<p class="wp-block-paragraph">ここからは、実務でそのまま使える5つのパターンを、完成コードとして紹介します。すべてコピペして動かせるように書いています。</p>



<p class="wp-block-paragraph">5つのパターンは次のとおりです。</p>



<ol class="wp-block-list"><li>メールアドレス形式チェック</li><li>電話番号ハイフン統一</li><li>郵便番号抽出</li><li>全角英数字→半角変換</li><li>不要な記号一括削除</li></ol>



<p class="wp-block-paragraph">それぞれ「どんな場面で使うか」と「コードの中で何が起きているか」を添えています。自分の業務に合わせてパターンを書き換えれば、応用も簡単ですよ。</p>



<p class="wp-block-paragraph">なお、これらのコードを保存するときは、必ずマクロ有効ブック（.xlsm）形式で保存してください。通常の.xlsx形式ではマクロが保存されず、次に開いたときに消えてしまいます。</p>



<h3 class="wp-block-heading"><span id="toc17">①メールアドレス形式チェック</span></h3>



<p class="wp-block-paragraph">入力された文字列が、メールアドレスの形式として正しいかを判定するコードです。フォーム入力や名簿のチェックで活躍します。</p>



<pre class="wp-block-code"><code>Sub メールアドレス形式チェック()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    'メールアドレスの形式パターン（完全一致のため^と$で囲む）
    re.Pattern = &quot;^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$&quot;
    re.IgnoreCase = True '大文字小文字を区別しない

    Dim 対象 As String
    対象 = Range(&quot;A1&quot;).Value 'A1セルの値をチェック対象にする

    If re.Test(対象) Then
        Range(&quot;B1&quot;).Value = &quot;OK&quot; '形式が正しい
    Else
        Range(&quot;B1&quot;).Value = &quot;形式エラー&quot; '形式が不正
    End If
End Sub</code></pre>



<p class="wp-block-paragraph">パターンを前から読み解いてみます。<code>^[A-Za-z0-9._%+-]+</code> はアットマークの前の部分で、英数字や一部記号が1文字以上。<code>@</code> でアットマーク。<code>[A-Za-z0-9.-]+</code> がドメイン名。<code>.[A-Za-z]{2,}$</code> で、最後にドットと2文字以上のアルファベットが来て終わる、という意味です。</p>



<p class="wp-block-paragraph"><code>^</code> と <code>$</code> で囲むことで「文字列全体がこの形か」を判定しています。これがないと、余計な文字が混じっていても一致してしまうので注意してくださいね。</p>



<p class="wp-block-paragraph">なお、このパターンは厳密なRFC準拠ではありません。ただ、実務上のチェックとしては十分な精度がありますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">②電話番号ハイフン統一</span></h3>



<p class="wp-block-paragraph">ハイフンが入っていたり省略されていたりとバラバラな電話番号を、判定するコードです。まずは「正しいハイフン区切りになっているか」をチェックします。</p>



<pre class="wp-block-code"><code>Sub 電話番号フォーマットチェック()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    '0始まり、ハイフン区切りの電話番号パターン
    re.Pattern = &quot;^0d{1,4}-d{1,4}-d{4}$&quot;

    Dim i As Long
    Dim 最終行 As Long
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row 'A列の最終行を取得

    For i = 1 To 最終行
        If re.Test(Cells(i, 1).Value) Then
            Cells(i, 2).Value = &quot;OK&quot; '形式が正しい
        Else
            Cells(i, 2).Value = &quot;要確認&quot; 'ハイフンの位置が不正
        End If
    Next i
End Sub</code></pre>



<p class="wp-block-paragraph">パターンの <code>^0d{1,4}</code> は、0で始まり数字が1〜4桁続く市外局番の部分です。<code>-d{1,4}</code> が市内局番、<code>-d{4}$</code> が末尾の4桁を表します。固定電話と携帯電話の両方をカバーできる、ゆるめのパターンです。</p>



<p class="wp-block-paragraph">ハイフンを除去して数字だけに統一したい場合は、Replaceメソッドを使います。次のように1行で書けますよ。</p>



<pre class="wp-block-code"><code>Sub 電話番号からハイフン削除()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)
    re.Pattern = &quot;-&quot; 'ハイフンを対象にする
    re.Global = True  '全箇所を削除する

    Range(&quot;C1&quot;).Value = re.Replace(Range(&quot;A1&quot;).Value, &quot;&quot;)
    '例: 03-1234-5678 → 0312345678
End Sub</code></pre>



<p class="wp-block-paragraph">ちなみに、このパターンは「+81」で始まる国際電話番号の形式には対応していません。国内の番号を前提としていますので、海外の連絡先を扱うときは別途調整してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc19">③郵便番号抽出</span></h3>



<p class="wp-block-paragraph">住所が1つのセルにまとめて入力されていて、その中から郵便番号だけを取り出したいケースです。Executeメソッドで抽出します。</p>



<pre class="wp-block-code"><code>Sub 郵便番号を抽出()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    re.Pattern = &quot;d{3}-d{4}&quot; '数字3桁-数字4桁
    re.Global = True            '複数あれば全部取り出す

    Dim matches As Object
    Set matches = re.Execute(Range(&quot;A1&quot;).Value) 'A1から抽出

    If matches.Count &gt; 0 Then
        Range(&quot;B1&quot;).Value = matches(0).Value '最初に見つかった郵便番号
    Else
        Range(&quot;B1&quot;).Value = &quot;見つかりません&quot;
    End If
End Sub</code></pre>



<p class="wp-block-paragraph"><code>d{3}-d{4}</code> というパターンで、「数字3桁・ハイフン・数字4桁」という郵便番号の形を表しています。<code>matches(0).Value</code> で、最初に見つかった郵便番号を取り出しています。</p>



<p class="wp-block-paragraph"><code>matches.Count</code> で一致件数を確認してから処理しているのがポイントです。1件も見つからないときに <code>matches(0)</code> へアクセスするとエラーになるので、この件数チェックでガードしています。</p>



<p class="wp-block-paragraph">複数の郵便番号が含まれる文字列なら、For Eachループですべて取り出せます。Executeは抽出処理の万能選手ですよ。</p>



<h3 class="wp-block-heading"><span id="toc20">④全角英数字→半角変換</span></h3>



<p class="wp-block-paragraph">全角で入力された「ＡＢＣ１２３」のような英数字を、半角の「ABC123」に変換するコードです。RegExpとStrConv関数を組み合わせます。</p>



<p class="wp-block-paragraph">ここで大事なのは、RegExp単体では全角から半角への「変換」はできない、という点です。RegExpは「全角英数字の場所を見つける」役割、実際の変換はVBA標準のStrConv関数が担当します。役割分担で乗り切ります。</p>



<pre class="wp-block-code"><code>Sub 全角英数字を半角に変換()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    re.Pattern = &quot;[Ａ-Ｚａ-ｚ０-９]+&quot; '全角の英大文字・英小文字・数字
    re.Global = True                  '全箇所を対象にする

    Dim 元 As String
    元 = Range(&quot;A1&quot;).Value

    Dim matches As Object, m As Object
    Set matches = re.Execute(元)

    Dim 結果 As String
    結果 = 元
    For Each m In matches
        '見つけた全角部分をStrConvで半角に変換し、置き換える
        結果 = Replace(結果, m.Value, StrConv(m.Value, vbNarrow))
    Next m

    Range(&quot;B1&quot;).Value = 結果 '例: ＡＢＣ１２３ → ABC123
End Sub</code></pre>



<p class="wp-block-paragraph">処理の流れを整理します。まずExecuteで全角英数字のかたまりを見つけます。次に、見つけた1つひとつを <code>StrConv(m.Value, vbNarrow)</code> で半角に変換します。そして、VBA標準のReplace関数で元の全角部分を半角に置き換えています。</p>



<p class="wp-block-paragraph"><code>vbNarrow</code> は「全角を半角に変換する」というStrConvの定数です。逆に半角を全角にしたいときは <code>vbWide</code> を使います。</p>



<p class="wp-block-paragraph">文字列の中の英数字だけを半角に揃えたいときに重宝します。日本語の住所や氏名はそのまま残して、英数字だけ整える、といった処理にぴったりですよ。</p>



<h3 class="wp-block-heading"><span id="toc21">⑤不要な記号一括削除</span></h3>



<p class="wp-block-paragraph">文字列に紛れ込んだ全角記号などを、まとめて削除するコードです。コピペで持ち込んだデータに余計な装飾記号が付いている、なんてときに使えます。</p>



<pre class="wp-block-code"><code>Sub 不要な記号を一括削除()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    '削除したい全角記号を明示的に列挙する（誤削除を防ぐため）
    re.Pattern = &quot;[★☆※→←【】「」（）・]+&quot;
    re.Global = True 'すべての一致箇所を削除する

    Range(&quot;B1&quot;).Value = re.Replace(Range(&quot;A1&quot;).Value, &quot;&quot;)
    '例: 【重要】★お知らせ → 重要お知らせ
End Sub</code></pre>



<p class="wp-block-paragraph"><code>re.Replace(対象, "")</code> のように置換後を空文字にすることで、一致した記号をすべて削除しています。GlobalをTrueにしているので、何個あっても一度で消えます。</p>



<p class="wp-block-paragraph">ここでのポイントは、削除したい記号を <code>[★☆※→…]</code> のように1つずつ明示的に列挙していることです。<code>[！-／]</code> のような広い範囲指定もできますが、範囲指定は思わぬ文字まで巻き込んで消してしまうリスクがあります。</p>



<p class="wp-block-paragraph">大切なデータを扱うときほど、「消したい記号だけを並べる」やり方が安全です。少し手間でも、誤削除を防げると考えれば安いものですよ。</p>



<h2 class="wp-block-heading"><span id="toc22">エラー処理：不正パターン入力時の対策</span></h2>



<p class="wp-block-paragraph">正規表現は便利ですが、パターンの書き方を間違えると実行時エラーになります。特に、パターンをユーザー入力やセルの値から動的に組み立てる場合は要注意です。</p>



<p class="wp-block-paragraph">たとえば閉じカッコのない <code>(d+</code> のような不正なパターンをセットするとします。TestやExecuteの実行時にエラーが発生して、マクロが止まってしまいます。</p>



<p class="wp-block-paragraph">こうした事故を防ぐために、エラー処理を組み込んでおきましょう。マクロを安全に動かすための、最後のひと工夫です。</p>



<h3 class="wp-block-heading"><span id="toc23">On Error GoToでRegExpエラーを捕捉する</span></h3>



<p class="wp-block-paragraph">VBAでエラーを捕捉する基本は、On Error GoToステートメントです。エラーが起きたら指定したラベルへジャンプし、メッセージを出して安全に処理を終えられます。</p>



<pre class="wp-block-code"><code>Sub エラー処理つきパターン判定()
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    On Error GoTo エラー処理 'エラー発生時はラベルへジャンプ

    re.Pattern = Range(&quot;A1&quot;).Value 'セルからパターンを取得（不正かもしれない）
    Dim 結果 As Boolean
    結果 = re.Test(Range(&quot;B1&quot;).Value) '判定を実行

    MsgBox &quot;判定結果: &quot; &amp; 結果
    Exit Sub '正常終了（エラー処理を通らないようExit）

エラー処理:
    MsgBox &quot;パターンが不正です: &quot; &amp; Err.Description '原因を表示
End Sub</code></pre>



<p class="wp-block-paragraph"><code>On Error GoTo エラー処理</code> を宣言しておくと、その後でエラーが起きた瞬間に「エラー処理:」ラベルへ飛びます。<code>Err.Description</code> には、エラーの内容が文字列で入っているので、原因の確認に役立ちます。</p>



<p class="wp-block-paragraph">注意したいのが、正常終了の直前に置いた <code>Exit Sub</code> です。これがないと、エラーがなくてもそのままエラー処理ラベルの中身まで実行してしまいます。「成功したのにエラーメッセージが出る」という妙な動きを防ぐための、お約束のひと言ですよ。</p>



<p class="wp-block-paragraph">On Errorの3つの形式（GoToラベル・Resume Next・GoTo 0）の使い分けは、<a href="https://mashukabu.com/vba-error-handling-complete-guide/">VBAのエラーハンドリング完全ガイド｜On Error GoToとResume Nextの使い分け</a>で詳しく解説しています。あわせて読むと理解が深まりますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">パターン検証関数を作っておくと安全</span></h3>



<p class="wp-block-paragraph">同じエラー処理を何度も書くのは面倒ですよね。そこで、「このパターンは有効か」を判定する関数を1つ作っておくと、使い回せて便利です。</p>



<pre class="wp-block-code"><code>'パターンが有効ならTrue、不正ならFalseを返す関数
Function パターンは有効か(ByVal pat As String) As Boolean
    Dim re As Object
    Set re = CreateObject(&quot;VBScript.RegExp&quot;)

    On Error GoTo 不正 'エラーが出たら不正ラベルへ
    re.Pattern = pat
    re.Test &quot;テスト&quot; '実際に試して動くか確認する

    パターンは有効か = True '問題なければTrue
    Exit Function

不正:
    パターンは有効か = False 'エラーが出たらFalse
End Function</code></pre>



<p class="wp-block-paragraph">この関数を使えば、本処理の前に <code>If パターンは有効か(パターン文字列) Then</code> のように安全確認ができます。不正なパターンが来ても、マクロが止まらず分岐で対処できるわけです。</p>



<p class="wp-block-paragraph">ユーザーが自由にパターンを入力できるツールを作るときは、この検証関数が頼りになります。「まず安全確認、それから本処理」の流れを習慣にしておくと安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc25">ワークシート関数との使い分け</span></h2>



<p class="wp-block-paragraph">ここまでVBAの正規表現を見てきましたが、実はMicrosoft 365には正規表現を使えるワークシート関数もあります。REGEXTEST・REGEXREPLACE・REGEXEXTRACTの3つです。</p>



<p class="wp-block-paragraph">「じゃあ関数とVBA、どっちを使えばいいの」と迷いますよね。それぞれ得意な場面が違うので、ここで整理しておきます。</p>



<p class="wp-block-paragraph">結論から言うと、セル単位で完結する処理は関数、繰り返しや条件分岐を含む処理はVBA、という分け方が基本です。</p>



<h3 class="wp-block-heading"><span id="toc26">REGEXTEST・REGEXREPLACE・REGEXEXTRACTとの違い</span></h3>



<p class="wp-block-paragraph">ワークシート関数の3つは、VBAのRegExpメソッドとほぼ対応しています。対応関係を表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>ワークシート関数</th><th>VBA RegExp</th></tr></thead><tbody><tr><td>パターン一致チェック</td><td>REGEXTEST</td><td>Testメソッド</td></tr><tr><td>パターン一致部分の置換</td><td>REGEXREPLACE</td><td>Replaceメソッド</td></tr><tr><td>パターン一致部分の抽出</td><td>REGEXEXTRACT</td><td>Executeメソッド</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ワークシート関数の大きな利点は、数式を入れるだけで使える手軽さです。プログラミングの知識がなくても、セルに <code>=REGEXTEST(A1,"d+")</code> と書くだけで判定できます。</p>



<p class="wp-block-paragraph">ただし、ワークシート関数はMicrosoft 365専用です。Excel 2019や2021では使えません。一方、VBAのRegExpはどのバージョンでも動くという強みがあります。</p>



<p class="wp-block-paragraph">それぞれの関数の詳しい使い方は、<a href="https://mashukabu.com/excel-function-howto-use-regextest/">REGEXTEST関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">REGEXREPLACE関数</a>・<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">REGEXEXTRACT関数</a>の各記事を参考にしてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc27">VBA RegExpを選ぶべきシーン</span></h3>



<p class="wp-block-paragraph">では、どんなときにVBAの正規表現を選ぶべきでしょうか。次のような場面ではVBAが向いています。</p>



<ul class="wp-block-list"><li>数百行・数千行をまとめて一括処理したいとき（ループ処理が速い）</li><li>「一致したらこのシートへ転記」のように条件分岐を伴うとき</li><li>全角→半角変換のように、StrConvなど他の関数と組み合わせたいとき</li><li>Microsoft 365以外（Excel 2019・2021）の環境で正規表現を使いたいとき</li><li>ボタン一発で実行する定型業務に組み込みたいとき</li></ul>



<p class="wp-block-paragraph">逆に、1つのセルの判定や置換で済むなら、わざわざマクロを書く必要はありません。ワークシート関数のほうが手早く片付きます。</p>



<p class="wp-block-paragraph">ちなみに、Googleスプレッドシートにも正規表現を使える関数があります。スプレッドシートでの置換は<a href="https://mashukabu.com/spreadsheet-regexreplace-function/">スプレッドシートのREGEXREPLACE関数</a>で解説していますので、Sheetsを使う方はそちらもどうぞ。</p>



<p class="wp-block-paragraph">ツールに応じて使い分ければ、文字列処理の悩みはほとんど解決できますよ。</p>



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



<p class="wp-block-paragraph">VBAの正規表現（RegExp）について、準備から実務パターンまで解説してきました。最後に要点を振り返ります。</p>



<ul class="wp-block-list"><li>正規表現は「形のパターン」での判定・抽出・置換が得意で、TRIMやSUBSTITUTEでは難しい処理を一気にシンプルにできる</li><li>RegExpオブジェクトは「参照設定（早期バインディング）」か「CreateObject（遅延バインディング）」で用意する。自分用は早期、配布用は遅延が目安</li><li>覚えるのは3つのプロパティ（Pattern・Global・IgnoreCase）と3つのメソッド（Test・Replace・Execute）だけ</li><li>日本語や全角文字は <code>w</code> や <code>d</code> に一致しないので、文字コード範囲で指定する</li><li>不正なパターンに備えて、On Error GoToや検証関数でエラー処理を入れておくと安全</li><li>セル単位の処理はワークシート関数、ループや条件分岐を伴う処理はVBAと使い分ける</li></ul>



<p class="wp-block-paragraph">正規表現は最初こそ記号の羅列に見えますが、よく使うパターンは限られています。この記事の早見表とサンプルコード5本を手元に置いておけば、実務の文字列処理でつまずくことはぐっと減りますよ。</p>



<p class="wp-block-paragraph">まずは身近なデータで、メールアドレスチェックや郵便番号抽出から試してみてください。一度コツをつかめば、これまで手作業でやっていた面倒なクレンジングが、ボタン一発で片付くようになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-regexp-howto/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Power Queryのデータ整形入門｜置換・型変換・条件列で自動クレンジング</title>
		<link>https://mashukabu.com/power-query-data-cleansing-basics/</link>
					<comments>https://mashukabu.com/power-query-data-cleansing-basics/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 15:50:21 +0000</pubDate>
				<category><![CDATA[仕事効率化]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Power Query]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[データ整形]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7837</guid>

					<description><![CDATA[Power Queryで汚いデータをきれいにする基本操作を入門解説。値の置換・不要な行や空白の削除・データ型の変換・条件列の4つを実例で紹介します。整形手順は自動で記録され、毎回ワンクリックで同じクレンジングが走ります。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「取り込んだデータが汚くて、毎回手作業で直している」――そんな経験はありませんか。表記ゆれ、いらない空白、文字列のままの数値や日付。分析を始める前の下準備だけで、ごっそり時間を取られてしまいますよね。</p>



<p class="wp-block-paragraph">データ活用は前処理が労力の8割を占めるとも言われます。そこを毎回手作業でこなしていると、肝心の分析にたどり着く前に疲れ果ててしまいます。しかもコピペや手修正は、直し忘れや誤操作のもとです。</p>



<p class="wp-block-paragraph">そこで役立つのが <strong>Power Query</strong> です。値の置換やデータ型の変換といった整形操作を一度設定すれば、その手順がステップとして記録されます。次回からは元データを差し替えて[更新]を押すだけ。同じクレンジングが自動で走ります。</p>



<p class="wp-block-paragraph">この記事では、実務でありがちな「汚いデータ」を題材に、整形の基本となる4つの操作を解説します。置換・行削除・データ型変換・条件列の順に、ひとつずつ手を動かしながら覚えていきましょう。</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">Power Queryのデータ整形とは？</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">操作1: 値の置換で表記ゆれをそろえる</a><ol><li><a href="#toc5" tabindex="0">置換の手順</a></li><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">空白行を削除する</a></li><li><a href="#toc9" tabindex="0">セル内の余分な空白を取り除く</a></li></ol></li><li><a href="#toc10" tabindex="0">操作3: データ型を変換する</a><ol><li><a href="#toc11" tabindex="0">文字列を数値・日付に変える</a></li><li><a href="#toc12" tabindex="0">型変換でエラーが出たときは</a></li></ol></li><li><a href="#toc13" tabindex="0">操作4: 条件列で区分を自動で付ける</a><ol><li><a href="#toc14" tabindex="0">条件列の作り方</a></li><li><a href="#toc15" tabindex="0">条件を増やすこともできる</a></li></ol></li><li><a href="#toc16" tabindex="0">うまくいかないときの対処法</a></li><li><a href="#toc17" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Power Queryのデータ整形とは？</span></h2>



<p class="wp-block-paragraph">Power Query のデータ整形とは、取り込んだ生データを「分析できる形」に整える一連の処理のことです。具体的には、表記の統一、不要なデータの除去、型の修正、区分の付与などを指します。</p>



<p class="wp-block-paragraph">大きな特長は、操作そのものではなく <strong>操作の手順が記録される</strong> 点です。Excel のシート上で直接セルを直すと、その作業は1回きりで消えてしまいます。一方 Power Query では、行った操作が「適用したステップ」として右側に積み上がっていきます。</p>



<p class="wp-block-paragraph">そのため、来月また同じ形式のデータが届いても、整形をやり直す必要はありません。元データを入れ替えて更新するだけで、記録済みの手順が頭から順に再実行されます。これが手作業との決定的な違いです。</p>



<p class="wp-block-paragraph">Power Query の全体像をまず押さえたい方は、<a href="https://mashukabu.com/power-query-complete-guide/">Power Queryの使い方｜完全ガイド</a>で基本操作から確認しておくと、この記事の内容がスムーズに理解できます。</p>



<h3 class="wp-block-heading"><span id="toc2">この記事で扱うサンプルデータ</span></h3>



<p class="wp-block-paragraph">今回は、次のような「ありがちな汚い顧客リスト」を整えていきます。手入力やシステム出力が混ざった、実務でよく見かけるタイプのデータです。</p>



<figure class="wp-block-table"><table><thead><tr><th>顧客名</th><th>区分</th><th>売上</th><th>登録日</th></tr></thead><tbody><tr><td>山田　商事</td><td>法人</td><td>120000</td><td>2025/04/01</td></tr><tr><td>鈴木 太郎</td><td>個人</td><td>35000</td><td>2025/4/2</td></tr><tr><td>（空白行）</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>佐藤物産</td><td>ほうじん</td><td>80000</td><td>2025/04/03</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「法人」と「ほうじん」の表記ゆれ、名前に混ざった全角・半角スペース、空白行、文字列扱いの売上金額。こうした問題を、これから4つの操作で順番に片付けていきます。</p>



<h3 class="wp-block-heading"><span id="toc3">前提とエディターの開き方</span></h3>



<p class="wp-block-paragraph">操作は <strong>Power Query エディター</strong> の中で行います。Excel でデータ範囲を選び、リボンの[データ]タブから[テーブルまたは範囲から]をクリックすると、エディターが起動します。</p>



<p class="wp-block-paragraph">Power Query は Excel 2016 以降に標準搭載されています。Excel 2010・2013 では Microsoft 公式の無料アドインを追加すれば利用できます。データの取り込み方そのものに不安がある方は、<a href="https://mashukabu.com/power-query-getting-started/">Power Queryの始め方</a>で取り込み手順から確認してみてください。</p>



<h2 class="wp-block-heading"><span id="toc4">操作1: 値の置換で表記ゆれをそろえる</span></h2>



<p class="wp-block-paragraph">最初に片付けるのは表記ゆれです。サンプルでは区分列に「法人」と「ほうじん」が混在しています。このままでは集計のとき別物として数えられてしまいます。</p>



<p class="wp-block-paragraph">値の置換を使えば、特定の文字列を別の文字列に一括で書き換えられます。Excel の[置換]機能とよく似ていますが、こちらは手順として記録される点が違います。</p>



<h3 class="wp-block-heading"><span id="toc5">置換の手順</span></h3>



<ol class="wp-block-list"><li>整えたい列（ここでは「区分」列）の見出しをクリックして選択します</li><li>リボンの[ホーム]タブにある[値の置換]をクリックします</li><li>[検索する値]に <code>ほうじん</code>、[置換後]に <code>法人</code> と入力します</li><li>[OK]をクリックすると、対象の文字列がすべて置き換わります</li></ol>



<p class="wp-block-paragraph">これで区分が「法人」に統一されました。右側の「適用したステップ」に「置換された値」という行が追加されているはずです。これが記録された手順です。</p>



<h3 class="wp-block-heading"><span id="toc6">スペースや記号もまとめて消せる</span></h3>



<p class="wp-block-paragraph">置換は、いらない記号や文字を削除する用途にも使えます。[置換後]を空欄のままにすれば、検索した文字を「何もない状態」に置き換える、つまり削除できます。</p>



<p class="wp-block-paragraph">たとえば電話番号のハイフン、金額についた「円」の文字、住所に紛れた余計な記号などを一気に取り除けます。「消したい文字を空文字に置換する」と覚えておくと応用が利きます。</p>



<p class="wp-block-paragraph">なお、列をまたいだ複雑な分割や結合が必要な場合は、置換ではなく専用の操作が向いています。詳しくは<a href="https://mashukabu.com/power-query-split-merge-columns/">Power Queryで列を分割・結合する方法</a>を参考にしてください。</p>



<h2 class="wp-block-heading"><span id="toc7">操作2: 不要な行と空白を削除する</span></h2>



<p class="wp-block-paragraph">次は、分析の邪魔になる空白行と、セル内に紛れ込んだ余計な空白を取り除きます。サンプルには中ほどに空白行が1行入っていましたね。</p>



<h3 class="wp-block-heading"><span id="toc8">空白行を削除する</span></h3>



<p class="wp-block-paragraph">空白行はワンクリックでまとめて消せます。手順は次のとおりです。</p>



<ol class="wp-block-list"><li>リボンの[ホーム]タブで[行の削減]をクリックします</li><li>メニューから[行の削除]→[空白行の削除]を選びます</li></ol>



<p class="wp-block-paragraph">これで、すべての列が空のままになっている行が一括で取り除かれます。手作業で1行ずつ探して削除する必要はありません。</p>



<h3 class="wp-block-heading"><span id="toc9">セル内の余分な空白を取り除く</span></h3>



<p class="wp-block-paragraph">顧客名の「山田　商事」「鈴木 太郎」のように、文字の間や前後に空白が混ざっているケースもよくあります。こうした空白は[トリミング]という機能で整えられます。</p>



<ol class="wp-block-list"><li>整えたい列（「顧客名」列）の見出しを選択します</li><li>[変換]タブの[書式]をクリックします</li><li>メニューから[トリミング]を選びます</li></ol>



<p class="wp-block-paragraph">トリミングは、文字列の <strong>前後</strong> にある余分な空白を削除する機能です。ただし、単語と単語の間にある空白には作用しません。間の空白まで消したい場合は、操作1で紹介した値の置換で「半角スペースを空文字に置換」する方法を併用します。</p>



<p class="wp-block-paragraph">データの集計まで一気に進めたいときは、整形後に<a href="https://mashukabu.com/power-query-group-by-aggregate/">Power Queryのグループ化で集計する方法</a>へ進むと、件数や合計をまとめて出せます。</p>



<h2 class="wp-block-heading"><span id="toc10">操作3: データ型を変換する</span></h2>



<p class="wp-block-paragraph">3つ目はデータ型の変換です。これは見落とされがちですが、とても重要な操作です。</p>



<p class="wp-block-paragraph">取り込んだ直後のデータは、数値や日付であっても「文字列(テキスト)」として扱われていることがあります。文字列のままだと合計の計算ができなかったり、日付として並べ替えできなかったりします。</p>



<h3 class="wp-block-heading"><span id="toc11">文字列を数値・日付に変える</span></h3>



<p class="wp-block-paragraph">売上列を数値に、登録日列を日付に変換してみましょう。手順はどちらも同じです。</p>



<ol class="wp-block-list"><li>型を変えたい列の見出しを選択します</li><li>列見出しの左にある小さなアイコン(ABCや123のマーク)をクリックします</li><li>表示されたメニューから適切な型を選びます</li></ol>



<p class="wp-block-paragraph">売上列なら[整数]、登録日列なら[日付]を選びます。これで売上は計算できる数値に、登録日はきちんとした日付として認識されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>変換前の型</th><th>変換後に選ぶ型</th><th>主な用途</th></tr></thead><tbody><tr><td>文字列(テキスト)</td><td>整数・10進数</td><td>合計・平均などの計算</td></tr><tr><td>文字列(テキスト)</td><td>日付</td><td>期間の絞り込み・並べ替え</td></tr><tr><td>文字列(テキスト)</td><td>真偽値</td><td>TRUE/FALSEの判定</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc12">型変換でエラーが出たときは</span></h3>



<p class="wp-block-paragraph">型を変換したとき、一部のセルに <code>Error</code> と表示されることがあります。これは、その値を指定した型に変換できなかったことを示します。</p>



<p class="wp-block-paragraph">たとえば数値列に「未定」という文字が混ざっていると、数値に変換できずエラーになります。原因の文字を操作1の置換で先に取り除いてから、もう一度型変換すると解決することが多いです。手順を入れ替えるだけで直せるのも、ステップが記録されている Power Query の強みです。</p>



<h2 class="wp-block-heading"><span id="toc13">操作4: 条件列で区分を自動で付ける</span></h2>



<p class="wp-block-paragraph">最後は条件列です。これは、ある列の値に応じて「もし〜なら〜」と区分を自動で付ける機能です。Excel の IF 関数を、画面の入力だけで設定できると考えるとイメージしやすいですよね。</p>



<p class="wp-block-paragraph">サンプルの売上列をもとに、「10万円以上なら大口、それ未満なら通常」という区分を新しい列として作ってみます。</p>



<h3 class="wp-block-heading"><span id="toc14">条件列の作り方</span></h3>



<ol class="wp-block-list"><li>リボンの[列の追加]タブをクリックします</li><li>[条件列]をクリックすると、設定画面が開きます</li><li>[新しい列名]に <code>売上区分</code> と入力します</li><li>条件部分を「列名: 売上」「演算子: 次の値以上」「値: 100000」に設定します</li><li>[出力]に <code>大口</code> と入力します</li><li>下部の[それ以外の場合]に <code>通常</code> と入力します</li><li>[OK]をクリックすると、判定結果が入った新しい列が追加されます</li></ol>



<p class="wp-block-paragraph">これで、売上が10万円以上の行には「大口」、それ未満の行には「通常」が自動で入ります。元データが変わっても、更新すれば判定もやり直されます。</p>



<h3 class="wp-block-heading"><span id="toc15">条件を増やすこともできる</span></h3>



<p class="wp-block-paragraph">判定を3段階以上にしたいときは、設定画面の[句の追加]をクリックします。これで条件を上から順に並べられます。</p>



<p class="wp-block-paragraph">たとえば「30万円以上なら最重要、10万円以上なら大口、それ以外は通常」のように、ランク分けを作れます。条件は上から順に評価されるので、 <strong>金額の大きい条件から並べる</strong> のがポイントです。</p>



<p class="wp-block-paragraph">さらに細かい計算式や、関数を使った独自の列を作りたくなったら、M言語に踏み込むと表現の幅が広がります。興味が出てきたら<a href="https://mashukabu.com/power-query-m-language-custom-column/">Power QueryのM言語でカスタム列を作る方法</a>をのぞいてみてください。</p>



<h2 class="wp-block-heading"><span id="toc16">うまくいかないときの対処法</span></h2>



<p class="wp-block-paragraph">操作を進めるなかで詰まりやすいポイントを、ここでまとめておきます。</p>



<ul class="wp-block-list"><li><strong>ステップを間違えた</strong>: 右側の「適用したステップ」で該当行の左にある×印をクリックすれば、その操作だけ取り消せます。最初からやり直す必要はありません。</li><li><strong>置換が効かない</strong>: 前後に空白が残っていると別の文字列と判定されます。先にトリミングで空白を取ってから置換すると、うまく一致します。</li><li><strong>更新したら型がリセットされた</strong>: データ取り込みのステップより前に型変換が入っていないか確認しましょう。基本は「取り込み→整形」の順に並べます。</li></ul>



<p class="wp-block-paragraph">整形がひととおり終わったら、リボンの[ホーム]タブから[閉じて読み込む]をクリックします。整えたデータが Excel のシートに表として出力されます。</p>



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



<p class="wp-block-paragraph">Power Query のデータ整形は、置換・行削除・データ型変換・条件列の4つを押さえれば、汚いデータの大半をきれいにできます。最後にポイントを振り返っておきましょう。</p>



<ul class="wp-block-list"><li><strong>置換</strong>: 表記ゆれをそろえる。空文字に置換すれば不要な文字も削除できる</li><li><strong>行・空白の削除</strong>: 空白行はワンクリック、セル内の空白はトリミングで除去</li><li><strong>データ型変換</strong>: 文字列の数値や日付を、計算・並べ替えできる正しい型に直す</li><li><strong>条件列</strong>: IF のような分岐で、区分やランクを自動で付与する</li></ul>



<p class="wp-block-paragraph">なにより大きいのは、これらの操作がすべて手順として記録されることです。一度組んでしまえば、来月も再来月も[更新]ボタンひとつで同じクレンジングが走ります。毎回の手作業から解放されて、本来やりたい分析に集中できるようになります。</p>



<p class="wp-block-paragraph">まずは手元のよく使うデータで、この4操作を一度試してみてください。基本操作を体系的に押さえたいときは、<a href="https://mashukabu.com/power-query-complete-guide/">Power Queryの使い方｜完全ガイド</a>も合わせて読むと、ぐっと理解が深まります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/power-query-data-cleansing-basics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのDBCS関数の使い方｜JIS関数との違い・半角→全角変換・実務パターン7選</title>
		<link>https://mashukabu.com/excel-dbcs-function/</link>
					<comments>https://mashukabu.com/excel-dbcs-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 07 May 2026 12:42:43 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[ASC関数]]></category>
		<category><![CDATA[DBCS関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[JIS関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[全角半角変換]]></category>
		<category><![CDATA[文字列関数]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6560</guid>

					<description><![CDATA[ExcelのDBCS関数でJIS関数の別名として半角文字を全角に変換する方法を解説。構文・引数・JIS関数との違い・実務活用7パターン・PHONETIC連携・エラー対処・ASC関数との使い分けまで網羅。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「ExcelのDBCS関数って何？JIS関数とどう違うの？」。Microsoft公式ドキュメントや英語版Excelで「DBCS関数」を見かけて、こんな疑問を持ったことはありませんか。</p>



<p class="wp-block-paragraph">DBCS関数はExcelで半角文字を全角に変換する関数です。日本語版ExcelでおなじみのJIS関数の別名（エイリアス）として用意されています。動作はJIS関数とまったく同じなので、安心して使えます。</p>



<p class="wp-block-paragraph">この記事では、DBCS関数の構文・引数から、JIS関数・ASC関数との違い、対応バージョン、実務で使える活用パターン7選、PHONETIC関数との連携、よくあるエラーの対処法、Power QueryやGASでの代替手段までまとめました。「結局どっちを使えばいいの？」という疑問にも明確な決定基準を示します。</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">DBCS関数とは？JIS関数の別名で半角を全角に変換するExcel関数</a><ol><li><a href="#toc2" tabindex="0">DBCSの名前の意味（Double-Byte Character Set）</a></li><li><a href="#toc3" tabindex="0">DBCS関数が使える環境（Excel 2013以降 / Microsoft 365）</a></li></ol></li><li><a href="#toc4" tabindex="0">DBCS関数の書き方（構文と引数）</a><ol><li><a href="#toc5" tabindex="0">変換される文字・変換されない文字（一覧表）</a></li></ol></li><li><a href="#toc6" tabindex="0">DBCS関数とJIS関数の違いは？結論：動作はまったく同じ</a><ol><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">DBCS関数の基本的な使い方</a><ol><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">Microsoft 365のスピル機能で一括変換</a></li></ol></li><li><a href="#toc15" tabindex="0">実務で使えるDBCS関数の活用パターン7選</a><ol><li><a href="#toc16" tabindex="0">パターン1: 取引先マスターの会社名カナを全角に統一</a></li><li><a href="#toc17" tabindex="0">パターン2: 商品コード・取引先コードの全角化</a></li><li><a href="#toc18" tabindex="0">パターン3: PHONETIC関数のふりがなを全角化</a></li><li><a href="#toc19" tabindex="0">パターン4: TRIM関数と組み合わせて前処理する</a></li><li><a href="#toc20" tabindex="0">パターン5: ASC→DBCSで強制的に全角化（混在データの統一）</a></li><li><a href="#toc21" tabindex="0">パターン6: 帳票・PDF出力用の英数字レイアウト統一</a></li><li><a href="#toc22" tabindex="0">パターン7: データ移行・他システム連携での全角化要件対応</a></li></ol></li><li><a href="#toc23" tabindex="0">DBCS関数のよくあるエラーと対処法</a><ol><li><a href="#toc24" tabindex="0">#NAME?エラー</a></li><li><a href="#toc25" tabindex="0">#VALUE!エラー</a></li><li><a href="#toc26" tabindex="0">期待した変換が起きない</a></li><li><a href="#toc27" tabindex="0">変換後の文字数が変わってしまう</a></li></ol></li><li><a href="#toc28" tabindex="0">ASC・JIS・DBCS関数の完全比較表</a><ol><li><a href="#toc29" tabindex="0">双方向の使い分けパターン</a></li></ol></li><li><a href="#toc30" tabindex="0">他環境・他ツールでの代替手段</a><ol><li><a href="#toc31" tabindex="0">Googleスプレッドシート（GAS）</a></li><li><a href="#toc32" tabindex="0">VBA（Excel マクロ）</a></li><li><a href="#toc33" tabindex="0">Python（pandas データ整形）</a></li></ol></li><li><a href="#toc34" tabindex="0">まとめ：DBCS関数とJIS関数を理解して半角全角変換を使い分けよう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">DBCS関数とは？JIS関数の別名で半角を全角に変換するExcel関数</span></h2>



<p class="wp-block-paragraph">ExcelのDBCS（ディービーシーエス）関数は、<strong>半角文字を全角文字に変換</strong>する関数です。動作はJIS関数と完全に同一で、JIS関数の別名として用意されています。</p>



<p class="wp-block-paragraph">たとえば「Excel」をDBCS関数に渡すと「Ｅｘｃｅｌ」が返ります。半角の英数字・カタカナ・記号をまとめて全角化できます。</p>



<h3 class="wp-block-heading"><span id="toc2">DBCSの名前の意味（Double-Byte Character Set）</span></h3>



<p class="wp-block-paragraph">DBCSは「Double-Byte Character Set（ダブルバイト文字セット）」の略です。1文字を2バイトで表現する文字コード方式の総称で、日本語・中国語・韓国語など漢字圏の文字を扱う仕組みを指します。</p>



<p class="wp-block-paragraph">対義語はSBCS（Single-Byte Character Set／シングルバイト文字セット）で、半角英数字のような1バイト文字を表します。「半角→全角＝SBCS→DBCS」と覚えておくと理解しやすいです。</p>



<p class="wp-block-paragraph">なお、現代のExcelは内部的にUnicode（UTF-16）で文字を扱っています。Unicodeでは半角文字を「Halfwidth Form」、全角文字を「Fullwidth Form」と呼びます。DBCS関数の「DBCS」は文字幅の概念であり、現代のエンコーディング名そのものを指すわけではありません。</p>



<h3 class="wp-block-heading"><span id="toc3">DBCS関数が使える環境（Excel 2013以降 / Microsoft 365）</span></h3>



<p class="wp-block-paragraph">DBCS関数は次の環境で使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>環境</th><th>DBCS関数</th><th>JIS関数</th></tr></thead><tbody><tr><td>Microsoft 365 (Windows/Mac)</td><td>使える</td><td>使える</td></tr><tr><td>Excel 2024 / 2021 / 2019</td><td>使える</td><td>使える</td></tr><tr><td>Excel 2016 / 2013</td><td>使える</td><td>使える</td></tr><tr><td>Excel for Mac 2016以降</td><td>使える</td><td>使える</td></tr><tr><td>Excel for the web</td><td>使える</td><td>使える</td></tr><tr><td>Googleスプレッドシート</td><td>使えない</td><td>使えない</td></tr><tr><td>LibreOffice Calc</td><td>使える</td><td>使える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Excel 2013以降のすべてのバージョンでDBCS関数を使えます。Googleスプレッドシートには対応していないため、半角→全角変換が必要な場合はGAS（Google Apps Script）での代替実装が必要です（後述）。</p>



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



<p class="wp-block-paragraph">DBCS関数の構文はシンプルです。</p>



<pre class="wp-block-code"><code>=DBCS(文字列)</code></pre>



<p class="wp-block-paragraph">引数はたった1つで、変換したい文字列やセル参照を指定するだけです。</p>



<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></tbody></table></figure>



<p class="wp-block-paragraph">ダブルクォーテーションで囲んで直接文字列を渡すこともできます。セル参照との両方に対応しているので、用途に合わせて使い分けてください。</p>



<h3 class="wp-block-heading"><span id="toc5">変換される文字・変換されない文字（一覧表）</span></h3>



<p class="wp-block-paragraph">DBCS関数で変換される文字と変換されない文字を整理しておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字の種類</th><th>変換前</th><th>変換後</th><th>変換される？</th></tr></thead><tbody><tr><td>半角英字</td><td>A B C</td><td>Ａ Ｂ Ｃ</td><td>される</td></tr><tr><td>半角数字</td><td>123</td><td>１２３</td><td>される</td></tr><tr><td>半角カタカナ</td><td>ｴｸｾﾙ</td><td>エクセル</td><td>される</td></tr><tr><td>半角記号</td><td>@#$</td><td>＠＃＄</td><td>される</td></tr><tr><td>半角スペース</td><td>（半角空白）</td><td>（全角空白）</td><td>される</td></tr><tr><td>ひらがな</td><td>あいう</td><td>あいう</td><td>されない</td></tr><tr><td>漢字</td><td>東京都</td><td>東京都</td><td>されない</td></tr><tr><td>全角文字</td><td>Ａｂｃ１</td><td>Ａｂｃ１</td><td>変換不要</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ひらがな・漢字・全角文字はそのまま残ります。混在データでも安心して使えます。</p>



<p class="wp-block-paragraph">半角カタカナの濁音「ｶﾞ」「ﾊﾟ」は2文字で構成されていますが、DBCS関数で全角化すると「ガ」「パ」のように1文字に統合されます。全角カタカナの仕様による正常な動作です。LEN関数で文字数を計算すると、変換前後で文字数が減る点には注意してください。</p>



<h2 class="wp-block-heading"><span id="toc6">DBCS関数とJIS関数の違いは？結論：動作はまったく同じ</span></h2>



<p class="wp-block-paragraph">「DBCSとJISって何が違うの？」という疑問に、結論からお答えします。<strong>動作はまったく同じ</strong>です。</p>



<h3 class="wp-block-heading"><span id="toc7">同じ結果が返る（検証済み）</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><code>=DBCS("Excel")</code></td><td><code>Ｅｘｃｅｌ</code></td></tr><tr><td><code>=JIS("Excel")</code></td><td><code>Ｅｘｃｅｌ</code></td></tr><tr><td><code>=DBCS("ｱﾝﾄﾞｰｲﾄﾞ")</code></td><td><code>アンドーイド</code></td></tr><tr><td><code>=JIS("ｱﾝﾄﾞｰｲﾄﾞ")</code></td><td><code>アンドーイド</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">文字コード・文字数・処理速度のいずれも有意な差はありません。Microsoft公式ドキュメントでも、DBCS関数のページとJIS関数のページに同じ説明が載っています。</p>



<h3 class="wp-block-heading"><span id="toc8">なぜ別名（エイリアス）が用意されたのか</span></h3>



<p class="wp-block-paragraph">JIS関数は「JIS（Japanese Industrial Standards／日本産業規格）」に由来する名前で、日本語環境向けの関数として長く使われてきました。</p>



<p class="wp-block-paragraph">一方でDBCSは「Double-Byte Character Set」という汎用的な命名です。Microsoftがグローバル展開を意識して併設した別名で、英語版Excelや国際版のドキュメントで主に使われます。</p>



<p class="wp-block-paragraph"><strong>「JIS関数＝日本語ローカル名」「DBCS関数＝国際共通名」</strong>という関係と理解すると分かりやすいです。中国語版Excelでもこの2つの関数は同じ動作で利用できます。</p>



<h3 class="wp-block-heading"><span id="toc9">結局どっちを使えばいい？決定表で整理</span></h3>



<p class="wp-block-paragraph">実務での選び方を表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>シーン</th><th>推奨関数</th><th>理由</th></tr></thead><tbody><tr><td>日本語環境・社内Excelファイル</td><td>JIS関数</td><td>解説記事・参考書・同僚との共有がスムーズ</td></tr><tr><td>英語UIのExcel・海外チームと共有</td><td>DBCS関数</td><td>英語版UI/Microsoft Docs英語版に合わせる</td></tr><tr><td>国際テンプレート・多言語ファイル</td><td>DBCS関数</td><td>言語非依存の汎用名で混乱が少ない</td></tr><tr><td>Microsoft公式ドキュメント（英語）参照中</td><td>DBCS関数</td><td>表記が統一されて作業効率が上がる</td></tr><tr><td>他者作成のExcelファイルを読み解くとき</td><td>どちらでもOK</td><td>「JIS関数の別名」と知っていれば困らない</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「どちらを使うか」より「同じものだと知っている」ほうが大事です。</p>



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



<p class="wp-block-paragraph">ここから実際の使い方を見ていきます。</p>



<h3 class="wp-block-heading"><span id="toc11">セル参照で変換する</span></h3>



<p class="wp-block-paragraph">A2セルに「Excel 2024」と入力されているとします。</p>



<pre class="wp-block-code"><code>=DBCS(A2)</code></pre>



<p class="wp-block-paragraph">結果は「Ｅｘｃｅｌ　２０２４」になります。半角スペースも全角スペースに変換される点に注意してください。</p>



<h3 class="wp-block-heading"><span id="toc12">文字列を直接指定する</span></h3>



<p class="wp-block-paragraph">セルを参照せず、文字列を直接渡すこともできます。</p>



<pre class="wp-block-code"><code>=DBCS(&quot;Tokyo123&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「Ｔｏｋｙｏ１２３」です。ダブルクォーテーションで囲むのを忘れないでください。</p>



<h3 class="wp-block-heading"><span id="toc13">複数のセルを一括変換する</span></h3>



<p class="wp-block-paragraph">A2:A100に商品コードが入っているとき、B2セルに次の数式を入れて下方向にコピーします。</p>



<pre class="wp-block-code"><code>=DBCS(A2)</code></pre>



<p class="wp-block-paragraph">100行分のデータをまとめて全角化できます。元データを残しつつ変換結果を別列に置けるので、後で見比べたいときにも便利です。</p>



<h3 class="wp-block-heading"><span id="toc14">Microsoft 365のスピル機能で一括変換</span></h3>



<p class="wp-block-paragraph">Microsoft 365 や Excel 2021以降では、スピル機能を使って1つの数式で範囲全体を変換できます。</p>



<pre class="wp-block-code"><code>=DBCS(A2:A100)</code></pre>



<p class="wp-block-paragraph">B2セルに上の数式を入力するだけで、B2:B100に変換結果が自動展開されます。下方向コピーの手間が省けるため、データ量が多いときに便利です。</p>



<h2 class="wp-block-heading"><span id="toc15">実務で使えるDBCS関数の活用パターン7選</span></h2>



<p class="wp-block-paragraph">DBCS関数は帳票作成やデータクレンジングで活躍します。実務でよく使うパターンを7つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc16">パターン1: 取引先マスターの会社名カナを全角に統一</span></h3>



<p class="wp-block-paragraph">請求書や納品書で、半角カタカナと全角カタカナが混在していると体裁が崩れます。DBCS関数で全角に揃えましょう。</p>



<pre class="wp-block-code"><code>=DBCS(A2)</code></pre>



<p class="wp-block-paragraph">A2に「ｶﾌﾞｼｷｶﾞｲｼｬｴｸｾﾙ」と入っていれば、「カブシキガイシャエクセル」が返ります。帳票印刷前のクレンジングに最適です。</p>



<h3 class="wp-block-heading"><span id="toc17">パターン2: 商品コード・取引先コードの全角化</span></h3>



<p class="wp-block-paragraph">伝票や納品書で全角文字を使う運用ルールがある場合、半角コードを一括で全角に変換できます。</p>



<pre class="wp-block-code"><code>=DBCS(&quot;A001&quot;)</code></pre>



<p class="wp-block-paragraph">結果は「Ａ００１」です。セル参照を使って一覧から変換すれば、コード列の体裁が一気に整います。</p>



<h3 class="wp-block-heading"><span id="toc18">パターン3: PHONETIC関数のふりがなを全角化</span></h3>



<p class="wp-block-paragraph">PHONETIC関数は漢字のふりがなを取得する関数で、デフォルトでは半角カタカナで読み仮名を返します。DBCS関数と組み合わせて全角化しましょう。</p>



<pre class="wp-block-code"><code>=DBCS(PHONETIC(A2))</code></pre>



<p class="wp-block-paragraph">A2の漢字「山田太郎」のふりがなが半角の「ﾔﾏﾀﾞﾀﾛｳ」で取得される場合、上の数式で「ヤマダタロウ」を得られます。読み仮名を一覧表示する書類で重宝します。</p>



<p class="wp-block-paragraph">社員名簿や顧客名簿で「漢字氏名」「ふりがな（全角カナ）」の2列構成にしたいとき、この組み合わせ1つで完結します。手入力で全角カナを打ち直す手間が消えます。</p>



<h3 class="wp-block-heading"><span id="toc19">パターン4: TRIM関数と組み合わせて前処理する</span></h3>



<p class="wp-block-paragraph">入力データに余分なスペースが混じっていることはよくあります。TRIM関数（前後の空白を削除する関数）と組み合わせると、クレンジングと全角化を同時に行えます。</p>



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



<p class="wp-block-paragraph">入力フォームから取り込んだデータの整形に便利な組み合わせです。</p>



<p class="wp-block-paragraph">ただしTRIM関数は半角スペースしか削除できません。全角スペースを除去したい場合は、SUBSTITUTE関数を挟んでください。</p>



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



<p class="wp-block-paragraph">この数式なら、半角・全角どちらのスペースも除去したうえで全角化できます。</p>



<h3 class="wp-block-heading"><span id="toc20">パターン5: ASC→DBCSで強制的に全角化（混在データの統一）</span></h3>



<p class="wp-block-paragraph">既存データに半角・全角が混在しているとき、ASC関数（全角→半角）でいったん半角に揃えてからDBCS関数で全角に変換すると、表記揺れを完全に解消できます。</p>



<pre class="wp-block-code"><code>=DBCS(ASC(A2))</code></pre>



<p class="wp-block-paragraph">A2に「Ｅｘｃｅｌ2024」（全角と半角が混在）と入っている場合、まずASCで「Excel2024」（すべて半角）になります。次にDBCSで「Ｅｘｃｅｌ２０２４」（すべて全角）になります。クレンジングの2段階処理として覚えておくと役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc21">パターン6: 帳票・PDF出力用の英数字レイアウト統一</span></h3>



<p class="wp-block-paragraph">PDF出力やプリンタ印刷でレイアウトを綺麗に見せたい場合、英数字を全角に統一すると等幅で揃います。</p>



<pre class="wp-block-code"><code>=DBCS(A2&amp;&quot; &quot;&amp;B2)</code></pre>



<p class="wp-block-paragraph">A2に「Order」、B2に「2024-001」と入っているとき、文字列連結の半角スペースも一緒に全角化され、結果は「Ｏｒｄｅｒ　２０２４－００１」になります。明朝体やゴシック体で印刷したときに、文字幅が一定になって表組みが安定します。</p>



<h3 class="wp-block-heading"><span id="toc22">パターン7: データ移行・他システム連携での全角化要件対応</span></h3>



<p class="wp-block-paragraph">行政システムや古い基幹システムでは、データ取り込み時に「氏名カナは全角必須」「住所は全角統一」といった要件が定められていることがあります。CSVを書き出す前の整形にDBCS関数を使えば、手作業のチェック工数を大幅に削減できます。</p>



<pre class="wp-block-code"><code>=DBCS(A2)&amp;&quot;,&quot;&amp;DBCS(B2)&amp;&quot;,&quot;&amp;DBCS(C2)</code></pre>



<p class="wp-block-paragraph">A列に氏名カナ、B列に住所、C列に電話番号が入っている場合、3列をまとめて全角化したCSV行を作成できます。出力後にメモ帳で保存すれば、そのまま取り込み用ファイルとして使えます。</p>



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



<p class="wp-block-paragraph">DBCS関数を使っていると、いくつかのエラーや「期待と違う動き」に遭遇することがあります。代表的なケースの対処法を整理しておきます。</p>



<h3 class="wp-block-heading"><span id="toc24">#NAME?エラー</span></h3>



<p class="wp-block-paragraph"><code>=DBCS()</code> と入力して <code>#NAME?</code> エラーが返る場合、Excelのバージョンを確認してください。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: JIS関数（<code>=JIS()</code>）に置き換えましょう。動作は同じなので結果に影響はありません。バージョン確認は「ファイル」→「アカウント」から行えます。</p>



<h3 class="wp-block-heading"><span id="toc25">#VALUE!エラー</span></h3>



<p class="wp-block-paragraph">引数のセルにエラー値（<code>#N/A</code>など）が入っていると、<code>#VALUE!</code>エラーが伝播することがあります。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: IFERROR関数（エラーを別の値に置き換える関数）でラップしておくと安全です。</p>



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



<p class="wp-block-paragraph">元データがエラーでも、空文字列を返してくれます。</p>



<h3 class="wp-block-heading"><span id="toc26">期待した変換が起きない</span></h3>



<p class="wp-block-paragraph">「DBCS関数を使ったのに変わらない」と感じたら、入力データを確認してみてください。</p>



<ul class="wp-block-list"><li>既に全角になっている文字 → 変換対象外</li><li>ひらがな・漢字 → そもそも半角が存在しないため変換対象外</li><li>数式の結果が文字列ではない → 数値型のまま渡されている可能性</li><li>半角・全角が混在している → DBCS単独では中途半端になる</li></ul>



<p class="wp-block-paragraph"><strong>対処法</strong>: TEXT関数で文字列化してから渡す、もしくはASC→DBCSの2段階処理（パターン5）を試してください。</p>



<h3 class="wp-block-heading"><span id="toc27">変換後の文字数が変わってしまう</span></h3>



<p class="wp-block-paragraph">半角カタカナの濁音・半濁音（ｶﾞ・ﾊﾟ等）を含むデータでは、DBCS変換後に文字数が減ります。LEN関数の結果が期待値と違うときは、この仕様を疑いましょう。</p>



<pre class="wp-block-code"><code>=LEN(&quot;ﾊﾟｿｺﾝ&quot;)     → 5（半角・濁点含む）
=LEN(DBCS(&quot;ﾊﾟｿｺﾝ&quot;)) → 4（パソコン）</code></pre>



<p class="wp-block-paragraph">帳票の文字数チェックでこの仕様が問題になる場合は、変換後の文字列で文字数を再計測する設計に変えてください。LEN関数の挙動は<a href="https://mashukabu.com/excel-function-howto-use-len/">ExcelのLEN関数の使い方</a>で詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc28">ASC・JIS・DBCS関数の完全比較表</span></h2>



<p class="wp-block-paragraph">ExcelにはDBCS関数のほか、ASC関数とJIS関数があります。3関数の役割を比較表で整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>機能</th><th>変換方向</th><th>別名関係</th><th>主な用途</th></tr></thead><tbody><tr><td>DBCS</td><td>半角→全角</td><td>SBCS→DBCS</td><td>JISの別名</td><td>帳票統一・印刷用・国際版テンプレート</td></tr><tr><td>JIS</td><td>半角→全角</td><td>SBCS→DBCS</td><td>DBCSの別名</td><td>日本語環境での標準・社内共有</td></tr><tr><td>ASC</td><td>全角→半角</td><td>DBCS→SBCS</td><td>別名なし</td><td>データクレンジング・コード統一</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc29">双方向の使い分けパターン</span></h3>



<ul class="wp-block-list"><li><strong>半角に統一したい</strong> → ASC関数を使う</li><li><strong>全角に統一したい</strong> → DBCS関数（またはJIS関数）を使う</li><li><strong>混在を完全に解消したい</strong> → ASC関数で半角化 → DBCS関数で全角化（2段階クレンジング）</li></ul>



<p class="wp-block-paragraph">ASC関数は<a href="https://mashukabu.com/excel-function-howto-use-asc/">ExcelのASC関数の使い方</a>で詳しく解説しています。半角・全角変換をマスターしたい方はぜひあわせて読んでみてください。</p>



<p class="wp-block-paragraph">JIS関数の使い方は<a href="https://mashukabu.com/excel-function-howto-use-jis/">ExcelのJIS関数の使い方</a>に詳しくまとめています。DBCS関数とJIS関数は別名関係なので、片方をマスターすればもう片方も使いこなせます。</p>



<h2 class="wp-block-heading"><span id="toc30">他環境・他ツールでの代替手段</span></h2>



<p class="wp-block-paragraph">Excelの外でも半角→全角変換が必要になることがあります。環境別の代替手段を整理しておきます。</p>



<h3 class="wp-block-heading"><span id="toc31">Googleスプレッドシート（GAS）</span></h3>



<p class="wp-block-paragraph">スプレッドシートにはDBCS関数がないため、Google Apps Scriptでカスタム関数を作るのが一般的です。</p>



<pre class="wp-block-code"><code>function DBCS(text) {
  return text.replace(/[A-Za-z0-9!-~]/g, function(s) {
    return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);
  });
}</code></pre>



<p class="wp-block-paragraph">スクリプトエディタに貼り付けて保存すると、<code>=DBCS(A2)</code> のような形でセルから呼び出せます。半角カタカナは別途マッピングが必要なので、商用利用では既存のライブラリ（<code>zenhan</code> 等）を検討してください。</p>



<h3 class="wp-block-heading"><span id="toc32">VBA（Excel マクロ）</span></h3>



<p class="wp-block-paragraph">VBAでは <code>StrConv</code> 関数を使うのが定番です。DBCS関数と同等の変換ができます。</p>



<pre class="wp-block-code"><code>Dim s As String
s = StrConv(&quot;Excel&quot;, vbWide)  '結果: Ｅｘｃｅｌ</code></pre>



<p class="wp-block-paragraph"><code>vbWide</code> の代わりに <code>vbNarrow</code> を指定すれば、ASC関数と同じ全角→半角変換になります。一括処理が必要な場合はVBAのほうが処理速度に優れます。</p>



<h3 class="wp-block-heading"><span id="toc33">Python（pandas データ整形）</span></h3>



<p class="wp-block-paragraph">Pythonでデータ整形する場合は、<code>mojimoji</code> ライブラリが定番です。</p>



<pre class="wp-block-code"><code>import mojimoji
result = mojimoji.han_to_zen(&quot;Excel&quot;)  # 結果: Ｅｘｃｅｌ</code></pre>



<p class="wp-block-paragraph"><code>unicodedata.normalize("NFKC", text)</code> でも変換できますが、こちらは全角→半角方向の正規化になる点に注意してください。</p>



<h2 class="wp-block-heading"><span id="toc34">まとめ：DBCS関数とJIS関数を理解して半角全角変換を使い分けよう</span></h2>



<p class="wp-block-paragraph">ExcelのDBCS関数について、基本から実務活用まで解説しました。ポイントをおさらいします。</p>



<ul class="wp-block-list"><li>DBCS関数は半角文字を全角に変換するExcel関数</li><li>DBCSは「Double-Byte Character Set」の略で、JIS関数の別名（エイリアス）</li><li>動作はJIS関数と完全に同じで、結果も処理速度も変わらない</li><li>Excel 2013以降 / Microsoft 365で使える（Googleスプレッドシートは非対応）</li><li>構文は <code>=DBCS(文字列)</code> で引数は1つ</li><li>ひらがな・漢字・全角文字は変換されない</li><li>半角カナの濁音・半濁音は変換後に1文字に統合される（文字数が減る）</li><li>ASC関数（全角→半角）と組み合わせると、表記揺れを完全に解消できる</li><li>日本語環境ではJIS関数、国際環境ではDBCS関数を使うのが目安</li><li>スプレッドシートではGAS、VBAではStrConv、Pythonではmojimojiが代替手段</li></ul>



<p class="wp-block-paragraph">「DBCS関数とJIS関数は同じ」と覚えておけば、どちらの記事や資料に出てきても困りません。半角・全角の混在データに悩んだら、ぜひDBCS関数を活用してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-dbcs-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのUNICODE関数の使い方｜Unicode値取得</title>
		<link>https://mashukabu.com/spreadsheet-unicode-function/</link>
					<comments>https://mashukabu.com/spreadsheet-unicode-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:10:48 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[UNICODE関数]]></category>
		<category><![CDATA[スプレッドシート関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[全角スペース検出]]></category>
		<category><![CDATA[文字コード]]></category>
		<category><![CDATA[文字種判定]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6059</guid>

					<description><![CDATA[スプレッドシートのUNICODE関数の構文・使い方を実例付きで解説。全角スペース検出（コード12288）・絵文字混入チェック・外部データの文字種判定など実務トラブル別の活用パターンも紹介。CODE関数との違いも比較表で確認できます。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「このセルに混ざってる謎の文字、いったい何者？」——Googleスプレッドシートで外部データを取り込んだ後、見た目は同じなのに比較がうまくいかない、そんな経験はありませんか。</p>



<p class="wp-block-paragraph">原因の多くは、全角スペースや特殊文字の混入です。目視では区別できない文字を確実に見抜くには、文字そのものの「正体（コード番号）」を調べる必要があります。</p>



<p class="wp-block-paragraph">そこで活躍するのが、スプレッドシートの<strong>UNICODE関数</strong>です。この記事では、UNICODE関数の基本構文から、全角スペース検出・絵文字チェック・文字種判定といった実務トラブルへの応用まで、わかりやすく解説します。</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">UNICODE関数とは</a><ol><li><a href="#toc2" tabindex="0">基本構文と引数</a></li><li><a href="#toc3" tabindex="0">戻り値の意味（Unicode値＝コードポイント）</a></li></ol></li><li><a href="#toc4" tabindex="0">UNICODE関数の基本的な使い方</a><ol><li><a href="#toc5" tabindex="0">ひらがな・漢字のUnicode値を調べる</a></li><li><a href="#toc6" tabindex="0">英数字・記号のUnicode値</a></li></ol></li><li><a href="#toc7" tabindex="0">なぜCODE関数でなくUNICODE関数を使うべきか</a><ol><li><a href="#toc8" tabindex="0">CODE関数との違いを比較表で確認</a></li><li><a href="#toc9" tabindex="0">スプレッドシートでUNICODE関数が安全な理由</a></li></ol></li><li><a href="#toc10" tabindex="0">実務トラブル別 活用パターン3選</a><ol><li><a href="#toc11" tabindex="0">①全角スペースの混入を検出する（UNICODE=12288）</a></li><li><a href="#toc12" tabindex="0">②絵文字・特殊文字の混入チェック（コードポイント範囲判定）</a></li><li><a href="#toc13" tabindex="0">③外部データの文字種判定（英字/数字/記号/日本語をIF分岐で仕分け）</a></li></ol></li><li><a href="#toc14" tabindex="0">UNICHAR関数との組み合わせ</a><ol><li><a href="#toc15" tabindex="0">文字→コード→文字の変換サイクル</a></li></ol></li><li><a href="#toc16" tabindex="0">ExcelのUNICODE関数との違い</a><ol><li><a href="#toc17" tabindex="0">構文は共通・スプレッドシートでも同じように動く</a></li></ol></li><li><a href="#toc18" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">スプレッドシートのUNICODE関数は、指定した文字列の先頭1文字に対応する<strong>Unicodeコードポイント（10進数の整数）</strong>を返す関数です。Unicodeとは、世界中の文字に固有の番号を割り当てた国際標準規格のことです。</p>



<p class="wp-block-paragraph">たとえば「A」という文字には65、全角スペースには12288という番号が割り当てられています。この番号を調べることで、見た目では区別できない文字の正体を突き止められます。</p>



<p class="wp-block-paragraph">ExcelとGoogleスプレッドシートで構文・仕様は完全に共通しており、どちらの環境でも同じ結果が返ります。データクレンジングや文字化け調査に欠かせない実用的な関数です。</p>



<h3 class="wp-block-heading"><span id="toc2">基本構文と引数</span></h3>



<p class="wp-block-paragraph">UNICODE関数の構文はシンプルです。</p>



<pre class="wp-block-code"><code>=UNICODE(テキスト)</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>Unicodeコードポイントを取得したい文字列。先頭1文字のみが評価される。</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">文字列をダブルクォートで囲んで直接渡すか、セル参照で渡します。</p>



<pre class="wp-block-code"><code>=UNICODE(&quot;A&quot;)        → 65
=UNICODE(A1)         → A1セルの先頭文字のコードポイント
=UNICODE(&quot;あいう&quot;)    → 12354（先頭の「あ」のみ評価）</code></pre>



<p class="wp-block-paragraph">数値を直接渡しても動作します。<code>=UNICODE(123)</code> は文字列「123」として解析され、先頭の「1」のコードポイントである49が返ります。</p>



<h3 class="wp-block-heading"><span id="toc3">戻り値の意味（Unicode値＝コードポイント）</span></h3>



<p class="wp-block-paragraph">戻り値は0〜1114111（U+0000〜U+10FFFF）の範囲の整数です。Unicodeで定義されている全範囲をカバーしているため、絵文字のような新しい文字も扱えます。</p>



<p class="wp-block-paragraph">エラーが返るケースもあります。空文字列（<code>""</code>）を渡すと <code>#VALUE!</code> エラーになります。無効なサロゲートペアや、文字列として解釈できないデータ型を渡した場合も同様です。</p>



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



<p class="wp-block-paragraph">実際にスプレッドシートで使ってみましょう。セルに数式を入力するだけで、コードポイントが返ります。</p>



<h3 class="wp-block-heading"><span id="toc5">ひらがな・漢字のUnicode値を調べる</span></h3>



<p class="wp-block-paragraph">日本語の文字を調べると、文字種ごとに番号がきれいに連続していることがわかります。</p>



<pre class="wp-block-code"><code>=UNICODE(&quot;あ&quot;)    → 12354
=UNICODE(&quot;ア&quot;)    → 12450
=UNICODE(&quot;漢&quot;)    → 28450
=UNICODE(&quot;①&quot;)    → 9312
=UNICODE(&quot;😊&quot;)    → 128522</code></pre>



<p class="wp-block-paragraph">ひらがなは12354番（U+3042）から、カタカナは12450番（U+30A2）から始まります。この範囲を覚えておくと、後述の文字種判定で役立ちます。</p>



<p class="wp-block-paragraph">絵文字（U+10000以上の補助文字）も正しくコードポイントを返します。SNSデータや自由入力フォームのクレンジングにも使えます。</p>



<h3 class="wp-block-heading"><span id="toc6">英数字・記号のUnicode値</span></h3>



<p class="wp-block-paragraph">英数字や半角記号は、ASCIIと呼ばれる古くからある体系で定義されており、コードポイントが小さい範囲（0〜127）に収まっています。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字</th><th>UNICODE関数の戻り値</th></tr></thead><tbody><tr><td>A</td><td>65</td></tr><tr><td>Z</td><td>90</td></tr><tr><td>a</td><td>97</td></tr><tr><td>z</td><td>122</td></tr><tr><td>0</td><td>48</td></tr><tr><td>9</td><td>57</td></tr><tr><td>半角スペース</td><td>32</td></tr><tr><td>全角スペース</td><td>12288</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">注目すべき点は、半角スペースが32なのに対し、全角スペースが12288という大きな値を取ることです。この差を利用すれば、見た目では区別できない両者を確実に見分けられます。</p>



<h2 class="wp-block-heading"><span id="toc7">なぜCODE関数でなくUNICODE関数を使うべきか</span></h2>



<p class="wp-block-paragraph">「CODE関数でも同じことができるのでは？」と思うかもしれません。ASCII範囲（英数字や基本記号）では両者の戻り値は同じです。</p>



<p class="wp-block-paragraph">しかし日本語や絵文字を扱う場合、選択を誤るとデータの解析結果がブレる可能性があります。スプレッドシートでは<strong>UNICODE関数を使う方が安全</strong>です。</p>



<h3 class="wp-block-heading"><span id="toc8">CODE関数との違いを比較表で確認</span></h3>



<p class="wp-block-paragraph">CODE関数（先頭文字の数値コードを返す関数）とUNICODE関数の違いを整理します。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>UNICODE関数</th><th>CODE関数</th></tr></thead><tbody><tr><td>文字コード体系</td><td>Unicode固定</td><td>ANSI／Mac文字セット依存</td></tr><tr><td>対応範囲</td><td>U+0000〜U+10FFFF（全範囲）</td><td>0〜255</td></tr><tr><td>環境依存</td><td>なし（どこでも同じ結果）</td><td>あり（OSやロケールで変動の可能性）</td></tr><tr><td>ASCII範囲（A=65等）</td><td>同じ</td><td>同じ</td></tr><tr><td>絵文字対応</td><td>対応</td><td>非対応</td></tr><tr><td>登場時期</td><td>Excel 2013以降</td><td>古くから存在</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ASCII範囲では両者とも同じ結果（A=65、0=48）になりますが、日本語や絵文字を含む実務データではUNICODE関数の方が予測可能性が高いです。</p>



<h3 class="wp-block-heading"><span id="toc9">スプレッドシートでUNICODE関数が安全な理由</span></h3>



<p class="wp-block-paragraph">CODE関数は歴史的にOSの文字セット（WindowsのシフトJISやMacのMacRomanなど）に依存する仕様でした。そのため日本語の戻り値が環境によって変わる可能性があります。</p>



<p class="wp-block-paragraph">一方、UNICODE関数はUnicode規格に固定されているため、どの環境で実行しても同じコードポイントが返ります。チームで共有するスプレッドシートや、別環境とのデータ連携を想定するなら、UNICODE関数を選んでおく方が確実です。</p>



<p class="wp-block-paragraph">なお、Googleスプレッドシートの公式ヘルプではCODE関数も「先頭文字のUnicode数値を返す」と記載されており、スプレッドシート上ではCODE関数がUnicode対応している場合もあります。とはいえ、Excelとの互換性も考慮すると、最初からUNICODE関数で統一しておくのが無難です。</p>



<h2 class="wp-block-heading"><span id="toc10">実務トラブル別 活用パターン3選</span></h2>



<p class="wp-block-paragraph">ここからが本記事の本題です。UNICODE関数を実務トラブルにどう活かすか、よくある3シナリオを数式付きで紹介します。</p>



<h3 class="wp-block-heading"><span id="toc11">①全角スペースの混入を検出する（UNICODE=12288）</span></h3>



<p class="wp-block-paragraph">外部システムからCSVを取り込んだとき、ユーザー名や商品コードに全角スペースが紛れ込んでいて、VLOOKUPが効かない——よくあるトラブルです。</p>



<p class="wp-block-paragraph">A列の文字列の先頭が全角スペースかどうかを判定する数式はこちらです。</p>



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



<p class="wp-block-paragraph">LEFT関数（文字列の左端から指定した文字数を取り出す関数）で先頭1文字を抜き出し、UNICODE関数で12288（全角スペースのU+3000）と一致するかをチェックしています。</p>



<p class="wp-block-paragraph">文字列のどこかに全角スペースが含まれているかを判定したい場合は、FIND関数とCHAR関数を組み合わせる方法もあります。</p>



<pre class="wp-block-code"><code>=ISNUMBER(FIND(CHAR(12288),A1))</code></pre>



<p class="wp-block-paragraph">CHAR関数（コードポイントから文字を生成する関数）で全角スペースを生成し、FINDで検索する形です。状況に応じて使い分けてください。</p>



<h3 class="wp-block-heading"><span id="toc12">②絵文字・特殊文字の混入チェック（コードポイント範囲判定）</span></h3>



<p class="wp-block-paragraph">SNSコメントや問い合わせフォームのデータには、絵文字や特殊文字が混入することがあります。基本多言語面（BMP）を超えるU+10000以上の文字を検出するには、しきい値65535で範囲判定するのが手軽です。</p>



<pre class="wp-block-code"><code>=UNICODE(LEFT(A1,1))&gt;65535</code></pre>



<p class="wp-block-paragraph">TRUEが返れば、先頭文字が絵文字などBMP外の文字だと判断できます。ファイル出力時のエンコードトラブルや、レガシーシステムへの登録エラーを未然に防げます。</p>



<p class="wp-block-paragraph">複数文字をチェックしたい場合は、ARRAYFORMULAと組み合わせると一気に処理できます。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IF(LEN(A1:A10)=0,&quot;&quot;,IF(UNICODE(LEFT(A1:A10,1))&gt;65535,&quot;絵文字あり&quot;,&quot;&quot;)))</code></pre>



<h3 class="wp-block-heading"><span id="toc13">③外部データの文字種判定（英字/数字/記号/日本語をIF分岐で仕分け）</span></h3>



<p class="wp-block-paragraph">「このセルの先頭は英字か、数字か、ひらがなか？」を自動仕分けしたいケースもよくあります。Unicodeのコードポイントは文字種ごとに連続範囲で定義されているため、AND関数で範囲判定するだけで実現できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字種</th><th>判定式</th></tr></thead><tbody><tr><td>英大文字</td><td><code>=AND(UNICODE(LEFT(A1,1))>=65, UNICODE(LEFT(A1,1))<=90)</code></td></tr><tr><td>英小文字</td><td><code>=AND(UNICODE(LEFT(A1,1))>=97, UNICODE(LEFT(A1,1))<=122)</code></td></tr><tr><td>数字</td><td><code>=AND(UNICODE(LEFT(A1,1))>=48, UNICODE(LEFT(A1,1))<=57)</code></td></tr><tr><td>ひらがな</td><td><code>=AND(UNICODE(LEFT(A1,1))>=12354, UNICODE(LEFT(A1,1))<=12435)</code></td></tr><tr><td>カタカナ</td><td><code>=AND(UNICODE(LEFT(A1,1))>=12449, UNICODE(LEFT(A1,1))<=12534)</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これらをIFS関数でまとめれば、1セルで文字種ラベルを返す数式になります。</p>



<pre class="wp-block-code"><code>=IFS(
  AND(UNICODE(LEFT(A1,1))&gt;=48,UNICODE(LEFT(A1,1))&lt;=57),&quot;数字&quot;,
  AND(UNICODE(LEFT(A1,1))&gt;=65,UNICODE(LEFT(A1,1))&lt;=90),&quot;英大文字&quot;,
  AND(UNICODE(LEFT(A1,1))&gt;=97,UNICODE(LEFT(A1,1))&lt;=122),&quot;英小文字&quot;,
  AND(UNICODE(LEFT(A1,1))&gt;=12354,UNICODE(LEFT(A1,1))&lt;=12435),&quot;ひらがな&quot;,
  AND(UNICODE(LEFT(A1,1))&gt;=12449,UNICODE(LEFT(A1,1))&lt;=12534),&quot;カタカナ&quot;,
  TRUE,&quot;その他&quot;
)</code></pre>



<p class="wp-block-paragraph">外部データの一次仕分けや、入力規則チェックの補助として使えます。</p>



<h2 class="wp-block-heading"><span id="toc14">UNICHAR関数との組み合わせ</span></h2>



<p class="wp-block-paragraph">UNICODE関数の逆方向の処理を担うのが<strong>UNICHAR関数</strong>です。コードポイントを受け取って、対応する1文字を返します。</p>



<h3 class="wp-block-heading"><span id="toc15">文字→コード→文字の変換サイクル</span></h3>



<p class="wp-block-paragraph">両者の関係を式で表すとこうなります。</p>



<pre class="wp-block-code"><code>=UNICODE(&quot;A&quot;)     → 65
=UNICHAR(65)      → &quot;A&quot;
=UNICHAR(UNICODE(&quot;あ&quot;))   → &quot;あ&quot;</code></pre>



<p class="wp-block-paragraph">完全な逆変換の関係です。これを利用すれば、コードポイント表の自動生成もできます。</p>



<pre class="wp-block-code"><code>A列にコード番号を入力（65, 66, 67...）
B列に =UNICHAR(A1) を入力</code></pre>



<p class="wp-block-paragraph">これだけで、A列の番号に対応する文字一覧表が完成します。文字コード調査や教材作成で役立つテクニックです。</p>



<p class="wp-block-paragraph">なお、Googleスプレッドシートの公式ヘルプでは関連関数として「CHAR」が案内されています。CHAR関数（数値から文字を生成する関数）も同様の用途で使えますが、Unicode全範囲を扱うならUNICHAR関数の方が安全です。</p>



<h2 class="wp-block-heading"><span id="toc16">ExcelのUNICODE関数との違い</span></h2>



<p class="wp-block-paragraph">結論から言うと、構文も挙動もほぼ同じです。</p>



<h3 class="wp-block-heading"><span id="toc17">構文は共通・スプレッドシートでも同じように動く</span></h3>



<p class="wp-block-paragraph">ExcelのUNICODE関数（Excel 2013以降で追加）とスプレッドシートのUNICODE関数は、構文・引数・戻り値の仕様が共通です。Excelで作成したシートをスプレッドシートにインポートしても、UNICODE関数を含む数式はそのまま動作します。</p>



<pre class="wp-block-code"><code>=UNICODE(&quot;A&quot;)    → 65（Excel・スプレッドシート共通）
=UNICODE(&quot;あ&quot;)   → 12354（Excel・スプレッドシート共通）</code></pre>



<p class="wp-block-paragraph">Excel版の詳細な挙動については、当サイトの<a href="https://mashukabu.com/excel-function-howto-use-unicode/">ExcelのUNICODE関数の使い方</a>記事もご覧ください。逆変換のUNICHAR関数や、関連するCODE関数の解説もあります。</p>



<p class="wp-block-paragraph">スプレッドシート版の関連記事として、<a href="https://mashukabu.com/spreadsheet-code-function/">スプレッドシートのCODE関数の使い方</a>、<a href="https://mashukabu.com/spreadsheet-char-function/">スプレッドシートのCHAR関数の使い方</a>も合わせて読むと、文字コード関連の操作が一通り押さえられます。</p>



<h2 class="wp-block-heading"><span id="toc18">よくある質問（FAQ）</span></h2>



<p class="wp-block-paragraph">UNICODE関数を使う上でよく出る疑問をまとめました。</p>



<p class="wp-block-paragraph"><strong>Q. UNICODE関数で文字列の2文字目以降のコードを取得したいのですが？</strong></p>



<p class="wp-block-paragraph">UNICODE関数は先頭1文字しか評価しません。2文字目以降を取得したい場合は、MID関数（文字列の途中から指定文字数を取り出す関数）と組み合わせます。</p>



<pre class="wp-block-code"><code>=UNICODE(MID(A1,2,1))    → 2文字目のコードポイント
=UNICODE(MID(A1,3,1))    → 3文字目のコードポイント</code></pre>



<p class="wp-block-paragraph"><strong>Q. 空白セルや空文字列を渡すとエラーになります。</strong></p>



<p class="wp-block-paragraph"><code>""</code> や空セルを渡すと <code>#VALUE!</code> エラーが返ります。IFERROR関数で囲むか、LEN関数で事前にチェックするのがおすすめです。</p>



<pre class="wp-block-code"><code>=IFERROR(UNICODE(LEFT(A1,1)),&quot;&quot;)
=IF(LEN(A1)=0,&quot;&quot;,UNICODE(LEFT(A1,1)))</code></pre>



<p class="wp-block-paragraph"><strong>Q. 絵文字のコードポイントは環境によって変わりますか？</strong></p>



<p class="wp-block-paragraph">Googleスプレッドシート公式ヘルプの使用例では、絵文字（U+10000以上）も正しくコードポイントを返すと記載されています。ただし絵文字は比較的新しい文字種のため、バージョンや環境によって挙動差が出る可能性はゼロではありません。本番運用前に、実環境で必ず動作確認を行ってください。</p>



<p class="wp-block-paragraph"><strong>Q. UNICODE関数とCODE関数、結局どちらを使えばよいですか？</strong></p>



<p class="wp-block-paragraph">迷ったらUNICODE関数を選んでください。環境非依存で、絵文字を含むあらゆる文字に対応します。ExcelとGoogleスプレッドシートを行き来する場合も挙動が安定しています。</p>



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



<p class="wp-block-paragraph">スプレッドシートのUNICODE関数は、文字のUnicodeコードポイントを10進数で返す、シンプルかつ強力な関数です。</p>



<p class="wp-block-paragraph">実務ポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は <code>=UNICODE(テキスト)</code>。先頭1文字のみ評価される</li><li>全角スペース検出は <code>=UNICODE(LEFT(A1,1))=12288</code> で一発</li><li>絵文字混入チェックは <code>>65535</code> の範囲判定が手軽</li><li>文字種判定はAND関数による範囲判定でIF分岐できる</li><li>ExcelとGoogleスプレッドシートで構文共通、環境非依存で安全</li><li>逆変換のUNICHAR関数とセットで覚えると応用範囲が広がる</li></ul>



<p class="wp-block-paragraph">データクレンジングや文字化け調査の引き出しとして、ぜひUNICODE関数を活用してください。次に「謎の文字」と出会ったときは、もう怖くないはずです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-unicode-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのREGEXEXTRACT関数の使い方｜正規表現で文字列を抽出する</title>
		<link>https://mashukabu.com/excel-function-howto-use-regexextract/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-regexextract/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:11:05 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REGEXEXTRACT関数]]></category>
		<category><![CDATA[REGEXTEST]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[文字列抽出]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5896</guid>

					<description><![CDATA[ExcelのREGEXEXTRACT関数の使い方を初心者向けに解説。構文・引数（テキスト・パターン・return_mode・大文字小文字の区別）の基本から、メールアドレス・電話番号・URLドメイン・日付分解などの実務例を数式付きで紹介。キャプチャグループの使い方、#VALUE!や#N/Aエラーの対処、REGEXTEST・REGEXREPLACEとの使い分けもまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「長い文字列の中からメールアドレスだけ取り出したい」「URLからドメイン部分だけを抜き出したい」。データ整理をしていると、こんな場面に出くわしますよね。</p>



<p class="wp-block-paragraph">これまでのExcelでは、LEFT・RIGHT・MID・FINDを組み合わせた長い数式を書くしかありませんでした。位置がズレるだけで壊れてしまう、あの面倒な数式ですね。</p>



<p class="wp-block-paragraph">そんなときに便利なのがExcelのREGEXEXTRACT関数です。正規表現を使って、狙った文字列を一発で抜き出せますよ。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREGEXEXTRACT関数の使い方を基本から実務例まで解説します。キャプチャグループの使い方や姉妹関数との使い分けもまとめましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのREGEXEXTRACT関数とは？</a><ol><li><a href="#toc2" tabindex="0">どんなときに使う関数か</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li></ol></li><li><a href="#toc4" tabindex="0">REGEXEXTRACT関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">第1引数：テキスト</a></li><li><a href="#toc7" tabindex="0">第2引数：正規表現パターン</a></li><li><a href="#toc8" tabindex="0">第3引数：戻り値モード（return_mode）</a></li><li><a href="#toc9" tabindex="0">第4引数：大文字小文字の区別</a></li></ol></li><li><a href="#toc10" tabindex="0">Excel REGEXEXTRACT関数の基本的な使い方</a><ol><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">IFERRORでエラーを隠す</a></li></ol></li><li><a href="#toc15" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc16" tabindex="0">電話番号の市外局番だけを抽出する</a></li><li><a href="#toc17" tabindex="0">URLからドメイン部分を取得する</a></li><li><a href="#toc18" tabindex="0">日付文字列から年・月・日を分離する</a></li><li><a href="#toc19" tabindex="0">本文中のハッシュタグをすべて抽出する</a></li><li><a href="#toc20" tabindex="0">メールアドレスからユーザー名とドメインを分ける</a></li></ol></li><li><a href="#toc21" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">#N/A エラー</a></li><li><a href="#toc23" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc24" tabindex="0">#NAME? エラー</a></li><li><a href="#toc25" tabindex="0">エラー一覧表</a></li></ol></li><li><a href="#toc26" tabindex="0">列全体に一括適用する方法（MAP関数との組み合わせ）</a><ol><li><a href="#toc27" tabindex="0">MAP + LAMBDAの書き方パターン</a></li></ol></li><li><a href="#toc28" tabindex="0">REGEXTEST と組み合わせたフィルタリングパターン</a><ol><li><a href="#toc29" tabindex="0">メールアドレスが含まれる行だけを絞り込む</a></li><li><a href="#toc30" tabindex="0">絞り込んだ上で抽出する2段階パターン</a></li></ol></li><li><a href="#toc31" tabindex="0">REGEXREPLACE との使い分けと連携</a><ol><li><a href="#toc32" tabindex="0">取り出しにくいなら「削除」で代用する</a></li><li><a href="#toc33" tabindex="0">よく使う正規表現パターン早見表</a></li></ol></li><li><a href="#toc34" tabindex="0">REGEXTEST・REGEXREPLACEとの使い分け</a></li><li><a href="#toc35" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">REGEXEXTRACT関数は、<strong>文字列の中から正規表現パターンに一致する部分を抜き出すExcelの関数</strong>です。読み方は「レジェックスエクストラクト」で、メールアドレスやURL、日付など狙った形式の文字列をピンポイントで取り出せます。</p>



<p class="wp-block-paragraph">2024年にMicrosoft 365へ追加された新しい関数で、REGEXTEST・REGEXREPLACEとともに「正規表現3関数」と呼ばれています。姉妹関数のREGEXTESTがパターンの「判定」を担うのに対し、REGEXEXTRACTは「抽出」を担当します。</p>



<p class="wp-block-paragraph">LEFT・MID・FINDを組み合わせた長い数式に悩まされてきた方には、まさに救世主のような関数ですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">どんなときに使う関数か</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数は次のようなシーンで活躍します。</p>



<ul class="wp-block-list"><li>問い合わせ本文からメールアドレスだけを取り出したいとき</li><li>電話番号の市外局番だけを抜き出したいとき</li><li>URLからドメイン部分を取得したいとき</li><li>日付文字列を年・月・日に分解したいとき</li><li>商品コードから特定の桁だけを抽出したいとき</li></ul>



<p class="wp-block-paragraph">LEFT・RIGHT・MIDの入れ子から解放されて、数式がすっきりしますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">REGEXEXTRACT関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021などの永続ライセンス版では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">お使いのバージョンが対応しているか、事前に確認しておきましょう。バージョンが古いと <code>#NAME?</code> エラーになってしまいます。</p>



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



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



<pre class="wp-block-code"><code>=REGEXEXTRACT(テキスト, 正規表現パターン, [戻り値モード], [大文字小文字の区別])</code></pre>



<p class="wp-block-paragraph">第3引数と第4引数は省略可能です。まずは第1・第2引数だけで十分使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">第1引数：テキスト</span></h3>



<p class="wp-block-paragraph">抽出元の文字列またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;お問い合わせ: taro@example.com まで&quot;, &quot;[w.+-]+@[w.-]+&quot;)
=REGEXEXTRACT(A2, &quot;d+&quot;)</code></pre>



<p class="wp-block-paragraph">実務ではセル参照を使うのが一般的です。セルが数値型の場合はそのままでは使えないので、TEXT関数（数値を指定した書式の文字列に変換する関数）で文字列化してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">第2引数：正規表現パターン</span></h3>



<p class="wp-block-paragraph">抜き出したい形式を正規表現でダブルクォーテーションで囲んで指定します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;d{3}-d{4}&quot;)</code></pre>



<p class="wp-block-paragraph">上の例は「数字3桁＋ハイフン＋数字4桁」、つまり郵便番号の形式を取り出す数式です。正規表現の記号は、姉妹記事の<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>で早見表にまとめていますので、あわせて確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc8">第3引数：戻り値モード（return_mode）</span></h3>



<p class="wp-block-paragraph">どのように抽出するかを数値で指定します。省略時は0です。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：<strong>最初に一致した1つ</strong>を返す</li><li><strong>1</strong>：<strong>すべての一致</strong>を配列で返す（スピル）</li><li><strong>2</strong>：<strong>キャプチャグループ</strong>（括弧で囲んだ部分）を配列で返す</li></ul>



<p class="wp-block-paragraph">この第3引数こそがREGEXEXTRACT関数の真骨頂です。後ほど具体例で詳しく見ていきます。</p>



<h3 class="wp-block-heading"><span id="toc9">第4引数：大文字小文字の区別</span></h3>



<p class="wp-block-paragraph">大文字と小文字を区別するかを数値で指定します。省略すると0（区別する）です。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：大文字と小文字を<strong>区別する</strong></li><li><strong>1</strong>：大文字と小文字を<strong>区別しない</strong></li></ul>



<p class="wp-block-paragraph">英字を含むパターンを使うときだけ気にすれば大丈夫ですよ。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(&quot;HELLO world&quot;, &quot;[a-z]+&quot;)      '&quot;world&quot;
=REGEXEXTRACT(&quot;HELLO world&quot;, &quot;[a-z]+&quot;, 0, 1) '&quot;HELLO&quot;</code></pre>



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



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">文字列から最初の数字列を取り出す</span></h3>



<p class="wp-block-paragraph">もっともシンプルな例です。文字列に含まれる数字をまとめて抽出します。</p>



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



<p class="wp-block-paragraph">A2が「商品コード12345番」なら結果は「12345」、「2026年4月」なら「2026」が返ります。<code>d+</code> は「数字1文字以上の繰り返し」を表します。</p>



<p class="wp-block-paragraph">抽出結果は常にテキスト型で返るので、数値として計算に使いたい場合はVALUE関数（文字列を数値に変換する関数）でラップしましょう。</p>



<pre class="wp-block-code"><code>=VALUE(REGEXEXTRACT(A2, &quot;d+&quot;))</code></pre>



<h3 class="wp-block-heading"><span id="toc12">郵便番号を抜き出す</span></h3>



<p class="wp-block-paragraph">住所の中から郵便番号だけを取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;d{3}-d{4}&quot;)</code></pre>



<p class="wp-block-paragraph">A2が「〒100-0001 東京都千代田区」なら「100-0001」が返ります。<code>{3}</code> は「直前の要素の3回繰り返し」を意味する記号です。</p>



<h3 class="wp-block-heading"><span id="toc13">本文からメールアドレスを抽出する</span></h3>



<p class="wp-block-paragraph">問い合わせメールの本文などからメールアドレスだけを抜き出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;[w.+-]+@[w.-]+.w+&quot;)</code></pre>



<p class="wp-block-paragraph">A2が「ご連絡は taro@example.com までお願いします」なら「taro@example.com」が返ります。実務レベルのメールアドレス抽出にはこれで十分ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">IFERRORでエラーを隠す</span></h3>



<p class="wp-block-paragraph">パターンが見つからないと <code>#N/A</code> エラーになります。IFERROR関数（エラー時に代替値を返す関数）でラップすると、空欄や任意のメッセージに置き換えられます。</p>



<pre class="wp-block-code"><code>=IFERROR(REGEXEXTRACT(A2, &quot;d+&quot;), &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">データにばらつきがある実務では、IFERRORとのセット使いをおすすめします。</p>



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



<h3 class="wp-block-heading"><span id="toc16">電話番号の市外局番だけを抽出する</span></h3>



<p class="wp-block-paragraph">電話番号の先頭部分だけを取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;^0d{1,4}&quot;)</code></pre>



<p class="wp-block-paragraph">「03-1234-5678」なら「03」、「0120-999-888」なら「0120」が返ります。<code>^</code> は「文字列の先頭」、<code>d{1,4}</code> は「数字1〜4桁」を意味します。</p>



<p class="wp-block-paragraph">市外局番と市内局番・加入者番号に分けたい場合は、次のキャプチャグループの例が便利です。</p>



<h3 class="wp-block-heading"><span id="toc17">URLからドメイン部分を取得する</span></h3>



<p class="wp-block-paragraph">URLからホスト名（ドメイン）だけを取り出す例です。キャプチャグループ（括弧 <code>()</code> で囲んだ部分）と第3引数 <code>2</code> を組み合わせます。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;https?://([^/]+)&quot;, 2)</code></pre>



<p class="wp-block-paragraph">A2が「https://www.mashukabu.com/excel-tips/」なら「www.mashukabu.com」が返ります。括弧で囲んだ <code>[^/]+</code>（スラッシュ以外の1文字以上）の部分だけが抽出されるイメージです。</p>



<p class="wp-block-paragraph">第3引数を <code>2</code> にすることで、括弧で囲んだキャプチャグループの中身だけを取り出せるのがポイントですよ。</p>



<h3 class="wp-block-heading"><span id="toc18">日付文字列から年・月・日を分離する</span></h3>



<p class="wp-block-paragraph">「2026-04-09」のような文字列を年・月・日の3つに分解する例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;(d{4})-(d{2})-(d{2})&quot;, 2)</code></pre>



<p class="wp-block-paragraph">この数式はスピル（数式が自動で配列に展開される機能）に対応していて、1つのセルに入力すると右方向に3つのセルへ「2026」「04」「09」が展開されます。</p>



<p class="wp-block-paragraph">括弧を3つ書いてそれぞれの部分をキャプチャしているのがコツです。スラッシュ区切りの日付なら次のように書きます。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;(d{4})/(d{1,2})/(d{1,2})&quot;, 2)</code></pre>



<p class="wp-block-paragraph">LEFT・MID・RIGHTで3つのセルに分解していた従来の方法と比べて、圧倒的にシンプルですよね。</p>



<h3 class="wp-block-heading"><span id="toc19">本文中のハッシュタグをすべて抽出する</span></h3>



<p class="wp-block-paragraph">SNS投稿の文字列からハッシュタグをまとめて取り出す例です。第3引数に <code>1</code> を指定すると、一致するものをすべて配列として返します。</p>



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



<p class="wp-block-paragraph">A2が「今日の学び #Excel #REGEXEXTRACT #正規表現」なら、下方向に「#Excel」「#REGEXEXTRACT」「#正規表現」の3つがスピルします。ハッシュタグの棚卸しやSNS運用のレポートで重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">メールアドレスからユーザー名とドメインを分ける</span></h3>



<p class="wp-block-paragraph">アットマークの前後を分けて取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;([w.+-]+)@([w.-]+)&quot;, 2)</code></pre>



<p class="wp-block-paragraph">A2が「taro@example.com」なら「taro」「example.com」の2つに分かれてスピルします。顧客リストのドメインごとの集計などに便利ですよ。</p>



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



<p class="wp-block-paragraph">REGEXEXTRACT関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc22">#N/A エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 指定した正規表現パターンに一致する部分が見つからない。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: IFERROR関数で代替値を返すようにします。データ全体でパターンが統一されていない場合の定番対処です。</p>



<pre class="wp-block-code"><code>=IFERROR(REGEXEXTRACT(A2, &quot;d+&quot;), &quot;該当なし&quot;)</code></pre>



<p class="wp-block-paragraph">パターン自体が間違っていないか、サンプルデータで動作を確認してから本番データに適用するのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc23">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 第2引数に無効な正規表現を指定した。または第1引数に数値型セルを直接渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 正規表現パターンを見直しましょう。特にエスケープ忘れ（<code>(</code> をそのまま使うなど）が多いので注意してください。数値セルを渡す場合はTEXT関数で文字列化します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(TEXT(A2, &quot;0&quot;), &quot;d+&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc24">#NAME? エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: REGEXEXTRACT関数に対応していないバージョンのExcelで使っている。または関数名のスペルミス。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024などでは使えません。</p>



<h3 class="wp-block-heading"><span id="toc25">エラー一覧表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#N/A</td><td>パターン不一致</td><td>IFERRORで代替値</td></tr><tr><td>#VALUE!</td><td>無効な正規表現・非文字列</td><td>パターン見直し・TEXTで変換</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーが出ても原因は限られているので、落ち着いて確認すれば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc26">列全体に一括適用する方法（MAP関数との組み合わせ）</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数にセル範囲を直接渡すと <code>#VALUE!</code> になってしまいます。列全体に適用したい場合は、<strong>MAP関数</strong>（配列の各要素に関数を適用する関数）と組み合わせましょう。</p>



<pre class="wp-block-code"><code>=MAP(A2:A100, LAMBDA(x, IFERROR(REGEXEXTRACT(x, &quot;d+&quot;), &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph">この数式はA2:A100の各セルに対してREGEXEXTRACTを実行し、エラーのセルは空欄に置き換えてくれます。結果はA2から下方向にスピルします。</p>



<h3 class="wp-block-heading"><span id="toc27">MAP + LAMBDAの書き方パターン</span></h3>



<pre class="wp-block-code"><code>=MAP(範囲, LAMBDA(変数名, IFERROR(REGEXEXTRACT(変数名, &quot;パターン&quot;), &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph"><code>LAMBDA</code> の第1引数は変数名（任意）で、第2引数に実行する処理を書きます。次の例では電話番号列から市外局番だけを一括抽出しています。</p>



<pre class="wp-block-code"><code>=MAP(B2:B50, LAMBDA(tel, IFERROR(REGEXEXTRACT(tel, &quot;^0d{1,4}&quot;), &quot;&quot;)))</code></pre>



<p class="wp-block-paragraph">従来はフィルコピーや絶対参照の調整が必要でしたが、MAP関数を使えばセル1つに数式を書くだけで済みます。大量データの一括処理で特に重宝しますよ。</p>



<h2 class="wp-block-heading"><span id="toc28">REGEXTEST と組み合わせたフィルタリングパターン</span></h2>



<p class="wp-block-paragraph">「パターンに一致するものだけを別セルに抽出したい」という場面では、REGEXTEST関数（パターンに一致するか TRUE/FALSE を返す関数）とFILTER関数を組み合わせるのが効果的です。</p>



<h3 class="wp-block-heading"><span id="toc29">メールアドレスが含まれる行だけを絞り込む</span></h3>



<pre class="wp-block-code"><code>=FILTER(A2:A100, REGEXTEST(A2:A100, &quot;[w.+-]+@[w.-]+.w+&quot;))</code></pre>



<p class="wp-block-paragraph">この数式でA2:A100の中から、メールアドレスのパターンを含む行だけをすべて取り出せます。REGEXTEST が各行に TRUE/FALSE を返し、FILTER がTRUEの行だけを残す仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc30">絞り込んだ上で抽出する2段階パターン</span></h3>



<p class="wp-block-paragraph">REGEXTESTで先に入力値を検証してから、REGEXEXTRACTで取り出す2段階パターンも実務でよく使います。</p>



<pre class="wp-block-code"><code>=IF(REGEXTEST(A2, &quot;[w.+-]+@[w.-]+.w+&quot;),
    REGEXEXTRACT(A2, &quot;[w.+-]+@[w.-]+.w+&quot;),
    &quot;メール形式ではありません&quot;)</code></pre>



<p class="wp-block-paragraph">同じパターンを2回書く必要がありますが、エラーメッセージを日本語で出せるのがIFERROR単独との違いです。パターンが長い場合はLET関数で変数化すると管理しやすくなります。</p>



<pre class="wp-block-code"><code>=LET(
  pattern, &quot;[w.+-]+@[w.-]+.w+&quot;,
  IF(REGEXTEST(A2, pattern), REGEXEXTRACT(A2, pattern), &quot;&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>LET</code> 関数（変数を定義して数式を整理できる関数）を使うとパターンを1か所で管理でき、正規表現を修正するときも1箇所直すだけで済みますよ。</p>



<h2 class="wp-block-heading"><span id="toc31">REGEXREPLACE との使い分けと連携</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACTで「取り出せない」と感じたとき、REGEXREPLACEで「不要な部分を消す」発想に切り替えると解決できることがあります。</p>



<h3 class="wp-block-heading"><span id="toc32">取り出しにくいなら「削除」で代用する</span></h3>



<p class="wp-block-paragraph">たとえば「売上: ¥1,200」から数字とカンマだけを取り出したい場合、次の2つの書き方が考えられます。</p>



<p class="wp-block-paragraph"><strong>REGEXEXTRACTで取り出すアプローチ:</strong></p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;[d,]+&quot;)</code></pre>



<p class="wp-block-paragraph"><strong>REGEXREPLACEで不要部分を削除するアプローチ:</strong></p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[^d,]&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">後者は「数字とカンマ以外をすべて削除する」という発想です。<code>[^...]</code> は「括弧内の文字以外」を表す否定文字クラスです。複雑な抽出パターンを考えるより、削除するパターンのほうがシンプルに書けるケースも多いですよ。</p>



<h3 class="wp-block-heading"><span id="toc33">よく使う正規表現パターン早見表</span></h3>



<p class="wp-block-paragraph">実務でよく登場する正規表現パターンをまとめました。コピーしてそのまま使えます。</p>



<figure class="wp-block-table"><table><thead><tr><th>用途</th><th>パターン</th><th>例</th></tr></thead><tbody><tr><td>整数</td><td><code>d+</code></td><td>123</td></tr><tr><td>小数点あり数値</td><td><code>d+.?d*</code></td><td>1200.5</td></tr><tr><td>郵便番号</td><td><code>d{3}-d{4}</code></td><td>100-0001</td></tr><tr><td>固定電話</td><td><code>0d{1,4}-d{1,4}-d{4}</code></td><td>03-1234-5678</td></tr><tr><td>携帯電話</td><td><code>0[789]0-d{4}-d{4}</code></td><td>090-1234-5678</td></tr><tr><td>メールアドレス</td><td><code>[w.+-]+@[w.-]+.w+</code></td><td>user@example.com</td></tr><tr><td>URLドメイン</td><td><code>https?://([^/]+)</code></td><td>www.example.com</td></tr><tr><td>日付（ハイフン）</td><td><code>d{4}-d{2}-d{2}</code></td><td>2026-04-09</td></tr><tr><td>日本語の年月日</td><td><code>(d{4})年(d{1,2})月(d{1,2})日</code></td><td>2026年4月9日</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc34">REGEXTEST・REGEXREPLACEとの使い分け</span></h2>



<p class="wp-block-paragraph">REGEXEXTRACT関数には2つの姉妹関数があります。用途が異なるので、目的に合わせて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>用途</th></tr></thead><tbody><tr><td>REGEXTEST</td><td>TRUE / FALSE</td><td>パターンに一致するかを判定する</td></tr><tr><td>REGEXEXTRACT</td><td>一致した文字列</td><td>パターンに一致する部分を抜き出す</td></tr><tr><td>REGEXREPLACE</td><td>置換後の文字列</td><td>パターンに一致する部分を別の文字列に置き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのフローは次のとおりです。</p>



<ul class="wp-block-list"><li>「メールアドレスとして正しいか？」→ REGEXTEST</li><li>「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT</li><li>「電話番号のハイフンを削除したい」→ REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">3つとも同じPCRE2（Perl互換の正規表現）の書き方に対応しているので、パターンの知識はそのまま共通で使えます。REGEXTESTの詳しい使い方は<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>でも解説していますので、あわせて読んでみてください。</p>



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



<p class="wp-block-paragraph">REGEXEXTRACT関数は、Excelのセル上で正規表現を使って文字列を抜き出せる関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=REGEXEXTRACT(テキスト, 正規表現パターン, [戻り値モード], [大文字小文字の区別])</code></li><li>Microsoft 365のサブスクリプションが必要</li><li>第3引数 <code>0</code> で最初の一致、<code>1</code> で全一致、<code>2</code> でキャプチャグループを取得</li><li>キャプチャグループ（括弧）を使うと日付やURLを複数パートに分解できる</li><li>戻り値は常にテキスト型なので数値計算ではVALUE関数でラップする</li><li><code>#N/A</code> エラーはIFERROR関数で代替値を返すのが定番対処</li><li>姉妹関数のREGEXTEST（判定）・REGEXREPLACE（置換）と使い分けると便利</li></ul>



<p class="wp-block-paragraph">まずは <code>=REGEXEXTRACT("価格1200円", "d+")</code> のようなシンプルな式から試してみてください。LEFTやMIDを組み合わせた長い数式から解放されて、データ整理がぐっとラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-regexextract/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのREGEXTEST関数の使い方｜正規表現でセルのパターンをチェック</title>
		<link>https://mashukabu.com/excel-function-howto-use-regextest/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-regextest/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:10:58 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REGEXEXTRACT]]></category>
		<category><![CDATA[REGEXTEST関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[入力チェック]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5894</guid>

					<description><![CDATA[ExcelのREGEXTEST関数の使い方を初心者向けに解説。構文・引数（テキスト・パターン・大文字小文字区別）の基本から、メールアドレス・電話番号・郵便番号のバリデーション、数字のみチェックなど実務ユースケースを数式付きで紹介。正規表現の早見表、REGEXEXTRACT・REGEXREPLACEとの使い分け、エラー対処法もまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「このセルに入っている文字列、メールアドレスとして正しい形式かな？」「電話番号の列に変な文字が混じっていないかチェックしたい」。データの入力チェックをしていると、こんな場面によく出くわしますよね。</p>



<p class="wp-block-paragraph">これまでのExcelでは、ISNUMBERやSEARCH関数を組み合わせたり、長い条件式を書いたりするしかありませんでした。かなり面倒ですよね。</p>



<p class="wp-block-paragraph">そんなときに便利なのがREGEXTEST関数です。正規表現を使って、セルの文字列が特定のパターンに一致するかを一発でチェックできます。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREGEXTEST関数の使い方を基本から実務例まで解説します。正規表現の早見表や姉妹関数との使い分けもまとめましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのREGEXTEST関数とは？</a><ol><li><a href="#toc2" tabindex="0">どんなときに使う関数か</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li></ol></li><li><a href="#toc4" tabindex="0">REGEXTEST関数の構文と引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">第1引数：テキスト</a></li><li><a href="#toc7" tabindex="0">第2引数：正規表現パターン</a></li><li><a href="#toc8" tabindex="0">第3引数：大文字小文字の区別</a></li></ol></li><li><a href="#toc9" tabindex="0">正規表現の基本パターン早見表</a><ol><li><a href="#toc10" tabindex="0">文字クラス</a></li><li><a href="#toc11" tabindex="0">位置と繰り返し</a></li></ol></li><li><a href="#toc12" tabindex="0">Excel REGEXTEST関数の基本的な使い方</a><ol><li><a href="#toc13" tabindex="0">文字列に数字が含まれるかチェックする</a></li><li><a href="#toc14" tabindex="0">数字のみで構成されているかチェックする</a></li><li><a href="#toc15" tabindex="0">大文字のアルファベットが含まれるかチェックする</a></li><li><a href="#toc16" tabindex="0">IF関数と組み合わせて判定結果を表示する</a></li></ol></li><li><a href="#toc17" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc18" tabindex="0">メールアドレスの形式をチェックする</a></li><li><a href="#toc19" tabindex="0">電話番号が数字とハイフンのみか確認する</a></li><li><a href="#toc20" tabindex="0">郵便番号の形式をチェックする</a></li><li><a href="#toc21" tabindex="0">セルに特定キーワードが含まれるか判定する</a></li><li><a href="#toc22" tabindex="0">FILTER関数と組み合わせて条件抽出する</a></li></ol></li><li><a href="#toc23" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc24" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc25" tabindex="0">#NAME? エラー</a></li><li><a href="#toc26" tabindex="0">意図したとおりにマッチしない</a></li></ol></li><li><a href="#toc27" tabindex="0">REGEXEXTRACT・REGEXREPLACEとの使い分け</a></li><li><a href="#toc28" tabindex="0">REGEXTEST vs ISNUMBER+FIND：どちらを使うべきか</a><ol><li><a href="#toc29" tabindex="0">比較：「@が含まれるか」を判定する</a></li><li><a href="#toc30" tabindex="0">どちらを使うか選ぶ基準</a></li></ol></li><li><a href="#toc31" tabindex="0">ビジネスデータ向け正規表現パターン集</a><ol><li><a href="#toc32" tabindex="0">日本ビジネスでよく使うパターン</a></li><li><a href="#toc33" tabindex="0">数値・金額のチェックに使えるパターン</a></li></ol></li><li><a href="#toc34" tabindex="0">FILTER関数との組み合わせ：一致行を一括抽出する</a><ol><li><a href="#toc35" tabindex="0">基本：特定パターンの行だけ抽出する</a></li><li><a href="#toc36" tabindex="0">応用：メールアドレスの不正データを抽出する</a></li><li><a href="#toc37" tabindex="0">応用：複数パターンのいずれかに一致する行を抽出する</a></li><li><a href="#toc38" tabindex="0">注意：FILTERと組み合わせるときは範囲のサイズを揃える</a></li></ol></li><li><a href="#toc39" tabindex="0">関連記事</a></li><li><a href="#toc40" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">REGEXTEST関数は、<strong>セルの文字列が指定した正規表現パターンに一致するかを判定するExcelの関数</strong>です。読み方は「レジェックステスト」で、結果は TRUE または FALSE で返ります。</p>



<p class="wp-block-paragraph">2024年にMicrosoft 365へ追加された比較的新しい関数で、REGEXEXTRACT・REGEXREPLACEと合わせて「正規表現3関数」と呼ばれています。</p>



<p class="wp-block-paragraph">正規表現というと難しそうに感じますが、使うパターンは意外と限られています。この記事のサンプルをコピーすれば、実務で十分使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc2">どんなときに使う関数か</span></h3>



<p class="wp-block-paragraph">REGEXTEST関数は次のようなシーンで活躍します。</p>



<ul class="wp-block-list"><li>メールアドレスが正しい形式で入力されているかチェックしたいとき</li><li>電話番号や郵便番号が数字のみか確認したいとき</li><li>セルに特定のキーワードや文字パターンが含まれるか判定したいとき</li><li>FILTER関数と組み合わせて条件に合う行だけ抽出したいとき</li></ul>



<p class="wp-block-paragraph">従来のISNUMBER＋SEARCH構文と比べて、数式が圧倒的にスッキリしますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">REGEXTEST関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021などの永続ライセンス版では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">お使いのバージョンが対応しているか、事前に確認しておきましょう。バージョンが古いと <code>#NAME?</code> エラーになってしまいます。</p>



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



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



<pre class="wp-block-code"><code>=REGEXTEST(テキスト, 正規表現パターン, [大文字小文字の区別])</code></pre>



<p class="wp-block-paragraph">カッコ内に、チェックしたいテキストと正規表現パターンを指定します。第3引数は省略可能です。</p>



<h3 class="wp-block-heading"><span id="toc6">第1引数：テキスト</span></h3>



<p class="wp-block-paragraph">チェック対象の文字列またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(&quot;abc123&quot;, &quot;[0-9]&quot;)
=REGEXTEST(A2, &quot;[0-9]&quot;)</code></pre>



<p class="wp-block-paragraph">直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うのが一般的です。</p>



<p class="wp-block-paragraph">なお、セルが数値型の場合はそのままでは使えません。TEXT関数（数値を指定した書式の文字列に変換する関数）で文字列化してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">第2引数：正規表現パターン</span></h3>



<p class="wp-block-paragraph">マッチさせたい正規表現をダブルクォーテーションで囲んで指定します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^[0-9]+$&quot;)</code></pre>



<p class="wp-block-paragraph">上の例は「A2が数字だけで構成されているか」をチェックする数式です。記号の意味は後ほど早見表で整理します。</p>



<h3 class="wp-block-heading"><span id="toc8">第3引数：大文字小文字の区別</span></h3>



<p class="wp-block-paragraph">大文字と小文字を区別するかを数値で指定します。省略すると0（区別する）が使われます。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：大文字と小文字を<strong>区別する</strong></li><li><strong>1</strong>：大文字と小文字を<strong>区別しない</strong></li></ul>



<p class="wp-block-paragraph">英字を含むパターンを使うときだけ気にすれば大丈夫ですよ。</p>



<pre class="wp-block-code"><code>=REGEXTEST(&quot;ABC&quot;, &quot;[a-z]&quot;)      'FALSE（小文字のみにマッチ）
=REGEXTEST(&quot;ABC&quot;, &quot;[a-z]&quot;, 1)   'TRUE（区別しないのでマッチ）</code></pre>



<h2 class="wp-block-heading"><span id="toc9">正規表現の基本パターン早見表</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数で使える正規表現は、PCRE2（Perl互換の正規表現）と呼ばれるものです。まずはよく使う記号だけ押さえておけば十分です。</p>



<h3 class="wp-block-heading"><span id="toc10">文字クラス</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td><code>d</code></td><td>数字1文字（0〜9）</td><td><code>dd</code> は「12」にマッチ</td></tr><tr><td><code>D</code></td><td>数字以外の1文字</td><td><code>D</code> は「a」にマッチ</td></tr><tr><td><code>w</code></td><td>英数字またはアンダースコア</td><td><code>w+</code> は「hello_1」にマッチ</td></tr><tr><td><code>s</code></td><td>空白文字（半角スペース・タブ）</td><td><code>s</code> は半角スペースにマッチ</td></tr><tr><td><code>.</code></td><td>任意の1文字</td><td><code>a.c</code> は「abc」「a1c」にマッチ</td></tr><tr><td><code>[abc]</code></td><td>a・b・cのいずれか1文字</td><td><code>[abc]</code> は「a」にマッチ</td></tr><tr><td><code>[a-z]</code></td><td>a〜zのいずれか1文字</td><td>小文字の英字にマッチ</td></tr><tr><td><code>[0-9]</code></td><td>0〜9のいずれか1文字</td><td><code>d</code> と同じ</td></tr><tr><td><code>[^0-9]</code></td><td>0〜9以外の1文字</td><td>数字以外にマッチ</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc11">位置と繰り返し</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td><code>^</code></td><td>文字列の先頭</td><td><code>^abc</code> は「abc」で始まる文字列</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td><td><code>xyz$</code> は「xyz」で終わる文字列</td></tr><tr><td><code>*</code></td><td>直前の0回以上の繰り返し</td><td><code>a*</code> は「」「a」「aaa」にマッチ</td></tr><tr><td><code>+</code></td><td>直前の1回以上の繰り返し</td><td><code>a+</code> は「a」「aaa」にマッチ</td></tr><tr><td><code>?</code></td><td>直前の0回または1回</td><td><code>colou?r</code> は「color」「colour」</td></tr><tr><td><code>{n}</code></td><td>直前のn回の繰り返し</td><td><code>d{4}</code> は数字4桁</td></tr><tr><td><code>{n,m}</code></td><td>直前のn回以上m回以下</td><td><code>d{3,5}</code> は数字3〜5桁</td></tr><tr><td>`</td><td>`</td><td>または</td><td>`cat</td><td>dog` は「cat」か「dog」</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></code> でエスケープします。たとえば「.」をそのままチェックしたいなら <code>.</code> と書きます。</p></blockquote>



<p class="wp-block-paragraph"><code>^</code> と <code>$</code> を両方付けると「文字列全体が完全一致するか」をチェックできます。部分一致でよいなら両方とも省略しましょう。</p>



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



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。</p>



<h3 class="wp-block-heading"><span id="toc13">文字列に数字が含まれるかチェックする</span></h3>



<p class="wp-block-paragraph">もっともシンプルな例です。A列の文字列に数字が1文字でも含まれるかを判定します。</p>



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



<p class="wp-block-paragraph">「abc」ならFALSE、「abc123」ならTRUEが返ります。<code>d</code> は「数字1文字」を表す記号です。</p>



<h3 class="wp-block-heading"><span id="toc14">数字のみで構成されているかチェックする</span></h3>



<p class="wp-block-paragraph">文字列全体が数字だけでできているかを判定します。郵便番号や電話番号の入力チェックに便利です。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d+$&quot;)</code></pre>



<p class="wp-block-paragraph"><code>^</code> と <code>$</code> で文字列全体を挟み、<code>d+</code> で「数字1文字以上の繰り返し」を表しています。「123456」ならTRUE、「123-456」はハイフンが含まれるのでFALSEになります。</p>



<h3 class="wp-block-heading"><span id="toc15">大文字のアルファベットが含まれるかチェックする</span></h3>



<p class="wp-block-paragraph">パスワードチェックなどで使うパターンです。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;[A-Z]&quot;)</code></pre>



<p class="wp-block-paragraph">A2に「password」が入っていればFALSE、「Password」ならTRUEです。大文字が1文字でもあればTRUEを返します。</p>



<h3 class="wp-block-heading"><span id="toc16">IF関数と組み合わせて判定結果を表示する</span></h3>



<p class="wp-block-paragraph">TRUE・FALSEだけだとわかりにくいので、IF関数と組み合わせてメッセージで返すのがおすすめです。</p>



<pre class="wp-block-code"><code>=IF(REGEXTEST(A2, &quot;^d+$&quot;), &quot;数字のみ&quot;, &quot;数字以外を含む&quot;)</code></pre>



<p class="wp-block-paragraph">見た目もわかりやすくなり、チェック結果の確認がラクになりますよ。</p>



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



<h3 class="wp-block-heading"><span id="toc18">メールアドレスの形式をチェックする</span></h3>



<p class="wp-block-paragraph">顧客リストや問い合わせフォームのデータで、メールアドレスが正しい形式かをチェックする例です。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^[w.+-]+@[w-]+.[w.-]+$&quot;)</code></pre>



<p class="wp-block-paragraph">一見複雑ですが、分解すると次のような意味になります。</p>



<ul class="wp-block-list"><li><code>^[w.+-]+</code> ：先頭は英数字・ドット・プラス・ハイフンの1文字以上</li><li><code>@</code> ：アットマーク</li><li><code>[w-]+</code> ：ドメイン名部分（英数字とハイフン）</li><li><code>.[w.-]+$</code> ：ドット＋トップレベルドメインで終わる</li></ul>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXTESTの結果）</th></tr></thead><tbody><tr><td>taro@example.com</td><td>TRUE</td></tr><tr><td>hanako.suzuki@biz-tactics.co.jp</td><td>TRUE</td></tr><tr><td>info@example</td><td>FALSE</td></tr><tr><td>taro[at]example.com</td><td>FALSE</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">厳密なRFC準拠ではありませんが、実務レベルのチェックには十分です。IF関数と組み合わせて「要確認」のラベルを付けておくと、修正漏れを防げますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">電話番号が数字とハイフンのみか確認する</span></h3>



<p class="wp-block-paragraph">電話番号欄に余計な文字（全角やスペース）が入っていないかチェックする例です。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^[0-9-]+$&quot;)</code></pre>



<p class="wp-block-paragraph">「03-1234-5678」はTRUE、「03-1234-5678（内線1）」は括弧が含まれるのでFALSEになります。</p>



<p class="wp-block-paragraph">ハイフンなしの数字のみに統一したい場合は次の数式を使います。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d{10,11}$&quot;)</code></pre>



<p class="wp-block-paragraph"><code>d{10,11}</code> は「数字10桁〜11桁」を意味します。携帯番号（11桁）と固定電話（10桁）の両方に対応できます。</p>



<h3 class="wp-block-heading"><span id="toc20">郵便番号の形式をチェックする</span></h3>



<p class="wp-block-paragraph">日本の郵便番号（7桁、ハイフン区切り）のチェックです。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d{3}-d{4}$&quot;)</code></pre>



<p class="wp-block-paragraph">「100-0001」はTRUE、「1000001」や「100-001」はFALSEになります。ハイフンの位置までしっかりチェックできるのがポイントです。</p>



<h3 class="wp-block-heading"><span id="toc21">セルに特定キーワードが含まれるか判定する</span></h3>



<p class="wp-block-paragraph">複数のキーワードのいずれかが含まれるかを判定する例です。「緊急」「至急」「重要」のどれかが本文に含まれるメールを検出するイメージです。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;緊急|至急|重要&quot;)</code></pre>



<p class="wp-block-paragraph"><code>|</code>（パイプ）は「または」を意味します。IF関数と組み合わせれば、優先度の自動仕分けにも使えますよ。</p>



<pre class="wp-block-code"><code>=IF(REGEXTEST(A2, &quot;緊急|至急|重要&quot;), &quot;優先対応&quot;, &quot;&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc22">FILTER関数と組み合わせて条件抽出する</span></h3>



<p class="wp-block-paragraph">REGEXTEST関数のすごいところは、FILTER関数と組み合わせて行単位の抽出ができる点です。</p>



<p class="wp-block-paragraph">A2:B100のデータから、A列が「東京」で始まる行だけを抽出する例です。</p>



<pre class="wp-block-code"><code>=FILTER(A2:B100, REGEXTEST(A2:A100, &quot;^東京&quot;))</code></pre>



<p class="wp-block-paragraph">スピル（数式が自動で配列に展開される機能）に対応しているので、1つの数式で複数行を一気に絞り込めます。「東京都」「東京支店」などを一括で拾えますよ。</p>



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



<p class="wp-block-paragraph">REGEXTEST関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc24">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 第2引数に無効な正規表現を指定した。または第1引数に数値や日付などの非文字列を直接渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 正規表現パターンを見直しましょう。特にエスケープ忘れ（<code>(</code> をそのまま使うなど）が多いので注意してください。数値セルを渡す場合はTEXT関数で文字列化しましょう。</p>



<pre class="wp-block-code"><code>=REGEXTEST(TEXT(A2, &quot;0&quot;), &quot;^d+$&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc25">#NAME? エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: REGEXTEST関数に対応していないバージョンのExcelで使っている。または関数名のスペルミス。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024などでは使えません。関数名のスペルも確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc26">意図したとおりにマッチしない</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 日付セルが対象になっている。日付はExcel内部ではシリアル値（数値）として扱われるため、表示形式とは異なる値が渡されます。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: TEXT関数で文字列化してから渡します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(TEXT(A2, &quot;yyyy/mm/dd&quot;), &quot;^2026&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>無効な正規表現・非文字列</td><td>パターン見直し・TEXTで変換</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr><tr><td>意図しないFALSE</td><td>日付シリアル値が対象</td><td>TEXT関数で文字列化</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーが出ても原因は限られているので、落ち着いて確認すれば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc27">REGEXEXTRACT・REGEXREPLACEとの使い分け</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数には2つの姉妹関数があります。用途が異なるので、目的に合わせて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>用途</th></tr></thead><tbody><tr><td>REGEXTEST</td><td>TRUE / FALSE</td><td>パターンに一致するかを判定する</td></tr><tr><td>REGEXEXTRACT</td><td>一致した文字列</td><td>パターンに一致する部分を抜き出す</td></tr><tr><td>REGEXREPLACE</td><td>置換後の文字列</td><td>パターンに一致する部分を別の文字列に置き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのイメージは次のとおりです。</p>



<ul class="wp-block-list"><li>「メールアドレスとして正しいか？」→ REGEXTEST</li><li>「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT</li><li>「電話番号のハイフンを削除したい」→ REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTで覚えた知識はそのまま他の2関数でも活きますよ。</p>



<h2 class="wp-block-heading"><span id="toc28">REGEXTEST vs ISNUMBER+FIND：どちらを使うべきか</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数が使える環境であれば、従来のISNUMBER+FINDの組み合わせよりも積極的にREGEXTESTを選ぶべきです。両者の違いを整理します。</p>



<h3 class="wp-block-heading"><span id="toc29">比較：「@が含まれるか」を判定する</span></h3>



<p class="wp-block-paragraph"><strong>ISNUMBER+FIND（従来の方法）</strong></p>



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



<p class="wp-block-paragraph"><strong>REGEXTEST（新しい方法）</strong></p>



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



<p class="wp-block-paragraph">単純な部分一致なら見た目の差は小さいですが、「メールアドレスの形式として正しいか」という少し複雑な条件になると差が広がります。</p>



<p class="wp-block-paragraph"><strong>ISNUMBER+FINDで複数条件（ハイフン区切り数字かどうか）</strong></p>



<pre class="wp-block-code"><code>=AND(ISNUMBER(FIND(&quot;-&quot;, A2)), ISNUMBER(VALUE(SUBSTITUTE(A2, &quot;-&quot;, &quot;&quot;))))</code></pre>



<p class="wp-block-paragraph">かなり読みにくくなります。</p>



<p class="wp-block-paragraph"><strong>REGEXTESTで同じ条件</strong></p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;^d+-d+$&quot;)</code></pre>



<p class="wp-block-paragraph">シンプルで意図が一目瞭然です。</p>



<h3 class="wp-block-heading"><span id="toc30">どちらを使うか選ぶ基準</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>条件</th><th>推奨</th></tr></thead><tbody><tr><td>Microsoft 365を使っている</td><td>REGEXTEST</td></tr><tr><td>完全一致・部分一致だけの単純チェック</td><td>どちらでも可</td></tr><tr><td>複数条件・パターンが複雑</td><td>REGEXTEST一択</td></tr><tr><td>Excel 2019・2021など永続ライセンス</td><td>ISNUMBER+FIND</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ISNUMBER+FINDは「@が含まれるか」のような部分一致に限ればシンプルで動きますが、ハイフンの位置・桁数・先頭末尾の制約などを加えるたびにネストが深くなっていきます。Microsoft 365ユーザーはREGEXTESTに統一するほうが保守しやすいです。</p>



<h2 class="wp-block-heading"><span id="toc31">ビジネスデータ向け正規表現パターン集</span></h2>



<p class="wp-block-paragraph">実務でよく使うパターンをまとめました。パターンをそのままコピーして使えます。</p>



<h3 class="wp-block-heading"><span id="toc32">日本ビジネスでよく使うパターン</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>チェック内容</th><th>正規表現パターン</th><th>数式例</th></tr></thead><tbody><tr><td>郵便番号（〒123-4567形式）</td><td><code>^d{3}-d{4}$</code></td><td><code>=REGEXTEST(A2, "^d{3}-d{4}$")</code></td></tr><tr><td>郵便番号（ハイフンなし7桁）</td><td><code>^d{7}$</code></td><td><code>=REGEXTEST(A2, "^d{7}$")</code></td></tr><tr><td>固定電話（市外局番含む）</td><td><code>^d{2,4}-d{2,4}-d{4}$</code></td><td><code>=REGEXTEST(A2, "^d{2,4}-d{2,4}-d{4}$")</code></td></tr><tr><td>携帯電話（090/080/070）</td><td><code>^0[789]0-d{4}-d{4}$</code></td><td><code>=REGEXTEST(A2, "^0[789]0-d{4}-d{4}$")</code></td></tr><tr><td>メールアドレス（簡易）</td><td><code>^[w.+-]+@[w-]+.[w.-]+$</code></td><td><code>=REGEXTEST(A2, "^[w.+-]+@[w-]+.[w.-]+$")</code></td></tr><tr><td>数字のみ（任意桁）</td><td><code>^d+$</code></td><td><code>=REGEXTEST(A2, "^d+$")</code></td></tr><tr><td>半角英数字のみ</td><td><code>^[a-zA-Z0-9]+$</code></td><td><code>=REGEXTEST(A2, "^[a-zA-Z0-9]+$")</code></td></tr><tr><td>全角文字が含まれる</td><td><code>[^x00-x7F]</code></td><td><code>=REGEXTEST(A2, "[^x00-x7F]")</code></td></tr><tr><td>スペース（半角・全角）が含まれる</td><td><code>[s　]</code></td><td><code>=REGEXTEST(A2, "[s　]")</code></td></tr><tr><td>URLらしい文字列</td><td><code>https?://[w/:%#$&?()~.=+-]+</code></td><td><code>=REGEXTEST(A2, "https?://")</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>パターンをセルに入力して参照する方法もあります。<code>=REGEXTEST(A2, B2)</code> のように第2引数にパターンが入ったセルを渡せるので、複数チェック条件を切り替えながら試したいときに便利です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc33">数値・金額のチェックに使えるパターン</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>チェック内容</th><th>正規表現パターン</th><th>メモ</th></tr></thead><tbody><tr><td>整数（符号なし）</td><td><code>^d+$</code></td><td>「123」はTRUE、「1.5」はFALSE</td></tr><tr><td>小数点あり数値</td><td><code>^d+(.d+)?$</code></td><td>「12.5」もTRUEになる</td></tr><tr><td>符号付き整数</td><td><code>^[+-]?d+$</code></td><td>「-100」「+50」もTRUE</td></tr><tr><td>カンマ区切り金額</td><td><code>^d{1,3}(,d{3})*$</code></td><td>「1,234,567」にマッチ</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc34">FILTER関数との組み合わせ：一致行を一括抽出する</span></h2>



<p class="wp-block-paragraph">REGEXTEST関数はTRUE/FALSEを返すため、FILTER関数の条件（第2引数）にそのまま使えます。これが特に便利です。</p>



<h3 class="wp-block-heading"><span id="toc35">基本：特定パターンの行だけ抽出する</span></h3>



<pre class="wp-block-code"><code>=FILTER(A2:C100, REGEXTEST(A2:A100, &quot;^東京&quot;))</code></pre>



<p class="wp-block-paragraph">A列が「東京」で始まる行（東京都・東京支店・東京本社など）をすべて抽出します。FILTER関数はスピルに対応しているので、結果が複数行あっても自動で展開されます。</p>



<h3 class="wp-block-heading"><span id="toc36">応用：メールアドレスの不正データを抽出する</span></h3>



<p class="wp-block-paragraph">チェック対象の列でFALSEになった行（＝不正データ）を抽出したいときは、条件を否定（NOT）します。</p>



<pre class="wp-block-code"><code>=FILTER(A2:B100, NOT(REGEXTEST(A2:A100, &quot;^[w.+-]+@[w-]+.[w.-]+$&quot;)))</code></pre>



<p class="wp-block-paragraph"><code>NOT()</code> でREGEXTESTの結果を反転させることで、「メールアドレス形式でない行」を一覧できます。大量のリストを一発でクレンジングするのに役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc37">応用：複数パターンのいずれかに一致する行を抽出する</span></h3>



<p class="wp-block-paragraph">「<code>|</code>（または）」を使えば、複数のキーワードを含む行を一度に絞り込めます。</p>



<pre class="wp-block-code"><code>=FILTER(A2:D100, REGEXTEST(B2:B100, &quot;未払い|延滞|督促&quot;))</code></pre>



<p class="wp-block-paragraph">B列（備考欄など）に「未払い」「延滞」「督促」のいずれかが含まれる行を抽出します。ステータス管理や案件仕分けに使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc38">注意：FILTERと組み合わせるときは範囲のサイズを揃える</span></h3>



<p class="wp-block-paragraph">REGEXTEST の第1引数（範囲）と FILTER の第1引数（範囲）は、行数を必ず一致させます。ずれていると <code>#VALUE!</code> エラーになります。</p>



<pre class="wp-block-code"><code>' 正しい例（どちらも2〜100行目）
=FILTER(A2:C100, REGEXTEST(A2:A100, &quot;d&quot;))

' 誤った例（FILTERは2〜100行目、REGEXTESTは2〜50行目でずれている）
=FILTER(A2:C100, REGEXTEST(A2:A50, &quot;d&quot;))</code></pre>



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



<p class="wp-block-paragraph">REGEXTEST関数と組み合わせて使える関数や、関連するパターンチェックの記事もあわせてご覧ください。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-regexextract/">ExcelのREGEXEXTRACT関数の使い方｜正規表現で文字列を抽出する</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">【Excel】REGEXREPLACE関数の使い方｜正規表現で文字列を置換する実務例10選</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-filter/">【Excel】FILTER関数の使い方完全ガイド – 初心者から中級者まで役立つデータ抽出テクニック</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-isnumber/">ExcelのISNUMBER関数の使い方｜数値と文字列型数字の見分け方も解説</a></li></ul>



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



<p class="wp-block-paragraph">REGEXTEST関数は、Excelのセル上で正規表現を使ったパターンチェックができる関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=REGEXTEST(テキスト, 正規表現パターン, [大文字小文字の区別])</code></li><li>Microsoft 365のサブスクリプションが必要</li><li>戻り値はTRUE / FALSEのシンプルな形</li><li>第3引数を1にすると大文字小文字を区別しない</li><li>正規表現は <code>d</code>（数字）<code>^</code> <code>$</code>（先頭・末尾）あたりから覚えるのがおすすめ</li><li>メールアドレス・電話番号・郵便番号の形式チェックに便利</li><li>FILTER関数と組み合わせると条件抽出にも使える</li><li>姉妹関数にREGEXEXTRACT（抽出）とREGEXREPLACE（置換）がある</li></ul>



<p class="wp-block-paragraph">まずは <code>=REGEXTEST("123abc", "d")</code> のようなシンプルな式から試してみてください。データクレンジングや入力チェックの作業がぐっとラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-regextest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Excel】REGEXREPLACE関数の使い方｜正規表現で文字列を置換する実務例10選</title>
		<link>https://mashukabu.com/excel-function-howto-use-regexreplace/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-regexreplace/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:10:55 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[REGEXREPLACE関数]]></category>
		<category><![CDATA[キャプチャグループ]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[文字列置換]]></category>
		<category><![CDATA[正規表現]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5892</guid>

					<description><![CDATA[ExcelのREGEXREPLACE関数の使い方を構文から実務応用まで解説。電話番号のハイフン除去、メール伏せ字、HTMLタグ削除、キャプチャグループ$1$2による並び替え、SUBSTITUTEとの使い分け、エラー対処までコピペで動く数式付きで紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「電話番号のハイフンを一気に消したい」「メールアドレスのドメインだけ伏せ字にしたい」。データ整理をしていると、こういう一括置換の場面はよくありますよね。</p>



<p class="wp-block-paragraph">これまでのExcelでは、SUBSTITUTE関数を何重にもネストしたり、マクロを書いたりするしかありませんでした。数式が長くなって、後から見直すのも一苦労です。</p>



<p class="wp-block-paragraph">そんな悩みを一発で解決してくれるのがREGEXREPLACE関数です。正規表現を使って、セルの文字列をパターン指定でまとめて置換できます。</p>



<p class="wp-block-paragraph">この記事では、ExcelのREGEXREPLACE関数の使い方を、構文から実務応用までまるごと解説します。コピペで動く数式とビフォーアフター表、キャプチャグループ（$1 $2）による並び替え、SUBSTITUTE関数との使い分け、思い通りに動かないときのデバッグ手順まで網羅しましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-7" checked><label class="toc-title" for="toc-checkbox-7">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのREGEXREPLACE関数とは？正規表現で文字列を一括置換できる関数</a><ol><li><a href="#toc2" tabindex="0">どんな業務シーンで使うのか</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li></ol></li><li><a href="#toc4" tabindex="0">REGEXREPLACE関数の構文と5つの引数</a><ol><li><a href="#toc5" tabindex="0">基本構文</a></li><li><a href="#toc6" tabindex="0">第1引数：テキスト</a></li><li><a href="#toc7" tabindex="0">第2引数：正規表現パターン</a></li><li><a href="#toc8" tabindex="0">第3引数：置換文字列</a></li><li><a href="#toc9" tabindex="0">第4引数：出現位置（occurrence）</a></li><li><a href="#toc10" tabindex="0">第5引数：大文字小文字の区別（case_sensitivity）</a></li></ol></li><li><a href="#toc11" tabindex="0">正規表現の基本パターン早見表（Excel REGEXREPLACE 対応）</a><ol><li><a href="#toc12" tabindex="0">文字種を表す記号</a></li><li><a href="#toc13" tabindex="0">量を表す記号（量指定子）</a></li><li><a href="#toc14" tabindex="0">位置・選択を表す記号</a></li></ol></li><li><a href="#toc15" tabindex="0">【基本編】REGEXREPLACE関数の使い方をコピペ数式で学ぶ</a><ol><li><a href="#toc16" tabindex="0">電話番号からハイフンを除去する</a></li><li><a href="#toc17" tabindex="0">数字以外を一括削除する</a></li><li><a href="#toc18" tabindex="0">余分な空白をまとめて削除する</a></li><li><a href="#toc19" tabindex="0">連続する空白を半角スペース1つにまとめる</a></li></ol></li><li><a href="#toc20" tabindex="0">【実務編】REGEXREPLACE関数の応用例7選</a><ol><li><a href="#toc21" tabindex="0">メールアドレスのドメイン部分をマスキングする</a></li><li><a href="#toc22" tabindex="0">HTMLタグを削除して本文だけ取り出す</a></li><li><a href="#toc23" tabindex="0">全角・半角・長音記号のハイフンをまとめて除去する</a></li><li><a href="#toc24" tabindex="0">日付の区切り文字を統一する</a></li><li><a href="#toc25" tabindex="0">全角スペースと半角スペースを統一する</a></li><li><a href="#toc26" tabindex="0">文字列の先頭・末尾の不要文字を削除する</a></li><li><a href="#toc27" tabindex="0">動的配列で列全体を一括処理する</a></li><li><a href="#toc28" tabindex="0">郵便番号を「123-4567」の形に統一する</a></li><li><a href="#toc29" tabindex="0">住所から都道府県名を取り除く</a></li><li><a href="#toc30" tabindex="0">社員番号の表記揺れを「EMP-001」に統一する</a></li></ol></li><li><a href="#toc31" tabindex="0">キャプチャグループ（ ）で並び順を入れ替える</a><ol><li><a href="#toc32" tabindex="0">「姓 名」を「名 姓」に入れ替える</a></li><li><a href="#toc33" tabindex="0">日付フォーマット yyyy/mm/dd を dd-mm-yyyy に変換</a></li><li><a href="#toc34" tabindex="0">電話番号にハイフンを付け直す</a></li></ol></li><li><a href="#toc35" tabindex="0">LAMBDA・LET関数でよく使うパターンを使い回す</a><ol><li><a href="#toc36" tabindex="0">LET関数で入力をまとめて読みやすくする</a></li><li><a href="#toc37" tabindex="0">複数パターンを段階的に連続置換する</a></li><li><a href="#toc38" tabindex="0">LAMBDA関数で「自分専用の関数」を作る</a></li></ol></li><li><a href="#toc39" tabindex="0">REGEXREPLACEとSUBSTITUTE関数の使い分け（4つの軸で比較）</a><ol><li><a href="#toc40" tabindex="0">速度・パフォーマンス</a></li><li><a href="#toc41" tabindex="0">可読性・メンテナンス性</a></li><li><a href="#toc42" tabindex="0">バージョン互換性</a></li><li><a href="#toc43" tabindex="0">使い分け早見表</a></li></ol></li><li><a href="#toc44" tabindex="0">数式が思い通りに動かないときのデバッグ手順</a><ol><li><a href="#toc45" tabindex="0">REGEXTEST関数で段階的にパターンを検証する</a></li><li><a href="#toc46" tabindex="0">REGEXEXTRACT関数で抽出結果を確認する</a></li><li><a href="#toc47" tabindex="0">貪欲マッチを最短マッチに変える</a></li></ol></li><li><a href="#toc48" tabindex="0">REGEXREPLACE関数のよくあるエラーと対処法</a><ol><li><a href="#toc49" tabindex="0">#VALUE! エラー：無効な正規表現・非文字列</a></li><li><a href="#toc50" tabindex="0">#NAME? エラー：非対応バージョン</a></li><li><a href="#toc51" tabindex="0">置換結果が意図と違う：貪欲マッチ・エスケープ</a></li></ol></li><li><a href="#toc52" tabindex="0">正規表現3関数（REGEXTEST / REGEXEXTRACT / REGEXREPLACE）の使い分け</a></li><li><a href="#toc53" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc54" tabindex="0">まとめ：REGEXREPLACE関数で数式デバッグから解放されよう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのREGEXREPLACE関数とは？正規表現で文字列を一括置換できる関数</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数は、<strong>セルの文字列のうち正規表現パターンに一致した部分を、別の文字列に置換するExcelの関数</strong>です。読み方は「レジェックスリプレイス」です。</p>



<p class="wp-block-paragraph">2024年にMicrosoft 365へ追加された比較的新しい関数で、REGEXTEST・REGEXEXTRACTと合わせて「正規表現3関数」と呼ばれています。3関数とも同じPCRE2（Perl互換の正規表現）を採用しているので、覚えた書き方をそのまま使い回せますよ。</p>



<p class="wp-block-paragraph">固定の文字列を1種類だけ置換するならSUBSTITUTE関数で十分ですが、「数字をまとめて消したい」「特定パターンの部分を伏せ字にしたい」「複数の記号を1回の数式で削除したい」といったケースで、REGEXREPLACEが真価を発揮します。</p>



<h3 class="wp-block-heading"><span id="toc2">どんな業務シーンで使うのか</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数は次のような業務シーンで活躍します。</p>



<ul class="wp-block-list"><li>電話番号・郵便番号からハイフンを一括で取り除きたいとき</li><li>メールアドレスや個人情報の一部を伏せ字にマスキングしたいとき</li><li>余分な空白・記号・改行をまとめて除去してデータクレンジングしたいとき</li><li>HTMLタグを取り除いて本文だけ取り出したいとき</li><li>日付の区切り文字を統一したい、姓と名を入れ替えたいとき</li></ul>



<p class="wp-block-paragraph">従来のSUBSTITUTE多重ネストと比べると、数式が見違えるほどスッキリします。後から見直す自分への思いやりにもなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">ExcelのREGEXREPLACE関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021、Excel 2024などの永続ライセンス版では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li></ul>



<p class="wp-block-paragraph">お使いのバージョンが対応していないと <code>#NAME?</code> エラーになります。動かないときはまずバージョンを確認してみてくださいね。</p>



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



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



<pre class="wp-block-code"><code>=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])</code></pre>



<p class="wp-block-paragraph">必須の引数は最初の3つで、後ろの2つは省略できます。それぞれ詳しく見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc6">第1引数：テキスト</span></h3>



<p class="wp-block-paragraph">置換対象となる文字列、またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;03-1234-5678&quot;, &quot;-&quot;, &quot;&quot;)
=REGEXREPLACE(A2, &quot;-&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うことがほとんどです。</p>



<p class="wp-block-paragraph">セルが数値型のとき（例: 電話番号を数値で入力した列）は <code>#VALUE!</code> エラーになります。<code>TEXT(A2, "0")</code> のように文字列化してから渡しましょう。</p>



<h3 class="wp-block-heading"><span id="toc7">第2引数：正規表現パターン</span></h3>



<p class="wp-block-paragraph">置換したい部分を表す正規表現を、ダブルクォーテーションで囲んで指定します。</p>



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



<p class="wp-block-paragraph">上の例は「A2の中の数字を1文字ずつアスタリスクに置き換える」という意味です。<code>d</code> は「数字1文字」を表す特殊記号ですね。</p>



<h3 class="wp-block-heading"><span id="toc8">第3引数：置換文字列</span></h3>



<p class="wp-block-paragraph">マッチした部分を何に置き換えるかを指定します。空文字列 <code>""</code> を指定すれば「削除」と同じ意味になります。</p>



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



<p class="wp-block-paragraph">この例ではA2のすべての空白文字（半角・全角・タブ・改行）を削除します。<code>s</code> は「空白文字」を表すパターンです。</p>



<h3 class="wp-block-heading"><span id="toc9">第4引数：出現位置（occurrence）</span></h3>



<p class="wp-block-paragraph">何番目のマッチから置換するかを数値で指定します。省略すると0になり、<strong>すべてのマッチ</strong>を置換します。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：すべてのマッチを置換</li><li><strong>1</strong>：1番目のマッチだけを置換</li><li><strong>2</strong>：2番目のマッチだけを置換</li></ul>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;a-b-c-d&quot;, &quot;-&quot;, &quot;/&quot;, 0)  '結果: a/b/c/d
=REGEXREPLACE(&quot;a-b-c-d&quot;, &quot;-&quot;, &quot;/&quot;, 2)  '結果: a-b/c-d</code></pre>



<p class="wp-block-paragraph">「最初の1箇所だけ」「3番目だけ」のようにピンポイントで置換できる、意外と便利な引数です。指定した番号に該当するマッチがない場合は、元のテキストがそのまま返ります。</p>



<h3 class="wp-block-heading"><span id="toc10">第5引数：大文字小文字の区別（case_sensitivity）</span></h3>



<p class="wp-block-paragraph">英字を含むパターンで大文字と小文字を区別するかを指定します。省略すると0（区別する）です。</p>



<ul class="wp-block-list"><li><strong>0</strong>（省略時）：大文字と小文字を<strong>区別する</strong></li><li><strong>1</strong>：大文字と小文字を<strong>区別しない</strong></li></ul>



<pre class="wp-block-code"><code>=REGEXREPLACE(&quot;ABC abc&quot;, &quot;[a-z]&quot;, &quot;*&quot;)      '結果: ABC ***
=REGEXREPLACE(&quot;ABC abc&quot;, &quot;[a-z]&quot;, &quot;*&quot;, , 1) '結果: *** ***</code></pre>



<p class="wp-block-paragraph">第4引数を省略して第5引数だけ指定したいときは、コンマだけ書いて飛ばします（<code>, ,</code> のように）。</p>



<h2 class="wp-block-heading"><span id="toc11">正規表現の基本パターン早見表（Excel REGEXREPLACE 対応）</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数で使える正規表現はPCRE2（Perl互換の正規表現）です。REGEXTEST・REGEXEXTRACTとも共通なので、一度覚えれば3関数すべてで使えますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">文字種を表す記号</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th><th>例</th></tr></thead><tbody><tr><td><code>d</code></td><td>数字1文字（0〜9）</td><td><code>d+</code> で「123」「2026」</td></tr><tr><td><code>D</code></td><td>数字以外の1文字</td><td><code>D+</code> で「ABC」「あ」</td></tr><tr><td><code>w</code></td><td>英数字またはアンダースコア</td><td><code>w+</code> で単語</td></tr><tr><td><code>W</code></td><td>単語文字以外</td><td>記号・空白など</td></tr><tr><td><code>s</code></td><td>空白文字（半角スペース・タブ・改行）</td><td>連続スペースの整形</td></tr><tr><td><code>S</code></td><td>空白以外の文字</td><td>単語の塊</td></tr><tr><td><code>.</code></td><td>任意の1文字（改行を除く）</td><td>ワイルドカード代わり</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc13">量を表す記号（量指定子）</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th></tr></thead><tbody><tr><td><code>*</code></td><td>直前の0回以上の繰り返し</td></tr><tr><td><code>+</code></td><td>直前の1回以上の繰り返し</td></tr><tr><td><code>?</code></td><td>直前の0または1回</td></tr><tr><td><code>{n}</code></td><td>直前のn回の繰り返し</td></tr><tr><td><code>{n,m}</code></td><td>直前のn〜m回の繰り返し</td></tr><tr><td><code>*?</code> <code>+?</code></td><td>最短一致（後述の貪欲マッチ対策）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc14">位置・選択を表す記号</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>記号</th><th>意味</th></tr></thead><tbody><tr><td><code>^</code></td><td>文字列の先頭</td></tr><tr><td><code>$</code></td><td>文字列の末尾</td></tr><tr><td><code></td><td></code></td><td>または（OR）</td></tr><tr><td><code>[abc]</code></td><td>a・b・cのいずれか1文字</td></tr><tr><td><code>[a-z]</code></td><td>a〜zのいずれか1文字</td></tr><tr><td><code>[^0-9]</code></td><td>0〜9以外の1文字</td></tr><tr><td><code>(...)</code></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></code> でエスケープします。「.」を消すなら <code>"."</code>、「(」を消すなら <code>"("</code> のように書きます。</p></blockquote>



<p class="wp-block-paragraph">置換文字列の側では、後述する <code>$1</code> <code>$2</code> といった「キャプチャグループ参照」が使えます。これがREGEXREPLACE関数の真骨頂ですよ。</p>



<h2 class="wp-block-heading"><span id="toc15">【基本編】REGEXREPLACE関数の使い方をコピペ数式で学ぶ</span></h2>



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。まずは使用頻度の高い4パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc16">電話番号からハイフンを除去する</span></h3>



<p class="wp-block-paragraph">A列に入った電話番号からハイフンをまとめて削除します。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>03-1234-5678</td><td>0312345678</td></tr><tr><td>090-1234-5678</td><td>09012345678</td></tr><tr><td>06-1111-2222</td><td>0611112222</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">SUBSTITUTE関数でも同じことはできますが、REGEXREPLACEなら次に紹介する「全角ハイフンや長音記号もまとめて消す」拡張がそのまま書けるのが強みです。</p>



<h3 class="wp-block-heading"><span id="toc17">数字以外を一括削除する</span></h3>



<p class="wp-block-paragraph">電話番号欄に括弧や全角スペースなどが混じっていても、一発で数字だけにできます。</p>



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



<p class="wp-block-paragraph"><code>D</code> は「数字以外の1文字」を表す記号です。「03-1234-5678（内線1）」のような入力でも、ハイフン・括弧・空白・「内線」のような文字までまとめて消えて「031234567815」のように数字だけが残ります。逆に「数字だけ消す」なら <code>"d"</code> を指定します。</p>



<h3 class="wp-block-heading"><span id="toc18">余分な空白をまとめて削除する</span></h3>



<p class="wp-block-paragraph">セル内に混じった全角・半角スペース、タブ、改行をまとめて除去します。</p>



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



<p class="wp-block-paragraph"><code>s+</code> は「1文字以上の連続した空白」を表します。Webサイトや別ファイルからコピペしたデータに見えない空白が紛れているときの掃除にぴったりです。改行コードなどの制御文字だけを取り除きたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-clean/">ExcelのCLEAN関数の使い方</a>もあわせて確認してみてください。</p>



<h3 class="wp-block-heading"><span id="toc19">連続する空白を半角スペース1つにまとめる</span></h3>



<p class="wp-block-paragraph">空白を完全に消すのではなく、連続分だけ1つに整えたい場合はこちらです。</p>



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



<p class="wp-block-paragraph">「Hello   World」→「Hello World」のように整形されます。レポートや議事録のコピペ整形で重宝しますよ。空白を完全に消したい場合とは置換文字列が違うだけなので、用途で使い分けてください。</p>



<h2 class="wp-block-heading"><span id="toc20">【実務編】REGEXREPLACE関数の応用例7選</span></h2>



<p class="wp-block-paragraph">基本パターンに慣れたら、実務でよく出てくるシーンを片付けていきましょう。コピペでそのまま使える数式を集めました。</p>



<h3 class="wp-block-heading"><span id="toc21">メールアドレスのドメイン部分をマスキングする</span></h3>



<p class="wp-block-paragraph">個人情報保護のために、メールアドレスの <code>@</code> より後ろを伏せ字にする例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;@.+$&quot;, &quot;@***&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>taro@example.com</td><td>taro@***</td></tr><tr><td>hanako@biz-tactics.co.jp</td><td>hanako@***</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>@.+$</code> は「アットマーク＋1文字以上の末尾まで」を意味します。資料公開やサンプルデータ作成のときに重宝するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc22">HTMLタグを削除して本文だけ取り出す</span></h3>



<p class="wp-block-paragraph">Webから貼り付けた文字列からHTMLタグをまとめて除去する例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;&lt;[^&gt;]+&gt;&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code><[^>]+></code> は「<code><</code> で始まり <code>></code> 以外の文字が1つ以上続き <code>></code> で閉じる部分」を表します。「<code><p>こんにちは<br>世界</p></code>」→「こんにちは世界」のように、タグだけがきれいに消えます。</p>



<h3 class="wp-block-heading"><span id="toc23">全角・半角・長音記号のハイフンをまとめて除去する</span></h3>



<p class="wp-block-paragraph">電話番号の表記揺れ対策です。半角ハイフン・全角ハイフン・マイナス記号・長音記号をまとめて削除します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[-－−ー]&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">角括弧 <code>[...]</code> の中に「消したい文字」を並べるだけです。SUBSTITUTEでやろうとすると4重ネストが必要なところを、1つの数式で書けてしまいます。同じ要領でカンマ・ピリオド・スラッシュなど複数の記号もまとめて処理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc24">日付の区切り文字を統一する</span></h3>



<p class="wp-block-paragraph"><code>/</code> <code>.</code> <code>-</code> など複数の区切りが混在した日付を、ハイフン区切りに統一する例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[/.-]&quot;, &quot;-&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>2026/04/09</td><td>2026-04-09</td></tr><tr><td>2026.04.09</td><td>2026-04-09</td></tr><tr><td>2026-04-09</td><td>2026-04-09</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">角括弧内のハイフンは <code>-</code> とエスケープしておくと安全です。これで取引先ごとに表記がバラバラな日付も、後続の集計関数で扱える形に整います。</p>



<h3 class="wp-block-heading"><span id="toc25">全角スペースと半角スペースを統一する</span></h3>



<p class="wp-block-paragraph">日本語の名簿で「山田　太郎」と「山田 太郎」が混在しているときの整形です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;[ 　]+&quot;, &quot; &quot;)</code></pre>



<p class="wp-block-paragraph">角括弧の中に半角スペースと全角スペースを並べてあります。連続したスペースも半角1つに整います。並び替えや重複チェックの前処理に便利です。</p>



<h3 class="wp-block-heading"><span id="toc26">文字列の先頭・末尾の不要文字を削除する</span></h3>



<p class="wp-block-paragraph">データの先頭や末尾に紛れ込んだ記号を削るパターンです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^[s]+|[s]+$&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph"><code>^[s]+</code> で先頭の空白、<code>[s]+$</code> で末尾の空白を指定し、<code>|</code>（OR）で両方を対象にしています。<a href="https://mashukabu.com/excel-function-howto-use-trim/">ExcelのTRIM関数の使い方</a>でも前後の半角空白は削れますが、TRIM関数は全角空白には対応していません。REGEXREPLACE関数なら全角空白・タブ・改行まで一気に処理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc27">動的配列で列全体を一括処理する</span></h3>



<p class="wp-block-paragraph">REGEXREPLACE関数は動的配列に対応しているので、範囲を渡すだけで列全体を処理できます。</p>



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



<p class="wp-block-paragraph">B2セルに上の数式を入れるだけで、A2〜A100のすべての電話番号からハイフンが消えてB列にスピルします。1行ずつ数式をコピーする手間が省けます。</p>



<h3 class="wp-block-heading"><span id="toc28">郵便番号を「123-4567」の形に統一する</span></h3>



<p class="wp-block-paragraph">7桁の数字だけで入力された郵便番号に、ハイフンを付け直す例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;(d{3})(d{4})&quot;, &quot;$1-$2&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>1234567</td><td>123-4567</td></tr><tr><td>1000001</td><td>100-0001</td></tr><tr><td>5300001</td><td>530-0001</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">先頭3桁を <code>(d{3})</code>、続く4桁を <code>(d{4})</code> でキャプチャして、置換側で <code>$1-$2</code> とハイフンを挟んで出力しています。すでにハイフン付きの「123-4567」が混ざっている名簿なら、先にハイフンを消してから付け直すと安全です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(REGEXREPLACE(A2, &quot;D&quot;, &quot;&quot;), &quot;(d{3})(d{4})&quot;, &quot;$1-$2&quot;)</code></pre>



<p class="wp-block-paragraph">内側で数字以外を削除してから、外側で「3桁-4桁」に整える二段構えですね。郵便番号を数値型で入力していると先頭の0が落ちてしまうので、A列は文字列として扱ってください。</p>



<h3 class="wp-block-heading"><span id="toc29">住所から都道府県名を取り除く</span></h3>



<p class="wp-block-paragraph">「東京都千代田区」のような住所文字列から、先頭の都道府県名だけを削除して市区町村以降を取り出す例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(東京都|北海道|京都府|大阪府|.{2,3}県)&quot;, &quot;&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>東京都千代田区</td><td>千代田区</td></tr><tr><td>神奈川県横浜市西区</td><td>横浜市西区</td></tr><tr><td>鹿児島県鹿児島市</td><td>鹿児島市</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ここでひとつ落とし穴があります。「<code>^(..[都道府県])</code>（先頭の2文字＋都道府県）」のように手を抜くと、「神奈川県」「和歌山県」「鹿児島県」のような4文字の県名でうまく削れません。そこで、文字数が固定の「東京都・北海道・京都府・大阪府」だけを先に列挙し、残りの県を <code>.{2,3}県</code>（2〜3文字＋県）でまとめて拾っています。<code>|</code>（OR）で並べているだけなので、見た目ほど難しくありませんよ。</p>



<h3 class="wp-block-heading"><span id="toc30">社員番号の表記揺れを「EMP-001」に統一する</span></h3>



<p class="wp-block-paragraph">「EMP-001」「EMP001」「001」のように書式がバラバラな社員コードを、ハイフン付きの形にそろえる例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(?:EMP-?)?(d+)$&quot;, &quot;EMP-$1&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>EMP-001</td><td>EMP-001</td></tr><tr><td>EMP001</td><td>EMP-001</td></tr><tr><td>001</td><td>EMP-001</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>(?:EMP-?)?</code> は「『EMP』または『EMP-』があってもなくてもよい」という意味で、<code>(?:...)</code> は結果に取り込まない補助的なグループです。続く <code>(d+)</code> で数字部分だけをキャプチャし、置換側の <code>EMP-$1</code> で接頭辞とハイフンを付け直しています。「emp001」のように小文字も拾いたいときは、第5引数に1を指定して大文字小文字を区別しないようにすればOKです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(?:EMP-?)?(d+)$&quot;, &quot;EMP-$1&quot;, , 1)</code></pre>



<p class="wp-block-paragraph">部署コードや商品コードなど、社内の番号体系を整えるときにそのまま応用できますよ。</p>



<h2 class="wp-block-heading"><span id="toc31">キャプチャグループ（ ）で並び順を入れ替える</span></h2>



<p class="wp-block-paragraph">ここからはREGEXREPLACE関数の真骨頂、キャプチャグループを使った置換です。丸括弧 <code>()</code> で囲んだ部分は「キャプチャグループ」となり、置換文字列の中で <code>$1</code> <code>$2</code> <code>$3</code> … として参照できます。</p>



<h3 class="wp-block-heading"><span id="toc32">「姓 名」を「名 姓」に入れ替える</span></h3>



<p class="wp-block-paragraph">名簿の並び順を入れ替える例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(S+)s+(S+)$&quot;, &quot;$2 $1&quot;)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>A列（入力値）</th><th>B列（=REGEXREPLACEの結果）</th></tr></thead><tbody><tr><td>山田 太郎</td><td>太郎 山田</td></tr><tr><td>Suzuki Hanako</td><td>Hanako Suzuki</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>(S+)</code> は「空白以外の1文字以上」をキャプチャするパターンで、置換側の <code>$2 $1</code> で順番を入れ替えています。海外向け資料を作るときの名前並び替えがワンクリックです。</p>



<h3 class="wp-block-heading"><span id="toc33">日付フォーマット yyyy/mm/dd を dd-mm-yyyy に変換</span></h3>



<p class="wp-block-paragraph"><code>yyyy/mm/dd</code> 形式の日付文字列を、<code>dd-mm-yyyy</code> 形式に並び替える例です。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;(d{4})/(d{2})/(d{2})&quot;, &quot;$3-$2-$1&quot;)</code></pre>



<p class="wp-block-paragraph">「2026/04/09」→「09-04-2026」のように、年月日のパーツを順番入れ替えで出力できます。海外フォーマット対応のレポートを作るときに、元データを壊さず表示だけ整えられますよ。</p>



<h3 class="wp-block-heading"><span id="toc34">電話番号にハイフンを付け直す</span></h3>



<p class="wp-block-paragraph">ハイフンなしの番号にハイフンを再付与するパターンです。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;^(d{2,4})(d{2,4})(d{4})$&quot;, &quot;$1-$2-$3&quot;)</code></pre>



<p class="wp-block-paragraph">「0312345678」→「03-1234-5678」のような出力になります。元データを壊さずに、見た目だけ揃えたいときに便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc35">LAMBDA・LET関数でよく使うパターンを使い回す</span></h2>



<p class="wp-block-paragraph">同じ正規表現を何度も書いていると、修正のたびにあちこち直すことになって大変です。LET関数やLAMBDA関数と組み合わせれば、よく使うパターンを一元管理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc36">LET関数で入力をまとめて読みやすくする</span></h3>



<p class="wp-block-paragraph">LET関数を使うと、処理対象を変数に置いて数式を見通しよくできます。</p>



<pre class="wp-block-code"><code>=LET(
  input, A2:A100,
  REGEXREPLACE(input, &quot;[-－−ー]&quot;, &quot;&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>input</code> という名前でA2:A100の範囲を束ねてから、REGEXREPLACEに渡しています。範囲を何度も書かずに済むので、数式が長くなっても何をしているか一目で分かります。</p>



<h3 class="wp-block-heading"><span id="toc37">複数パターンを段階的に連続置換する</span></h3>



<p class="wp-block-paragraph">「空白を整えて → ハイフンを統一して → 全角カッコを消す」のように、複数の置換を順番に重ねたいときも、LET関数で段階を分けると読みやすくなります。</p>



<pre class="wp-block-code"><code>=LET(
  step1, REGEXREPLACE(A2, &quot;s+&quot;, &quot; &quot;),
  step2, REGEXREPLACE(step1, &quot;[-－−ー]&quot;, &quot;-&quot;),
  REGEXREPLACE(step2, &quot;[（）]&quot;, &quot;&quot;)
)</code></pre>



<p class="wp-block-paragraph"><code>step1</code> の結果を <code>step2</code> で受け取り、最後にもう一段かける流れです。REGEXREPLACEを直接3重にネストすると括弧だらけで読めなくなりますが、この書き方なら各ステップの意図がはっきりしますね。</p>



<h3 class="wp-block-heading"><span id="toc38">LAMBDA関数で「自分専用の関数」を作る</span></h3>



<p class="wp-block-paragraph">毎回書くのが面倒なパターンは、LAMBDA関数で名前を付けて自作の関数にしてしまいましょう。手順は次のとおりです。</p>



<ol class="wp-block-list"><li>リボンの「数式」タブ →「名前の定義」をクリック</li><li>「名前」に好きな関数名（例: <code>ハイフン除去</code>）を入力</li><li>「参照範囲」に <code>=LAMBDA(text, REGEXREPLACE(text, "[-－−ー]", ""))</code> と入力</li><li>これで <code>=ハイフン除去(A2)</code> のように、どのセルからでも呼び出せます</li></ol>



<p class="wp-block-paragraph">全角・半角・長音記号のハイフンをまとめて消す処理を、<code>ハイフン除去</code> という名前で何度でも使い回せるようになります。チームで共有するブックに登録しておけば、正規表現に不慣れな同僚も関数名を呼び出すだけで使えて便利ですよ。なお、LET関数・LAMBDA関数ともにREGEXREPLACE関数と同じくMicrosoft 365で利用できます。</p>



<h2 class="wp-block-heading"><span id="toc39">REGEXREPLACEとSUBSTITUTE関数の使い分け（4つの軸で比較）</span></h2>



<p class="wp-block-paragraph">REGEXREPLACEとよく比較されるのがSUBSTITUTE関数です。どちらも「文字列置換」が目的ですが、得意分野が異なります。4つの観点で整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc40">速度・パフォーマンス</span></h3>



<p class="wp-block-paragraph">固定の1文字を置換するだけなら、SUBSTITUTEの方がわずかに高速です。10万行を超える大量データで処理速度が問題になるなら、SUBSTITUTEを選ぶ価値があります。</p>



<h3 class="wp-block-heading"><span id="toc41">可読性・メンテナンス性</span></h3>



<p class="wp-block-paragraph">複数の文字を消したい場合、SUBSTITUTEは多重ネストが必要で数式が読みにくくなります。一方REGEXREPLACEは <code>[abc]</code> の文字クラスで1行にまとめられるため、後から修正するのがラクです。</p>



<h3 class="wp-block-heading"><span id="toc42">バージョン互換性</span></h3>



<p class="wp-block-paragraph">SUBSTITUTEはExcel 全バージョンで使えます。REGEXREPLACEはMicrosoft 365（とExcel for the web）限定です。共有ファイルで相手のバージョンが不明なら、SUBSTITUTEの方が安全です。</p>



<h3 class="wp-block-heading"><span id="toc43">使い分け早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>置換対象</th><th>向いているケース</th><th>使えるバージョン</th></tr></thead><tbody><tr><td>SUBSTITUTE</td><td>固定文字列</td><td>「-」を「」に、など決まった文字の単純置換</td><td>全バージョン</td></tr><tr><td>REGEXREPLACE</td><td>正規表現パターン</td><td>パターン置換、複数文字まとめて削除、並び替え</td><td>M365 / Web</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">固定文字列の置換ならSUBSTITUTE、パターン置換と並び替えならREGEXREPLACE、と覚えておけば迷わずに済みますよ。SUBSTITUTEの基本も復習したい方は<a href="https://mashukabu.com/excel-function-howto-use-substitute/">ExcelのSUBSTITUTE関数の使い方</a>もあわせてご覧ください。</p>



<h2 class="wp-block-heading"><span id="toc44">数式が思い通りに動かないときのデバッグ手順</span></h2>



<p class="wp-block-paragraph">正規表現は強力ですが、最初は思った通りに動かないことも多いです。そんなときは姉妹関数を使った「三段検証」で原因を切り分けましょう。</p>



<h3 class="wp-block-heading"><span id="toc45">REGEXTEST関数で段階的にパターンを検証する</span></h3>



<p class="wp-block-paragraph">まずは「そもそもパターンが当たっているか」を確認します。</p>



<pre class="wp-block-code"><code>=REGEXTEST(A2, &quot;あなたのパターン&quot;)</code></pre>



<p class="wp-block-paragraph">TRUEが返るならパターンはマッチしています。FALSEが返るなら、パターンの記述ミス（エスケープ忘れ、文字クラスの書き間違いなど）を疑いましょう。詳しくは<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>で解説しています。</p>



<h3 class="wp-block-heading"><span id="toc46">REGEXEXTRACT関数で抽出結果を確認する</span></h3>



<p class="wp-block-paragraph">パターンが当たっていることがわかったら、次は「どこを抽出しているか」を目で見て確認します。</p>



<pre class="wp-block-code"><code>=REGEXEXTRACT(A2, &quot;あなたのパターン&quot;)</code></pre>



<p class="wp-block-paragraph">抽出された部分が想定通りなら、REGEXREPLACE に切り替えれば成功します。想定より広い範囲が抽出されているなら「貪欲マッチ」が原因かもしれません（次項参照）。<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">ExcelのREGEXEXTRACT関数の使い方</a>も参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc47">貪欲マッチを最短マッチに変える</span></h3>



<p class="wp-block-paragraph"><code>*</code> <code>+</code> <code>.+</code> などの量指定子はデフォルトで「最長一致（貪欲マッチ）」になります。たとえば <code><.+></code> は <code><p>本文</p></code> 全体にマッチしてしまうので、タグ単位で消したいなら最短マッチに変えましょう。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(A2, &quot;&lt;.+?&gt;&quot;, &quot;&quot;)    'OK：タグ単位で削除
=REGEXREPLACE(A2, &quot;&lt;[^&gt;]+&gt;&quot;, &quot;&quot;)  'OK：より厳密な書き方</code></pre>



<p class="wp-block-paragraph"><code>?</code> を付けると「できるだけ少なく一致」する最短マッチに変わります。<code>[^>]+</code> のような文字クラスで範囲を限定する書き方もよく使うテクニックです。</p>



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



<p class="wp-block-paragraph">REGEXREPLACE関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc49">#VALUE! エラー：無効な正規表現・非文字列</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 第2引数に無効な正規表現を指定した、または第1引数に数値型のセルを直接渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: パターンを見直し、特にカッコや特殊記号のエスケープ忘れに注意しましょう。数値セルを渡す場合はTEXT関数で文字列化してから渡します。</p>



<pre class="wp-block-code"><code>=REGEXREPLACE(TEXT(A2, &quot;0&quot;), &quot;0&quot;, &quot;*&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc50">#NAME? エラー：非対応バージョン</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: REGEXREPLACE関数に対応していないバージョンのExcelで使っている、または関数名のスペルミス。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365のサブスクリプションで最新バージョンにアップデートしてください。Excel 2019・2021・2024（永続版）などでは使えません。関数名のスペルもあわせて確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc51">置換結果が意図と違う：貪欲マッチ・エスケープ</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 「貪欲マッチ」が想定より広く一致している、または特殊記号のエスケープ忘れ。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: <code>.+?</code> の最短マッチに変えるか、<code>[^>]+</code> のように文字クラスで範囲を限定します。エスケープが必要な記号は <code>.</code> <code>(</code> <code>)</code> のように <code></code> を前に付けます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>#VALUE!</td><td>無効な正規表現・数値型セル</td><td>パターン見直し・TEXTで文字列化</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr><tr><td>置換結果がおかしい</td><td>貪欲マッチ・エスケープ忘れ</td><td><code>.+?</code> か <code>[^>]+</code>、<code></code> でエスケープ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーの原因はほとんどが正規表現の記述ミスです。落ち着いて1行ずつ数式を見直せば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc52">正規表現3関数（REGEXTEST / REGEXEXTRACT / REGEXREPLACE）の使い分け</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数には2つの姉妹関数があります。3つセットで覚えておくと、正規表現を使ったデータ処理が一気にラクになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>戻り値</th><th>用途</th></tr></thead><tbody><tr><td>REGEXTEST</td><td>TRUE / FALSE</td><td>パターンに一致するかを判定する</td></tr><tr><td>REGEXEXTRACT</td><td>一致した文字列</td><td>パターンに一致する部分を抜き出す</td></tr><tr><td>REGEXREPLACE</td><td>置換後の文字列</td><td>パターンに一致する部分を別の文字列に置き換える</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">使い分けのイメージは次のとおりです。</p>



<ul class="wp-block-list"><li>「メールアドレスとして正しいか？」→ REGEXTEST</li><li>「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT</li><li>「メールアドレスのドメインを伏せ字にしたい」→ REGEXREPLACE</li></ul>



<p class="wp-block-paragraph">3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTやREGEXEXTRACTで覚えた知識は、そのままREGEXREPLACEでも活きますよ。</p>



<p class="wp-block-paragraph">姉妹記事として、<a href="https://mashukabu.com/excel-function-howto-use-regextest/">ExcelのREGEXTEST関数の使い方</a>と<a href="https://mashukabu.com/excel-function-howto-use-regexextract/">ExcelのREGEXEXTRACT関数の使い方</a>もぜひ参考にしてください。3関数まとめて身につけると、データクレンジング作業の生産性がぐっと上がります。Googleスプレッドシートで同等の処理を行いたい場合は、<a href="https://mashukabu.com/spreadsheet-regexreplace-function/">スプレッドシートのREGEXREPLACE関数の使い方</a>もあわせてどうぞ。</p>



<h2 class="wp-block-heading"><span id="toc53">よくある質問（FAQ）</span></h2>



<p class="wp-block-paragraph">[faq q="REGEXREPLACE関数はExcel 2021で使えますか？" a="使えません。REGEXREPLACE関数はMicrosoft 365のサブスクリプション版（Windows/Mac/Web）でのみ利用できます。Excel 2021・2019などの買い切り版や旧バージョンでは#NAME?エラーになります。バージョンは「ファイル」→「アカウント」→「製品情報」で確認できます。"]</p>



<p class="wp-block-paragraph">[faq q="SUBSTITUTE関数とREGEXREPLACE関数はどう使い分けますか？" a="置換対象が固定の文字列（例: ハイフン「-」だけを削除）ならSUBSTITUTE関数が適しています。一方、パターンで置換したい場合（例: 連続した数字を*に置換、複数の記号をまとめて削除）はREGEXREPLACE関数が便利です。またSUBSTITUTEは全Excelバージョンで使えますが、REGEXREPLACEはMicrosoft 365専用という制約があります。"]</p>



<p class="wp-block-paragraph">[faq q="正規表現のパターンが合っているか確認する方法はありますか？" a="REGEXTEST関数で確認するのがおすすめです。=REGEXTEST(A2, "パターン")でTRUEが返れば、パターンは正しくマッチしています。FALSEの場合は正規表現の記述ミスを疑ってください。さらにREGEXEXTRACT関数で「どの部分がマッチしているか」を目で見て確認すると、REGEXREPLACE関数の置換結果のズレを特定しやすくなります。"]</p>



<p class="wp-block-paragraph">[faq q="全角・半角の文字を同時に置換できますか？" a="できます。文字クラス（角括弧 [ ]）を使って複数の文字をまとめて指定します。例えば半角ハイフンと全角ハイフンを両方削除したい場合は =REGEXREPLACE(A2, "[-－]", "") のように書きます。同様に、半角スペースと全角スペースを一度に削除する場合は =REGEXREPLACE(A2, "[ 　]+", "") と書けます。"]</p>



<p class="wp-block-paragraph">[faq q="GoogleスプレッドシートのREGEXREPLACE関数と同じ書き方で使えますか？" a="基本的な書き方はほぼ共通ですが、正規表現エンジンが異なる点に注意が必要です。ExcelのREGEXREPLACEはPCRE2（Perl互換）、GoogleスプレッドシートはRE2というGoogle製のエンジンを使っています。数字を表すパターンや文字クラス、キャプチャグループの $1 参照など日常的な書き方は両方で同じように動きますが、RE2は後読みなどの高度な機能に対応していません。またスプレッドシート版は引数がテキスト・パターン・置換の3つのみで、Excelの第4引数（出現位置）・第5引数（大文字小文字の区別）に相当するものはありません。"]</p>



<p class="wp-block-paragraph">[faq q="一つの数式で複数パターンを連続置換できますか？" a="できます。方法は2つあります。1つ目は文字クラス（角括弧）で複数の文字をまとめる方法で、同じ種類の削除ならこれが一番シンプルです。2つ目はREGEXREPLACE関数を入れ子（ネスト）にする方法で、ハイフン除去のあとに空白除去をかけるなど、異なる置換を順番に適用したいときに使います。ネストが深くなって読みにくいときは、LET関数で処理を段階に分けると見通しがよくなります。"]</p>



<h2 class="wp-block-heading"><span id="toc54">まとめ：REGEXREPLACE関数で数式デバッグから解放されよう</span></h2>



<p class="wp-block-paragraph">REGEXREPLACE関数は、Excelのセル上で正規表現を使った柔軟な文字列置換ができる関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=REGEXREPLACE(テキスト, 正規表現パターン, 置換文字列, [出現位置], [大文字小文字の区別])</code></li><li>Microsoft 365のサブスクリプションが必要（Excel 2019・2021・2024の永続版は不可）</li><li>第4引数でN番目のマッチだけを置換することも可能</li><li>電話番号のハイフン除去・空白削除・HTMLタグ削除などデータクレンジングで大活躍</li><li>全角・半角・長音記号など日本語特有の表記揺れも <code>[...]</code> でまとめて処理できる</li><li>キャプチャグループ <code>()</code> と <code>$1</code> <code>$2</code> で並び順の入れ替えやフォーマット変換ができる</li><li>固定文字列ならSUBSTITUTE、パターン置換ならREGEXREPLACEと使い分ける</li><li>思い通りに動かないときはREGEXTEST→REGEXEXTRACTで段階的に検証する</li><li>姉妹関数にREGEXTEST（判定）とREGEXEXTRACT（抽出）がある</li></ul>



<p class="wp-block-paragraph">まずは <code>=REGEXREPLACE("03-1234-5678", "-", "")</code> のようなシンプルな置換から試してみてください。一度コツをつかめば、SUBSTITUTEの多重ネストとは比較にならない便利さを実感できますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-regexreplace/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのDETECTLANGUAGE関数の使い方｜セルの言語を自動判定する</title>
		<link>https://mashukabu.com/excel-function-howto-use-detectlanguage/</link>
					<comments>https://mashukabu.com/excel-function-howto-use-detectlanguage/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 04:10:46 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[DETECTLANGUAGE関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[FILTER関数]]></category>
		<category><![CDATA[IFERROR関数]]></category>
		<category><![CDATA[Microsoft 365]]></category>
		<category><![CDATA[SWITCH関数]]></category>
		<category><![CDATA[TRANSLATE関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[多言語データ]]></category>
		<category><![CDATA[言語検出]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=5888</guid>

					<description><![CDATA[ExcelのDETECTLANGUAGE関数の使い方を初心者向けに解説します。構文・戻り値（ISO 639-1言語コード）の基本から、顧客リストの言語分類、多言語アンケートの振り分け、SWITCH関数との組み合わせで言語名を日本語表示する方法、TRANSLATE関数との連携で自動翻訳する手順まで、実務で使える数式を豊富に紹介。対応言語一覧・よくあるエラーと対処法・FAQも完備した完全ガイドです。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「海外の顧客から届いたメール、英語なのかスペイン語なのか見分けるだけでもひと苦労」「多言語アンケートの自由記述欄を言語別に集計したい」。グローバル業務を担当していると、こんな場面が増えていますよね。</p>



<p class="wp-block-paragraph">1件ずつ目視で判定するのは現実的ではありません。数百件のリストを前にため息が出てしまうのが正直なところです。</p>



<p class="wp-block-paragraph">そんなときに頼りになるのがExcelのDETECTLANGUAGE関数です。セルに入っている文字列を解析して、使われている言語を自動で判定してくれます。</p>



<p class="wp-block-paragraph">この記事では、ExcelのDETECTLANGUAGE関数の使い方を基本から実務の応用例まで解説します。SWITCH関数との組み合わせやTRANSLATE関数との連携、エラー対処やFAQまでまとめましたので、ぜひ参考にしてください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ExcelのDETECTLANGUAGE関数とは？</a><ol><li><a href="#toc2" tabindex="0">どんなときに使う関数か</a></li><li><a href="#toc3" tabindex="0">利用条件（Microsoft 365が必須）</a></li><li><a href="#toc4" tabindex="0">似ている関数との違い</a></li></ol></li><li><a href="#toc5" tabindex="0">DETECTLANGUAGE関数の構文と戻り値</a><ol><li><a href="#toc6" tabindex="0">基本構文</a></li><li><a href="#toc7" tabindex="0">引数：テキスト</a></li><li><a href="#toc8" tabindex="0">戻り値：ISO 639-1 言語コード</a></li><li><a href="#toc9" tabindex="0">スピル機能でまとめて判定</a></li></ol></li><li><a href="#toc10" tabindex="0">Excel DETECTLANGUAGE関数の基本的な使い方</a><ol><li><a href="#toc11" tabindex="0">1つのセルの言語を判定する</a></li><li><a href="#toc12" tabindex="0">複数セルの言語を一括判定する</a></li><li><a href="#toc13" tabindex="0">IF関数と組み合わせて日本語か判定する</a></li><li><a href="#toc14" tabindex="0">直接文字列を渡してテストする</a></li><li><a href="#toc15" tabindex="0">判定結果と元の文字列を並べて確認する</a></li></ol></li><li><a href="#toc16" tabindex="0">実践的な使い方・応用例</a><ol><li><a href="#toc17" tabindex="0">グローバル顧客リストを言語別に分類する</a></li><li><a href="#toc18" tabindex="0">多言語アンケートを言語別に振り分ける</a></li><li><a href="#toc19" tabindex="0">FILTER関数と組み合わせて英語の行だけ抽出する</a></li><li><a href="#toc20" tabindex="0">TRANSLATE関数と連携して自動翻訳する</a></li><li><a href="#toc21" tabindex="0">IFERRORでエラー時のラベルを付ける</a></li><li><a href="#toc22" tabindex="0">条件付き書式で言語を色分けする</a></li><li><a href="#toc23" tabindex="0">Power Queryと組み合わせて定期処理を自動化する</a></li><li><a href="#toc24" tabindex="0">ピボットテーブルで言語別の傾向分析</a></li><li><a href="#toc25" tabindex="0">XLOOKUPで言語コード→言語名の変換テーブルを引く</a></li></ol></li><li><a href="#toc26" tabindex="0">短文・空白・数字のみセルでの挙動</a><ol><li><a href="#toc27" tabindex="0">空白セルを渡した場合</a></li><li><a href="#toc28" tabindex="0">数字だけのセル</a></li><li><a href="#toc29" tabindex="0">短すぎる文字列</a></li><li><a href="#toc30" tabindex="0">複数言語が混在した文字列</a></li><li><a href="#toc31" tabindex="0">記号や絵文字だけのセル</a></li></ol></li><li><a href="#toc32" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc33" tabindex="0">Text Too Long エラー</a></li><li><a href="#toc34" tabindex="0">Error in Value エラー</a></li><li><a href="#toc35" tabindex="0">Request Throttled エラー</a></li><li><a href="#toc36" tabindex="0">#NAME? エラー</a></li><li><a href="#toc37" tabindex="0">#BUSY! / #CONNECT! エラー</a></li><li><a href="#toc38" tabindex="0">#VALUE! エラー</a></li></ol></li><li><a href="#toc39" tabindex="0">DETECTLANGUAGE関数を使う際の注意点</a><ol><li><a href="#toc40" tabindex="0">クラウド経由でデータが送信される</a></li><li><a href="#toc41" tabindex="0">大量呼び出しはパフォーマンスに影響する</a></li><li><a href="#toc42" tabindex="0">判定結果は完全ではない</a></li><li><a href="#toc43" tabindex="0">Mac版・Web版の挙動差</a></li><li><a href="#toc44" tabindex="0">共有ブックでの再計算挙動</a></li><li><a href="#toc45" tabindex="0">バックアップを取ってから一括判定を流す</a></li></ol></li><li><a href="#toc46" tabindex="0">DETECTLANGUAGE関数が返す主な言語コード一覧</a><ol><li><a href="#toc47" tabindex="0">ビジネスでよく使う言語コード早見表</a></li><li><a href="#toc48" tabindex="0">言語コードを日本語名に変換する実用例</a></li><li><a href="#toc49" tabindex="0">IF関数で「対応言語かどうか」を判定する</a></li></ol></li><li><a href="#toc50" tabindex="0">よくある質問（FAQ）</a></li><li><a href="#toc51" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">DETECTLANGUAGE関数は、<strong>セルの文字列を解析して使われている言語を判定するExcelの関数</strong>です。読み方は「ディテクトランゲージ」で、判定結果はISO 639-1形式の2文字の言語コードで返ります。</p>



<p class="wp-block-paragraph">内部ではMicrosoft Translation Services（クラウドの翻訳サービス）を利用しているため、インターネット接続が必須です。簡単な単語から長文まで幅広い言語を判定してくれますよ。</p>



<p class="wp-block-paragraph">比較的新しい関数ですが、使い方はとてもシンプルです。引数は1つだけなので、初めてでも迷いません。</p>



<h3 class="wp-block-heading"><span id="toc2">どんなときに使う関数か</span></h3>



<p class="wp-block-paragraph">ExcelのDETECTLANGUAGE関数は次のような場面で活躍します。</p>



<ul class="wp-block-list"><li>グローバル顧客リストを言語別に分類したいとき</li><li>多言語アンケートの自由記述を言語別に振り分けたいとき</li><li>海外からの問い合わせメールを担当者別にアサインしたいとき</li><li>TRANSLATE関数（指定した言語に翻訳する関数）と組み合わせて多言語データを一括翻訳したいとき</li><li>SNSコメントやレビュー本文を地域別に集計したいとき</li><li>海外取引先から届くExcelシートの言語をチェックして自動仕分けしたいとき</li></ul>



<p class="wp-block-paragraph">「どの言語か分からないけどとりあえず仕分けたい」というシーンにぴったりの関数です。Google翻訳やDeepLに1件ずつコピペして調べていた作業が、関数1つで終わってしまいますよ。</p>



<h3 class="wp-block-heading"><span id="toc3">利用条件（Microsoft 365が必須）</span></h3>



<p class="wp-block-paragraph">DETECTLANGUAGE関数を使うには、Microsoft 365のサブスクリプションが必要です。永続ライセンス版のExcel 2019・Excel 2021・LTSC 2024では使えません。</p>



<p class="wp-block-paragraph">対応環境は次のとおりです。</p>



<ul class="wp-block-list"><li>Excel for Microsoft 365（Windows / Mac）</li><li>Excel for the web</li><li>Excel Mobile</li></ul>



<p class="wp-block-paragraph">また、裏側でクラウド翻訳サービスを呼び出す仕組みなので、<strong>インターネット接続が必須</strong>です。オフライン環境では動きませんので注意してください。</p>



<p class="wp-block-paragraph">お使いのバージョンが対応しているか、事前に確認しておきましょう。「ファイル → アカウント」で「Microsoft 365 Apps for &#8230;」と表示されていれば対応版です。</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><th>戻り値</th></tr></thead><tbody><tr><td>DETECTLANGUAGE</td><td>文字列の言語を判定</td><td>ISO 639-1コード（例: <code>ja</code>）</td></tr><tr><td>TRANSLATE</td><td>指定言語に翻訳</td><td>翻訳後の文字列</td></tr><tr><td>PHONETIC</td><td>漢字のふりがな取得</td><td>カタカナ・ひらがな</td></tr><tr><td>UNICODE / UNICHAR</td><td>文字コード変換</td><td>数値・文字</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">DETECTLANGUAGEは「判定」専用、TRANSLATEは「変換」専用、と覚えておけば使い分けで迷いません。</p>



<h2 class="wp-block-heading"><span id="toc5">DETECTLANGUAGE関数の構文と戻り値</span></h2>



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



<pre class="wp-block-code"><code>=DETECTLANGUAGE(テキスト)</code></pre>



<p class="wp-block-paragraph">引数は1つだけ、判定したいテキストまたはセル参照を指定するだけです。とてもシンプルですね。</p>



<h3 class="wp-block-heading"><span id="toc7">引数：テキスト</span></h3>



<p class="wp-block-paragraph">言語を判定したい文字列、またはセル参照を指定します。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(&quot;Hello world&quot;)
=DETECTLANGUAGE(A2)</code></pre>



<p class="wp-block-paragraph">直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うのが一般的ですよ。</p>



<p class="wp-block-paragraph">セル範囲を指定すると、スピル（数式が自動で配列に展開される機能）により一度に複数セルの判定ができます。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(A2:A20)</code></pre>



<p class="wp-block-paragraph">1つの数式で20件分の判定結果がB2:B20にずらっと表示されます。ループ処理を書く感覚で、しかも数式1つで済むのがうれしいですね。</p>



<h3 class="wp-block-heading"><span id="toc8">戻り値：ISO 639-1 言語コード</span></h3>



<p class="wp-block-paragraph">DETECTLANGUAGE関数の戻り値は、ISO 639-1という国際規格に基づく2文字の言語コードです。代表的なものをまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>言語コード</th><th>言語名</th><th>言語コード</th><th>言語名</th></tr></thead><tbody><tr><td><code>ja</code></td><td>日本語</td><td><code>pt</code></td><td>ポルトガル語</td></tr><tr><td><code>en</code></td><td>英語</td><td><code>ru</code></td><td>ロシア語</td></tr><tr><td><code>zh</code></td><td>中国語</td><td><code>ar</code></td><td>アラビア語</td></tr><tr><td><code>ko</code></td><td>韓国語</td><td><code>th</code></td><td>タイ語</td></tr><tr><td><code>es</code></td><td>スペイン語</td><td><code>vi</code></td><td>ベトナム語</td></tr><tr><td><code>fr</code></td><td>フランス語</td><td><code>id</code></td><td>インドネシア語</td></tr><tr><td><code>de</code></td><td>ドイツ語</td><td><code>nl</code></td><td>オランダ語</td></tr><tr><td><code>it</code></td><td>イタリア語</td><td><code>tr</code></td><td>トルコ語</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Microsoft Translation Servicesがサポートする100以上の言語に対応しています。メジャーな言語はほぼカバーされているので、実務で困ることはまずありませんよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>中国語の場合、繁体字と簡体字の区別は関数によっては <code>zh-Hans</code>（簡体字）<code>zh-Hant</code>（繁体字）のように細分化されることもあります。基本的には2文字コードで返ると覚えておけば大丈夫です。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc9">スピル機能でまとめて判定</span></h3>



<p class="wp-block-paragraph">セル範囲を引数に渡せば、1つの数式で複数行の判定結果を一気に取得できます。スピル対応関数の便利さを実感できる場面ですね。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(A2:A100)</code></pre>



<p class="wp-block-paragraph">B2セルにこの式を入れるだけで、B2:B100に判定結果が自動展開されます。Microsoft 365のスピル機能の真骨頂です。一括処理については <a href="https://mashukabu.com/excel-unique-filter-sort-sequence-spill/">Excelのスピル機能｜UNIQUE・FILTER・SORT・SEQUENCEで配列を自在に扱う</a> も合わせて読むと理解が深まりますよ。</p>



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



<p class="wp-block-paragraph">それでは実際に数式を組み立ててみましょう。</p>



<h3 class="wp-block-heading"><span id="toc11">1つのセルの言語を判定する</span></h3>



<p class="wp-block-paragraph">もっともシンプルな例です。A2セルの文字列の言語を判定します。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(A2)</code></pre>



<p class="wp-block-paragraph">A2が「こんにちは」なら <code>ja</code> 、「Hello」なら <code>en</code> 、「Hola」なら <code>es</code> が返ります。一瞬で判定してくれますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">複数セルの言語を一括判定する</span></h3>



<p class="wp-block-paragraph">A2:A10に多言語のテキストが入っている場合、1つの数式で全行を判定できます。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(A2:A10)</code></pre>



<p class="wp-block-paragraph">B2セルにこの数式を入れるだけで、B2:B10に判定結果がスピルします。数百件あっても1つの数式で済むのが快適ですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">IF関数と組み合わせて日本語か判定する</span></h3>



<p class="wp-block-paragraph">判定結果が日本語かどうかで分岐する例です。</p>



<pre class="wp-block-code"><code>=IF(DETECTLANGUAGE(A2)=&quot;ja&quot;, &quot;日本語&quot;, &quot;その他&quot;)</code></pre>



<p class="wp-block-paragraph">顧客リストから日本語のレコードだけを「日本語」としてマークし、それ以外を「その他」に振り分けます。日本語対応可能な担当者へのアサインに使えますね。</p>



<h3 class="wp-block-heading"><span id="toc14">直接文字列を渡してテストする</span></h3>



<p class="wp-block-paragraph">数式の動作を確認したいときは、直接文字列を渡すと手軽です。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(&quot;Bonjour le monde&quot;)</code></pre>



<p class="wp-block-paragraph">この例では <code>fr</code> （フランス語）が返ります。数式の挙動チェックにどうぞ。</p>



<h3 class="wp-block-heading"><span id="toc15">判定結果と元の文字列を並べて確認する</span></h3>



<p class="wp-block-paragraph">判定が正しいかひと目で確認したいときは、元の文字列と判定結果を並べる構成にすると便利です。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（本文）</th><th>B列（コード）</th></tr></thead><tbody><tr><td>お世話になっております</td><td>ja</td></tr><tr><td>Thank you for your support</td><td>en</td></tr><tr><td>감사합니다</td><td>ko</td></tr><tr><td>谢谢您的支持</td><td>zh</td></tr><tr><td>Vielen Dank</td><td>de</td></tr><tr><td>Cảm ơn bạn</td><td>vi</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">B2セルに <code>=DETECTLANGUAGE(A2)</code> と入力して下方向にコピーするか、 <code>=DETECTLANGUAGE(A2:A7)</code> でスピルさせれば完成です。</p>



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



<p class="wp-block-paragraph">ここからは実務で役立つ応用パターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc17">グローバル顧客リストを言語別に分類する</span></h3>



<p class="wp-block-paragraph">海外の顧客から届いたお問い合わせ本文を、言語別に自動分類する例です。</p>



<p class="wp-block-paragraph">A列に問い合わせ本文、B列に判定結果、C列に日本語の言語名を表示します。</p>



<p class="wp-block-paragraph">B2セル:</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(A2)</code></pre>



<p class="wp-block-paragraph">C2セル（SWITCH関数で日本語名に変換）:</p>



<pre class="wp-block-code"><code>=SWITCH(B2, &quot;ja&quot;,&quot;日本語&quot;, &quot;en&quot;,&quot;英語&quot;, &quot;zh&quot;,&quot;中国語&quot;, &quot;ko&quot;,&quot;韓国語&quot;, &quot;es&quot;,&quot;スペイン語&quot;, &quot;fr&quot;,&quot;フランス語&quot;, &quot;de&quot;,&quot;ドイツ語&quot;, &quot;その他&quot;)</code></pre>



<p class="wp-block-paragraph">SWITCH関数（複数の候補値を順にチェックして一致した値を返す関数）を使うと、言語コードを読みやすい日本語ラベルに変換できます。SWITCH関数の使い方は <a href="https://mashukabu.com/excel-function-howto-use-switch/">ExcelのSWITCH関数の使い方｜複数条件をスッキリ書く</a> も参考になりますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（本文）</th><th>B列（コード）</th><th>C列（言語名）</th></tr></thead><tbody><tr><td>お世話になっております</td><td>ja</td><td>日本語</td></tr><tr><td>Thank you for your support</td><td>en</td><td>英語</td></tr><tr><td>感谢您的支持</td><td>zh</td><td>中国語</td></tr><tr><td>Merci beaucoup</td><td>fr</td><td>フランス語</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">IFSの代わりにSWITCHを使うと数式がスッキリしますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">多言語アンケートを言語別に振り分ける</span></h3>



<p class="wp-block-paragraph">アンケートの自由記述欄を言語別にカウントする例です。COUNTIF関数と組み合わせます。</p>



<pre class="wp-block-code"><code>=COUNTIF(B2:B500, &quot;ja&quot;)</code></pre>



<p class="wp-block-paragraph">B列にDETECTLANGUAGE関数の結果を出しておけば、この数式で「日本語回答の件数」を集計できます。言語別の集計レポートがすぐに作れますよ。</p>



<p class="wp-block-paragraph">集計結果は次のような表になります。</p>



<figure class="wp-block-table"><table><thead><tr><th>言語</th><th>件数</th><th>割合</th></tr></thead><tbody><tr><td>ja（日本語）</td><td>312</td><td>62.4%</td></tr><tr><td>en（英語）</td><td>124</td><td>24.8%</td></tr><tr><td>zh（中国語）</td><td>38</td><td>7.6%</td></tr><tr><td>その他</td><td>26</td><td>5.2%</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">割合の計算には <code>=COUNTIF(B2:B500,"ja")/COUNTA(B2:B500)</code> を使えばOKです。</p>



<h3 class="wp-block-heading"><span id="toc19">FILTER関数と組み合わせて英語の行だけ抽出する</span></h3>



<p class="wp-block-paragraph">さらに便利なのがFILTER関数との組み合わせです。英語のレコードだけを別シートに抜き出すイメージです。</p>



<pre class="wp-block-code"><code>=FILTER(A2:C500, DETECTLANGUAGE(A2:A500)=&quot;en&quot;)</code></pre>



<p class="wp-block-paragraph">スピルで英語レコードが一気に展開されます。担当者別にシートを分けたいときに威力を発揮しますよ。FILTER関数の応用例は <a href="https://mashukabu.com/excel-function-howto-use-filter/">ExcelのFILTER関数の使い方｜条件に合うデータだけを抽出する</a> も役立ちますので合わせてどうぞ。</p>



<h3 class="wp-block-heading"><span id="toc20">TRANSLATE関数と連携して自動翻訳する</span></h3>



<p class="wp-block-paragraph">DETECTLANGUAGE関数の真価は、TRANSLATE関数（指定した言語に翻訳する関数）と組み合わせたときに発揮されます。</p>



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



<p class="wp-block-paragraph">この数式は「A2の言語を自動検出し、日本語に翻訳する」という意味です。送信元の言語が何であれ、すべて日本語に統一できます。</p>



<p class="wp-block-paragraph">多言語の顧客フィードバックを一括で日本語化するワークフローがこれ1本で完成しますよ。従来はGoogle翻訳やDeepLに1件ずつコピペしていた作業が、数式1つで終わります。詳しいTRANSLATE関数の使い方は <a href="https://mashukabu.com/excel-function-howto-use-translate/">ExcelのTRANSLATE関数の使い方｜セルの文章を自動翻訳する</a> を参照してください。</p>



<p class="wp-block-paragraph">実行イメージは次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（原文）</th><th>検出言語</th><th>TRANSLATE後（日本語）</th></tr></thead><tbody><tr><td>Thank you for your kind support</td><td>en</td><td>ご親切なサポートをありがとうございます</td></tr><tr><td>非常感谢您的合作</td><td>zh</td><td>ご協力に深く感謝いたします</td></tr><tr><td>Merci pour votre patience</td><td>fr</td><td>ご辛抱いただきありがとうございます</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">このパターンを応用すれば、社内会議資料の多言語化、海外SNSコメントの翻訳ダッシュボード、海外レビューの感情分析など、活用シーンは無限大ですよ。</p>



<h3 class="wp-block-heading"><span id="toc21">IFERRORでエラー時のラベルを付ける</span></h3>



<p class="wp-block-paragraph">短文や記号だけのセルでは判定に失敗することがあります。エラー時は「判定不可」と表示させましょう。</p>



<pre class="wp-block-code"><code>=IFERROR(DETECTLANGUAGE(A2), &quot;判定不可&quot;)</code></pre>



<p class="wp-block-paragraph">エラーで数式が止まらなくなるので、大量データの処理でも安心ですよ。IFERROR関数の詳しい使い方は <a href="https://mashukabu.com/excel-function-howto-use-iferror/">ExcelのIFERROR関数の使い方｜エラーをスマートに処理する</a> も参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc22">条件付き書式で言語を色分けする</span></h3>



<p class="wp-block-paragraph">判定結果に応じてセルを色分けすれば、ひと目で言語の分布が見えるダッシュボードが作れます。</p>



<ol class="wp-block-list"><li>B列の判定結果セルを範囲選択</li><li>「ホーム」→「条件付き書式」→「セルの強調表示ルール」→「文字列」を選択</li><li>「ja」と入力し、書式を赤に設定</li><li>同様に「en」を青、「zh」を緑、「ko」を黄など、言語ごとに色を割り当てる</li></ol>



<p class="wp-block-paragraph">これだけで、シートを開いた瞬間に「英語の問い合わせが多い」「最近スペイン語が増えてきた」といった傾向が直感的につかめます。</p>



<h3 class="wp-block-heading"><span id="toc23">Power Queryと組み合わせて定期処理を自動化する</span></h3>



<p class="wp-block-paragraph">DETECTLANGUAGE関数の結果列をPower Query側で読み込んでおけば、毎月のレポート更新時にワンクリックで言語別集計を最新化できます。</p>



<p class="wp-block-paragraph">数式のままだとセル数が多くなったときにクォータエラー（後述）に引っかかりやすいので、<strong>判定後に値貼り付けして固定</strong> → Power Queryで集計、というフローがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc24">ピボットテーブルで言語別の傾向分析</span></h3>



<p class="wp-block-paragraph">DETECTLANGUAGE関数で判定済みの列をベースに、ピボットテーブルを作れば月別・言語別のクロス集計が一瞬で出ます。</p>



<ul class="wp-block-list"><li>行: 受信月</li><li>列: 言語コード（ja / en / zh / fr / その他）</li><li>値: 件数</li></ul>



<p class="wp-block-paragraph">ピボット化しておけば、「先月から急に韓国語問い合わせが増えた」といった変化点をすぐ拾えますよ。マーケティング会議や四半期レビューで使える生きたデータになります。</p>



<h3 class="wp-block-heading"><span id="toc25">XLOOKUPで言語コード→言語名の変換テーブルを引く</span></h3>



<p class="wp-block-paragraph">SWITCH関数が長くなりすぎるのが気になるなら、別シートに変換テーブルを用意してXLOOKUP関数で引く方法もあります。</p>



<p class="wp-block-paragraph">別シートに次のような表を作ります。</p>



<figure class="wp-block-table"><table><thead><tr><th>code</th><th>name</th></tr></thead><tbody><tr><td>ja</td><td>日本語</td></tr><tr><td>en</td><td>英語</td></tr><tr><td>zh</td><td>中国語</td></tr><tr><td>ko</td><td>韓国語</td></tr><tr><td>es</td><td>スペイン語</td></tr><tr><td>fr</td><td>フランス語</td></tr><tr><td>de</td><td>ドイツ語</td></tr><tr><td>&#8230;</td><td>&#8230;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">C2セルにこの数式を入れれば完成です。</p>



<pre class="wp-block-code"><code>=XLOOKUP(B2, 言語表!A:A, 言語表!B:B, &quot;その他&quot;)</code></pre>



<p class="wp-block-paragraph">新しい言語に対応したくなったら、変換テーブルに1行追加するだけ。数式を全行修正する必要がないので、メンテナンス性がぐっと上がりますよ。</p>



<h2 class="wp-block-heading"><span id="toc26">短文・空白・数字のみセルでの挙動</span></h2>



<p class="wp-block-paragraph">DETECTLANGUAGE関数にはいくつかクセがあります。実務で遭遇しやすいケースを押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc27">空白セルを渡した場合</span></h3>



<p class="wp-block-paragraph">空白セルを渡すとエラーが返ります。IFERRORでラップするか、IF関数で事前にチェックしておきましょう。</p>



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



<p class="wp-block-paragraph">空白の場合は何も表示せず、値があるときだけ判定する形ですね。</p>



<h3 class="wp-block-heading"><span id="toc28">数字だけのセル</span></h3>



<p class="wp-block-paragraph">「12345」のように数字だけのセルは、言語判定ができず精度が落ちます。場合によっては英語と判定されたりエラーになったりします。</p>



<pre class="wp-block-code"><code>=IF(ISNUMBER(A2), &quot;数値&quot;, IFERROR(DETECTLANGUAGE(A2), &quot;判定不可&quot;))</code></pre>



<p class="wp-block-paragraph">ISNUMBER関数（セルが数値かを判定する関数）で事前にフィルタしておくと、無駄な呼び出しを減らせますよ。</p>



<h3 class="wp-block-heading"><span id="toc29">短すぎる文字列</span></h3>



<p class="wp-block-paragraph">1〜2文字だけのセルは、どの言語か特定しきれず誤判定になりやすいです。たとえば「OK」を渡すと英語と判定されますが、「あ」1文字だと判定がブレることがあります。</p>



<p class="wp-block-paragraph">実務では<strong>最低でも5〜10文字以上の文字列</strong>を渡すと安定した結果が得られますよ。</p>



<p class="wp-block-paragraph">LEN関数で文字数チェックを入れておくと安心です。</p>



<pre class="wp-block-code"><code>=IF(LEN(A2)&lt;5, &quot;判定保留&quot;, DETECTLANGUAGE(A2))</code></pre>



<p class="wp-block-paragraph">5文字未満なら「判定保留」と表示し、それ以外は判定する形ですね。</p>



<h3 class="wp-block-heading"><span id="toc30">複数言語が混在した文字列</span></h3>



<p class="wp-block-paragraph">「Hello こんにちは」のように複数言語が混ざっている場合、文字数の多い方、または先頭側の言語が返る傾向があります。混在データは事前に分割しておくのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc31">記号や絵文字だけのセル</span></h3>



<p class="wp-block-paragraph">「!!!」「😀😀😀」のような記号や絵文字オンリーのセルは、ほぼ確実にエラーになります。これらは事前にフィルタしておくか、IFERRORでラップしておきましょう。</p>



<pre class="wp-block-code"><code>=IFERROR(DETECTLANGUAGE(A2), &quot;判定不可&quot;)</code></pre>



<p class="wp-block-paragraph">このひと手間で、大量データの処理がスムーズに進みますよ。</p>



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



<p class="wp-block-paragraph">DETECTLANGUAGE関数で表示されるエラーと対処法をまとめました。</p>



<h3 class="wp-block-heading"><span id="toc33">Text Too Long エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 渡したテキストが長すぎる。Microsoft Translation Servicesが受け付ける文字数上限を超えています。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: LEFT関数で先頭500文字程度に切り詰めてから渡しましょう。</p>



<pre class="wp-block-code"><code>=DETECTLANGUAGE(LEFT(A2, 500))</code></pre>



<p class="wp-block-paragraph">言語判定は冒頭の文章だけでも十分精度が出るので、この方法で問題ありません。LEFT関数の詳しい使い方は <a href="https://mashukabu.com/excel-function-howto-use-left/">ExcelのLEFT関数の使い方｜文字列の先頭から指定文字数を取り出す</a> もチェックしてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc34">Error in Value エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 空白セルや非テキスト値（エラー値など）を渡した。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: IF関数で空白チェック、またはIFERRORでラップしましょう。</p>



<pre class="wp-block-code"><code>=IFERROR(DETECTLANGUAGE(A2), &quot;判定不可&quot;)</code></pre>



<h3 class="wp-block-heading"><span id="toc35">Request Throttled エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 日次のクォータ（Microsoftが定めるリクエスト回数制限）を超えた。大量のセルに数式を貼り付けると発生しやすいです。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 一度に処理する行数を分割するか、翌日にリトライしましょう。一括処理するときは値貼り付けで結果を固定しておくと安心ですよ。</p>



<pre class="wp-block-code"><code>判定 → 結果をコピー → 値のみ貼り付け</code></pre>



<p class="wp-block-paragraph">この流れで再計算を防げます。具体的な手順は次のとおりです。</p>



<ol class="wp-block-list"><li>B列にDETECTLANGUAGE関数を入れて判定実行</li><li>B列を選択し、Ctrl+C でコピー</li><li>同じB列で右クリック → 「値の貼り付け」を選択</li><li>数式が消え、結果の文字列だけが残る</li></ol>



<p class="wp-block-paragraph">これでファイルを開くたびに再計算が走る心配がなくなります。</p>



<h3 class="wp-block-heading"><span id="toc36">#NAME? エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: DETECTLANGUAGE関数に対応していないバージョンのExcelで使っている。またはスペルミス。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024では使えません。</p>



<p class="wp-block-paragraph">「ファイル → アカウント → 更新オプション → 今すぐ更新」で最新ビルドに上げると、新関数が一気に利用可能になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc37">#BUSY! / #CONNECT! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: クラウドサービスへの接続が一時的に途切れた、または通信が遅延している。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 数秒待ってからF9キーで再計算するか、シートを開き直してみましょう。それでも直らない場合はインターネット接続を確認してください。</p>



<h3 class="wp-block-heading"><span id="toc38">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: 引数の型が想定外（配列の中にエラー値が混在しているケースなど）。</p>



<p class="wp-block-paragraph"><strong>対処法</strong>: 元データを見直し、エラー値や予期しない型のセルがないかチェックします。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>Text Too Long</td><td>文字数超過</td><td>LEFTで切り詰める</td></tr><tr><td>Error in Value</td><td>空白・非テキスト</td><td>IFERRORでラップ</td></tr><tr><td>Request Throttled</td><td>日次クォータ超過</td><td>分割処理・値貼り付け</td></tr><tr><td>#NAME?</td><td>非対応バージョン</td><td>Microsoft 365に更新</td></tr><tr><td>#BUSY! / #CONNECT!</td><td>通信エラー</td><td>再計算・接続確認</td></tr><tr><td>#VALUE!</td><td>引数の型不一致</td><td>元データを点検</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">エラーパターンは限られているので、落ち着いて対処すれば大丈夫ですよ。</p>



<h2 class="wp-block-heading"><span id="toc39">DETECTLANGUAGE関数を使う際の注意点</span></h2>



<p class="wp-block-paragraph">実務で運用するときに気をつけたいポイントをまとめます。</p>



<h3 class="wp-block-heading"><span id="toc40">クラウド経由でデータが送信される</span></h3>



<p class="wp-block-paragraph">DETECTLANGUAGE関数はMicrosoft Translation Services（クラウドサービス）にテキストを送って判定しています。つまり、<strong>判定対象の文字列が一度Microsoftのサーバーに送信される</strong>ということです。</p>



<p class="wp-block-paragraph">社外秘の機密文書や個人情報を含むセルにそのまま使うのは避けましょう。社内ポリシーで「クラウド翻訳サービスへのデータ送信禁止」となっている場合は、IT管理者に確認してから使ってくださいね。</p>



<h3 class="wp-block-heading"><span id="toc41">大量呼び出しはパフォーマンスに影響する</span></h3>



<p class="wp-block-paragraph">数千〜数万行に一度に数式を貼り付けると、リクエストが大量発生してExcelが固まることがあります。スピル範囲を絞るか、判定後すぐに値貼り付けで固定するのが安全です。</p>



<h3 class="wp-block-heading"><span id="toc42">判定結果は完全ではない</span></h3>



<p class="wp-block-paragraph">機械判定なので、まれに誤判定が発生します。重要な業務判断（契約書の翻訳など）に使う場合は、必ず人の目でレビューを入れるフローにしましょう。</p>



<h3 class="wp-block-heading"><span id="toc43">Mac版・Web版の挙動差</span></h3>



<p class="wp-block-paragraph">Mac版とWeb版のExcelでもDETECTLANGUAGE関数は使えますが、スピル展開のパフォーマンスやエラーメッセージの表示が微妙に異なることがあります。チーム内で環境が混在する場合は、事前に検証しておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc44">共有ブックでの再計算挙動</span></h3>



<p class="wp-block-paragraph">OneDrive上の共有ブックでDETECTLANGUAGE関数を使う場合、誰かがファイルを開くたびに再計算が走ってクォータを消費します。共有ブックでは「数式タブ → 計算方法の設定 → 手動」にしておくか、判定結果を値貼り付けで固定してから共有するのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc45">バックアップを取ってから一括判定を流す</span></h3>



<p class="wp-block-paragraph">大量データに一気にDETECTLANGUAGE関数を適用すると、再計算が止まらず作業中のブックが固まることがあります。本番データに適用する前に、必ず別ファイルとしてバックアップを取っておきましょう。</p>



<p class="wp-block-paragraph">Ctrl + S で保存 → ファイル名末尾に <code>_backup</code> を付けて別名保存、というシンプルなルーチンで十分です。万一暴走しても元データに戻れる安心感は大きいですよ。</p>



<h2 class="wp-block-heading"><span id="toc46">DETECTLANGUAGE関数が返す主な言語コード一覧</span></h2>



<p class="wp-block-paragraph">DETECTLANGUAGE関数の戻り値はISO 639-1の2文字コードです。「<code>ja</code> なら日本語」とすぐ分かるものもあれば、「<code>nl</code> って何語だっけ？」と迷うものもありますよね。ここではビジネスでよく扱う20言語の早見表をまとめました。手元に置いておくと判定結果を読むときに便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc47">ビジネスでよく使う言語コード早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>言語コード</th><th>言語名</th><th>主な地域・用途</th></tr></thead><tbody><tr><td><code>ja</code></td><td>日本語</td><td>日本</td></tr><tr><td><code>en</code></td><td>英語</td><td>米国・英国・グローバル共通</td></tr><tr><td><code>zh</code></td><td>中国語</td><td>中国・台湾・香港</td></tr><tr><td><code>ko</code></td><td>韓国語</td><td>韓国</td></tr><tr><td><code>es</code></td><td>スペイン語</td><td>スペイン・中南米</td></tr><tr><td><code>fr</code></td><td>フランス語</td><td>フランス・カナダ・アフリカ一部</td></tr><tr><td><code>de</code></td><td>ドイツ語</td><td>ドイツ・オーストリア・スイス</td></tr><tr><td><code>it</code></td><td>イタリア語</td><td>イタリア</td></tr><tr><td><code>pt</code></td><td>ポルトガル語</td><td>ポルトガル・ブラジル</td></tr><tr><td><code>ru</code></td><td>ロシア語</td><td>ロシア・旧CIS諸国</td></tr><tr><td><code>ar</code></td><td>アラビア語</td><td>中東・北アフリカ</td></tr><tr><td><code>th</code></td><td>タイ語</td><td>タイ</td></tr><tr><td><code>vi</code></td><td>ベトナム語</td><td>ベトナム</td></tr><tr><td><code>id</code></td><td>インドネシア語</td><td>インドネシア</td></tr><tr><td><code>nl</code></td><td>オランダ語</td><td>オランダ・ベルギー</td></tr><tr><td><code>tr</code></td><td>トルコ語</td><td>トルコ</td></tr><tr><td><code>pl</code></td><td>ポーランド語</td><td>ポーランド</td></tr><tr><td><code>hi</code></td><td>ヒンディー語</td><td>インド</td></tr><tr><td><code>sv</code></td><td>スウェーデン語</td><td>スウェーデン</td></tr><tr><td><code>uk</code></td><td>ウクライナ語</td><td>ウクライナ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">東アジア・欧米・東南アジアの主要言語を一通りカバーしています。Microsoft Translation Servicesは100以上の言語に対応していますが、実務で頻繁に登場するのはこのあたりに集約されますよ。</p>



<h3 class="wp-block-heading"><span id="toc48">言語コードを日本語名に変換する実用例</span></h3>



<p class="wp-block-paragraph">判定結果がコードのままだと、レポートに貼ったときに読み手が「<code>vi</code> って何語？」と止まってしまいます。SWITCH関数を使ってコードを日本語名に変換しておくと、誰が見てもひと目で分かる表になりますよ。</p>



<p class="wp-block-paragraph">B列にDETECTLANGUAGE関数の判定結果が入っているとして、C列に日本語名を表示する例です。</p>



<pre class="wp-block-code"><code>=SWITCH(B2,
  &quot;ja&quot;,&quot;日本語&quot;, &quot;en&quot;,&quot;英語&quot;, &quot;zh&quot;,&quot;中国語&quot;, &quot;ko&quot;,&quot;韓国語&quot;,
  &quot;es&quot;,&quot;スペイン語&quot;, &quot;fr&quot;,&quot;フランス語&quot;, &quot;de&quot;,&quot;ドイツ語&quot;, &quot;it&quot;,&quot;イタリア語&quot;,
  &quot;pt&quot;,&quot;ポルトガル語&quot;, &quot;ru&quot;,&quot;ロシア語&quot;, &quot;ar&quot;,&quot;アラビア語&quot;, &quot;th&quot;,&quot;タイ語&quot;,
  &quot;vi&quot;,&quot;ベトナム語&quot;, &quot;id&quot;,&quot;インドネシア語&quot;, &quot;nl&quot;,&quot;オランダ語&quot;, &quot;tr&quot;,&quot;トルコ語&quot;,
  &quot;その他&quot;)</code></pre>



<p class="wp-block-paragraph">SWITCH関数（複数の候補値を順にチェックして最初に一致した値を返す関数）なら、IF関数を何重にもネストせずスッキリ書けます。最後の引数「その他」は、表にない言語コードが返ってきたときの既定値です。詳しい使い方は <a href="https://mashukabu.com/excel-function-howto-use-switch/">ExcelのSWITCH関数の使い方｜複数条件をスッキリ書く</a> も参考になりますよ。</p>



<p class="wp-block-paragraph">実行すると次のような表になります。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列（本文）</th><th>B列（コード）</th><th>C列（言語名）</th></tr></thead><tbody><tr><td>お問い合わせありがとうございます</td><td>ja</td><td>日本語</td></tr><tr><td>Could you send the invoice?</td><td>en</td><td>英語</td></tr><tr><td>请尽快回复</td><td>zh</td><td>中国語</td></tr><tr><td>Cảm ơn quý khách</td><td>vi</td><td>ベトナム語</td></tr><tr><td>Hartelijk dank</td><td>nl</td><td>オランダ語</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc49">IF関数で「対応言語かどうか」を判定する</span></h3>



<p class="wp-block-paragraph">自社が対応できる言語だけを抜き出したいときは、IF関数とOR関数を組み合わせると便利です。たとえば日本語・英語・中国語の3言語に対応しているチームなら、次のように書きます。</p>



<pre class="wp-block-code"><code>=IF(OR(B2={&quot;ja&quot;,&quot;en&quot;,&quot;zh&quot;}), &quot;対応可&quot;, &quot;要外部翻訳&quot;)</code></pre>



<p class="wp-block-paragraph">配列定数 <code>{"ja","en","zh"}</code> を使うと、IFを何重にもネストせずに複数言語をまとめて判定できます。「対応可」と「要外部翻訳」で振り分けておけば、外注すべき案件がひと目で分かりますね。IF関数の基本は <a href="https://mashukabu.com/excel-function-howto-use-if/">ExcelのIF関数の使い方｜条件で処理を分ける</a> でおさらいできますよ。</p>



<p class="wp-block-paragraph">言語コードは一度覚えてしまえば応用が利きます。早見表をブックの片隅に貼っておくか、別シートに変換テーブルとして持たせておくと、多言語データの整理がぐっとラクになりますよ。</p>



<h2 class="wp-block-heading"><span id="toc50">よくある質問（FAQ）</span></h2>



<p class="wp-block-paragraph">最後に、DETECTLANGUAGE関数について寄せられるよくある質問をまとめました。</p>



<p class="wp-block-paragraph">[faq q=&#8221;DETECTLANGUAGE関数が #NAME? エラーになるのはなぜ？&#8221; a=&#8221;お使いのExcelがDETECTLANGUAGE関数に未対応のバージョンの可能性が高いです。永続ライセンス版のExcel 2019・2021・LTSC 2024では使えません。Microsoft 365のサブスクリプション版にアップグレードするか、最新ビルドに更新してください。「ファイル → アカウント」で「Microsoft 365 Apps」と表示されていればOKです。&#8221;]</p>



<p class="wp-block-paragraph">[faq q=&#8221;オフライン環境でも使えますか？&#8221; a=&#8221;使えません。DETECTLANGUAGE関数は裏側でMicrosoft Translation Services（クラウドサービス）を呼び出すため、インターネット接続が必須です。社内のオフラインPCで使う必要がある場合は、別マシンで判定 → 値貼り付けで結果を持ち込む運用にしましょう。&#8221;]</p>



<p class="wp-block-paragraph">[faq q=&#8221;判定対象の文字列はクラウドに送信されますか？&#8221; a=&#8221;はい、送信されます。Microsoftのサーバーに一時的にデータが送られて判定処理が走る仕組みです。社外秘情報や個人情報を含む文字列にそのまま使うのは避け、社内のセキュリティポリシーを確認したうえで使ってください。&#8221;]</p>



<p class="wp-block-paragraph">[faq q=&#8221;中国語の繁体字と簡体字は区別できますか？&#8221; a=&#8221;関数の戻り値は基本的に zh の2文字コードで返ります。場面によっては zh-Hans（簡体字）・zh-Hant（繁体字）のように細分化されることもありますが、確実な区別が必要なら別途文字種チェックを組み合わせるのが安全です。&#8221;]</p>



<p class="wp-block-paragraph">[faq q=&#8221;TRANSLATE関数と組み合わせるとクォータを2回消費しますか？&#8221; a=&#8221;はい、消費します。DETECTLANGUAGE と TRANSLATE は別々にクラウドサービスを呼び出すため、リクエストカウンタとしては別カウントです。大量データを扱う場合は、まずDETECTLANGUAGEで判定 → 結果を値貼り付け → 必要な行だけTRANSLATEで翻訳、という2段階運用がおすすめです。&#8221;]</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-googletranslate-function/">faq q=&#8221;Google スプレッドシートにも同じ関数はありますか？&#8221; a=&#8221;スプレッドシートにはDETECTLANGUAGEと完全一致する関数はありませんが、GOOGLETRANSLATE 関数の補助機能や Apps Script で同等処理を組めます。スプレッドシート派の方は [GoogleスプレッドシートのGOOGLETRANSLATE関数の使い方</a> も合わせてご覧ください。&#8221;]</p>



<p class="wp-block-paragraph">[faq q=&#8221;判定速度を上げる方法はありますか？&#8221; a=&#8221;数式の再計算が遅い場合は、（1）スピル範囲を必要最小限に絞る、（2）判定後すぐに値貼り付けで固定する、（3）短すぎる文字列はLEN関数で事前に弾く、の3点で大幅に改善します。クォータエラーも減らせるので一石二鳥ですよ。&#8221;]</p>



<p class="wp-block-paragraph">[faq q=&#8221;DETECTLANGUAGE関数の結果を他の関数の引数として直接渡せますか？&#8221; a=&#8221;はい、可能です。=TRANSLATE(A2, DETECTLANGUAGE(A2), &#8216;ja&#8217;) のように、別の関数の引数として入れ子にして使えます。ただし関数を入れ子にするとクラウド呼び出しが2倍発生するため、大量データでは判定結果を別列で固定してから翻訳する2段階運用がパフォーマンス面で有利です。&#8221;]</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/excel-function-howto-use-if/">faq q=&#8221;判定結果を[IF関数</a>で分岐させる時の典型例は？&#8221; a=&#8221;日本語以外を「翻訳対象」として振り分けるなら =IF(DETECTLANGUAGE(A2)=&#8217;ja&#8217;,&#8217;日本語のまま&#8217;,&#8217;要翻訳&#8217;) のように書きます。IF関数とDETECTLANGUAGEの組み合わせは「言語別の処理分岐」の入り口として最初に覚えると応用が利きます。複数言語をまとめて判定したいときは =IF(OR(DETECTLANGUAGE(A2)={&#8216;en&#8217;,&#8217;fr&#8217;,&#8217;de&#8217;}),&#8217;欧米&#8217;,&#8217;その他&#8217;) のように配列定数を使うとIFのネストが短くなります。&#8221;]</p>



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



<p class="wp-block-paragraph">ExcelのDETECTLANGUAGE関数は、セルに入っている文字列の言語を自動判定してくれる便利な関数です。</p>



<p class="wp-block-paragraph">この記事のポイントを整理します。</p>



<ul class="wp-block-list"><li>構文は <code>=DETECTLANGUAGE(テキスト)</code> で引数は1つだけ</li><li>Microsoft 365のサブスクリプションとインターネット接続が必須</li><li>戻り値はISO 639-1の2文字コード（<code>ja</code> <code>en</code> <code>zh</code> など）</li><li>スピル対応なので範囲を渡して一括判定できる</li><li>SWITCH関数と組み合わせれば日本語の言語名に変換できる</li><li>TRANSLATE関数と連携すれば多言語データを一括翻訳できる</li><li>短文・空白・数字のみのセルは誤判定やエラーに注意</li><li>エラー時はIFERRORでラップしておくと安心</li><li>クラウド経由でデータが送信される点に注意（機密情報は要注意）</li><li>大量データは値貼り付けで結果を固定するとクォータエラーを回避できる</li></ul>



<p class="wp-block-paragraph">まずは <code>=DETECTLANGUAGE("Hello world")</code> のようなシンプルな式から試してみてください。グローバル業務のデータ整理がぐっとラクになりますよ。</p>



<p class="wp-block-paragraph">慣れてきたら、TRANSLATE関数やFILTER関数と組み合わせて「言語別の自動仕分け＋自動翻訳」までワンセットで自動化してみましょう。手作業のコピペから解放されて、本来やるべき分析や提案に時間を使えるようになりますよ。</p>



<p class="wp-block-paragraph">文字列操作系の関数を一通り押さえておきたい方は、姉妹記事もぜひあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-translate/">ExcelのTRANSLATE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-regexreplace/">ExcelのREGEXREPLACE関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-iferror/">ExcelのIFERROR関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-if/">ExcelのIF関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-switch/">ExcelのSWITCH関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-list-by-function/">Excel関数一覧【機能別】</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-function-howto-use-detectlanguage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのASC関数の使い方｜全角→半角変換と4つの実務パターン</title>
		<link>https://mashukabu.com/spreadsheet-asc-function/</link>
					<comments>https://mashukabu.com/spreadsheet-asc-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:38:21 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ASC関数]]></category>
		<category><![CDATA[JIS関数]]></category>
		<category><![CDATA[SUBSTITUTE関数]]></category>
		<category><![CDATA[TRIM関数]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[全角半角変換]]></category>
		<category><![CDATA[文字列変換]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4911</guid>

					<description><![CDATA[スプレッドシートのASC関数の使い方を基礎から解説。全角を半角に変換する基本、電話番号・カタカナの統一パターン、JIS関数との逆関数関係、TRIM・CLEAN・SUBSTITUTEとの組み合わせまで。変換対象一覧表とエラー対処つき。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで顧客リストや商品マスタを扱っていると、「電話番号やカタカナが全角と半角でバラバラで集計が合わない…」という場面、ありませんか?</p>



<p class="wp-block-paragraph">VLOOKUPやSUMIFSで集計しようとすると、全角「０３」と半角「03」は別物として扱われます。見た目はほとんど同じなのに、検索してもヒットしない。手作業で直そうとしても、件数が多いと現実的ではありませんよね。</p>



<p class="wp-block-paragraph">そんなときに使えるのが <strong>ASC関数</strong> です。この記事では、スプレッドシートのASC関数の基本から、JIS関数との使い分け、実務で役立つ4つの活用パターンまでを紹介します。よくあるエラーの対処も一通り押さえていきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-9" checked><label class="toc-title" for="toc-checkbox-9">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのASC関数とは？できることを30秒で理解</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">なぜASC関数が必要なのか</a></li></ol></li><li><a href="#toc4" tabindex="0">ASC関数の基本構文と使い方</a><ol><li><a href="#toc5" tabindex="0">書き方と引数の説明</a></li><li><a href="#toc6" tabindex="0">セルに入力した文字列から全角を半角に変換する</a></li><li><a href="#toc7" tabindex="0">カタカナや記号を半角に変換する</a></li><li><a href="#toc8" tabindex="0">ASC関数で変換される文字・されない文字</a></li></ol></li><li><a href="#toc9" tabindex="0">JIS関数との違い・使い分け（逆関数関係）</a><ol><li><a href="#toc10" tabindex="0">比較表</a></li><li><a href="#toc11" tabindex="0">逆変換の確認</a></li><li><a href="#toc12" tabindex="0">どちらを使うべきか</a></li></ol></li><li><a href="#toc13" tabindex="0">実務で使える4つのユースケース</a><ol><li><a href="#toc14" tabindex="0">ユースケース1: 電話番号の全角半角を統一して集計可能にする</a></li><li><a href="#toc15" tabindex="0">ユースケース2: CSVインポート後のデータをまとめてクレンジングする</a></li><li><a href="#toc16" tabindex="0">ユースケース3: VLOOKUP・SUMIFSの不一致を解消する</a></li><li><a href="#toc17" tabindex="0">ユースケース4: フォーム入力のゆらぎを吸収する</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</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">まとめ：ASC関数はデータクレンジングの第一歩</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのASC関数とは？できることを30秒で理解</span></h2>



<p class="wp-block-paragraph">ASC関数は、スプレッドシートで <strong>全角文字を半角文字に変換する</strong> 関数です。</p>



<p class="wp-block-paragraph">たとえば全角の「Ｅｘｃｅｌ」を渡すと「Excel」が返ります。英数字・カタカナ・記号・全角スペースがまとめて半角に変わるので、データの表記ゆれをそろえたい場面でとても便利ですよ。</p>



<p class="wp-block-paragraph">反対に「半角を全角に戻す」関数が<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>で、この2つは逆関数の関係になっています。セットで覚えておくと日本語データの整形作業がぐっと楽になりますね。</p>



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



<p class="wp-block-paragraph">ASC関数の読み方は「アスキー」です。文字コード規格「ASCII（American Standard Code for Information Interchange）」に由来する名前ですよ。ASCIIは半角英数字の文字コード体系なので、「ASC＝半角にする」と覚えておけば用途も直感的ですね。</p>



<h3 class="wp-block-heading"><span id="toc3">なぜASC関数が必要なのか</span></h3>



<p class="wp-block-paragraph">「全角と半角の違いなんて、見た目ではわかりにくい程度で実害はないのでは？」と思うかもしれません。でも、データとしてはまったくの別物として扱われます。</p>



<p class="wp-block-paragraph">たとえば顧客の電話番号で、あるレコードは全角「０３-１２３４-５６７８」、別のレコードは半角「03-1234-5678」だったとします。VLOOKUPでこの2つを検索しても、部分一致すらしません。SUMIFSの条件指定でも同じ現象が起きて、集計結果が実態とかけ離れます。</p>



<p class="wp-block-paragraph">手作業で1件ずつ直すのは現実的ではないので、ASC関数で一気に半角へそろえるのが定石になっています。</p>



<h2 class="wp-block-heading"><span id="toc4">ASC関数の基本構文と使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc5">書き方と引数の説明</span></h3>



<p class="wp-block-paragraph">ASC関数の構文はとてもシンプルです。</p>



<pre class="wp-block-code"><code>=ASC(文字列)</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></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけ。セル参照を渡すのが基本的な使い方です。</p>



<h3 class="wp-block-heading"><span id="toc6">セルに入力した文字列から全角を半角に変換する</span></h3>



<p class="wp-block-paragraph">もっとも基本的な使い方です。A1に「Ｅｘｃｅｌ」と全角で入力されている場合、次の数式で「Excel」が返ります。</p>



<pre class="wp-block-code"><code>=ASC(A1)
→ 「Excel」</code></pre>



<p class="wp-block-paragraph">数字も同じように変換されます。</p>



<pre class="wp-block-code"><code>=ASC(&quot;１２３４５&quot;)
→ 「12345」</code></pre>



<p class="wp-block-paragraph">文字列を直接指定することもできますが、実務ではセル参照で列全体に適用するのが一般的ですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">カタカナや記号を半角に変換する</span></h3>



<p class="wp-block-paragraph">英数字以外もまとめて半角になります。</p>



<pre class="wp-block-code"><code>=ASC(&quot;カタカナ＠＃＄&quot;)
→ 「ｶﾀｶﾅ@#$」</code></pre>



<p class="wp-block-paragraph">全角のカタカナ・記号・全角スペースが一括で半角になりました。CSVインポート直後のクレンジングで、この挙動が役に立ちます。</p>



<h3 class="wp-block-heading"><span id="toc8">ASC関数で変換される文字・されない文字</span></h3>



<p class="wp-block-paragraph">どの文字がASC関数で変換対象か、一覧表でまとめておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字種</th><th>変換前（全角）</th><th>変換後（半角）</th><th>変換される?</th></tr></thead><tbody><tr><td>英字</td><td>Ａ〜Ｚ, ａ〜ｚ</td><td>A〜Z, a〜z</td><td>される</td></tr><tr><td>数字</td><td>０〜９</td><td>0〜9</td><td>される</td></tr><tr><td>カタカナ</td><td>ア〜ン</td><td>ｱ〜ﾝ</td><td>される</td></tr><tr><td>濁点・半濁点つきカタカナ</td><td>ガ, パ など</td><td>ｶﾞ, ﾊﾟ など</td><td>される（2文字に分解される）</td></tr><tr><td>記号</td><td>＠, ＃, ＄, −（全角ハイフン）など</td><td>@, #, $, &#8211; など</td><td>される</td></tr><tr><td>全角スペース</td><td>「　」</td><td>「 」</td><td>される</td></tr><tr><td>ひらがな</td><td>あ〜ん</td><td>—</td><td>されない</td></tr><tr><td>漢字</td><td>東京, 大阪</td><td>—</td><td>されない</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ひらがなと漢字には半角文字が存在しないため、変換されずそのまま残ります。「カタカナは全角のまま残したい」という場合、ASC関数のあとで後処理が必要ですよ。具体的には、カタカナ部分だけ<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>で戻す処理を入れます。</p>



<p class="wp-block-paragraph">濁点つきカタカナが <strong>2文字に分解される</strong> 点も、見落としがちな挙動です。LEN関数などで文字数をカウントしている処理がある場合は、結果がズレないか確認しておいてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc9">JIS関数との違い・使い分け（逆関数関係）</span></h2>



<p class="wp-block-paragraph">ASC関数と<a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>は「半角↔全角」の逆の関係にあります。セットで押さえておくと、データ整形の引き出しがぐっと増えますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>ASC</th><th>JIS</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>JIS</td><td>ASC</td></tr><tr><td>引数</td><td>文字列（1つのみ）</td><td>文字列（1つのみ）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc11">逆変換の確認</span></h3>



<p class="wp-block-paragraph">ASC関数とJIS関数を連続で適用すると、元の文字列に戻ります。</p>



<pre class="wp-block-code"><code>=JIS(ASC(&quot;Ｅｘｃｅｌ&quot;))
→ 「Ｅｘｃｅｌ」（元に戻る）</code></pre>



<p class="wp-block-paragraph">つまり <code>JIS(ASC(文字列)) = 文字列</code> の関係が成り立ちます。逆に <code>ASC(JIS(文字列))</code> でも、もとが半角英数字の文字列なら同じ結果になります。</p>



<h3 class="wp-block-heading"><span id="toc12">どちらを使うべきか</span></h3>



<p class="wp-block-paragraph">次の基準で選んでみてください。</p>



<ul class="wp-block-list"><li>データベースや集計に使うデータ → <strong>ASC</strong>（半角に統一）</li><li>印刷物や帳票で見やすく整えたい → <strong>JIS</strong>（全角に統一）</li><li>CSVインポート後のクレンジング → <strong>ASC</strong>（半角統一が基本）</li><li>郵便番号・電話番号の表示 → <strong>ASC</strong>（半角が慣例）</li></ul>



<p class="wp-block-paragraph">実務ではASC関数を使う場面のほうが圧倒的に多いです。集計や検索で使うデータは半角へ統一する、と覚えておけばまず迷いませんよ。</p>



<h2 class="wp-block-heading"><span id="toc13">実務で使える4つのユースケース</span></h2>



<h3 class="wp-block-heading"><span id="toc14">ユースケース1: 電話番号の全角半角を統一して集計可能にする</span></h3>



<p class="wp-block-paragraph">顧客リストで電話番号の表記がバラバラというケースです。A列に電話番号が入っているとします。</p>



<pre class="wp-block-code"><code>=ASC(A2)
→ 「０３−１２３４−５６７８」→「03-1234-5678」</code></pre>



<p class="wp-block-paragraph">全角のハイフンも半角に変換されるので、電話番号の書式がバラついたデータでも一発で統一できます。</p>



<p class="wp-block-paragraph">VLOOKUPの検索キーや、顧客マスタとの突き合わせでこの処理を挟むと、ヒット率が一気に上がりますよ。CSVで受け取った外部データを社内DBと照合するときの、ほぼ必須の下処理と思って大丈夫です。</p>



<h3 class="wp-block-heading"><span id="toc15">ユースケース2: CSVインポート後のデータをまとめてクレンジングする</span></h3>



<p class="wp-block-paragraph">データクレンジングでは複数の関数を組み合わせるのが定番です。全角半角の統一に加えて、余分なスペースや制御文字も除去しましょう。</p>



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



<p class="wp-block-paragraph">この数式は2つのステップで動きます。</p>



<ol class="wp-block-list"><li>ASC関数が全角→半角に変換する</li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>（前後のスペースと連続スペースを整理する関数）が余分なスペースを除去する</li></ol>



<p class="wp-block-paragraph">さらに改行やタブなどの制御文字も取り除きたいときは、<a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数</a>（印刷できない制御文字を除去する関数）を組み合わせます。</p>



<pre class="wp-block-code"><code>=TRIM(ASC(CLEAN(A2)))</code></pre>



<p class="wp-block-paragraph">順番は <strong>内側から CLEAN → ASC → TRIM</strong> が定番です。制御文字を先に落とし、次に半角へ統一し、最後にスペースを整える。この順番を守ると、ほぼすべての表記ゆれが一掃できますよ。</p>



<p class="wp-block-paragraph">特定の文字だけ置き換えたいときは<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>も追加します。たとえば全角スペースを完全に削除したい場合はこう書きます。</p>



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



<p class="wp-block-paragraph">ASCで全角スペースが半角スペースに変わったあと、SUBSTITUTEで半角スペースを空文字に置換する流れですね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>データクレンジングの定番フロー</strong></p><p>CLEAN（制御文字除去）→ ASC（半角統一）→ TRIM（スペース整理）の順に適用すると、大半の不要文字を一掃できます。VLOOKUPやSUMIFSの条件不一致もこれで解消しやすくなりますよ。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc16">ユースケース3: VLOOKUP・SUMIFSの不一致を解消する</span></h3>



<p class="wp-block-paragraph">「検索値とデータが見た目は同じなのに、なぜかVLOOKUPがヒットしない」。これ、現場でよくある悩みですよね。</p>



<p class="wp-block-paragraph">原因は全角半角の違いによる不一致です。検索側のデータは半角、マスタ側は全角、といった具合に片側だけ全角になっているパターンがほとんどです。</p>



<p class="wp-block-paragraph">対処法は <strong>両方のセルにASC関数を適用する</strong> ことです。</p>



<pre class="wp-block-code"><code>=VLOOKUP(ASC(A2), ASC(マスタ範囲), 2, FALSE)</code></pre>



<p class="wp-block-paragraph">ただしこの書き方は、マスタ範囲を<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA</a>でラップしないと動かないことがあります。より確実なのは、マスタ側に事前にASCをかけた補助列を用意しておくことです。</p>



<pre class="wp-block-code"><code>マスタ側に補助列を作る:
=ASC(B2)  （B列が元の検索キー）

検索側:
=VLOOKUP(ASC(A2), マスタの補助列, 2, FALSE)</code></pre>



<p class="wp-block-paragraph">SUMIFSの条件指定でも同じ考え方で、条件値と条件範囲の両方にASCを適用します。この「両側に適用」を忘れると、片側だけ半角になって結局ヒットしないので要注意ですよ。</p>



<h3 class="wp-block-heading"><span id="toc17">ユースケース4: フォーム入力のゆらぎを吸収する</span></h3>



<p class="wp-block-paragraph">Googleフォームやお問い合わせフォームで収集したデータは、入力者によって全角半角が混在します。氏名の姓名のあいだに全角スペース、半角スペース、スペースなし、とバラバラになりがちです。</p>



<p class="wp-block-paragraph">そんなときは、ASCとTRIMとSUBSTITUTEの合わせ技で統一します。</p>



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



<p class="wp-block-paragraph">この数式の動きはこうです。</p>



<ol class="wp-block-list"><li>ASC関数で全角スペースを半角スペースに統一</li><li>SUBSTITUTEで連続スペースを1つの半角スペースに正規化（※ 連続スペースがあれば繰り返し置換が必要）</li><li>TRIMで前後のスペースを除去</li></ol>



<p class="wp-block-paragraph">「姓・名」を後で分割したい場合も、まずスペース表記をそろえてから<a href="https://mashukabu.com/spreadsheet-split-function/">SPLIT関数</a>に渡すと失敗しません。入力ゆらぎに対して強いシートを作れますよ。</p>



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



<p class="wp-block-paragraph">ASC関数で発生しやすいトラブルをまとめておきます。</p>



<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>ASC関数はカタカナも半角にする</td><td>JIS関数でカタカナだけ全角に戻す</td></tr><tr><td>VLOOKUPが不一致のまま</td><td>検索側とマスタ側の両方に適用していない</td><td>両方のセルにASC関数を適用する</td></tr><tr><td>数値のまま計算に使いたい</td><td>ASC関数の返り値は文字列</td><td><a href="https://mashukabu.com/spreadsheet-value-function/">VALUE関数</a>で数値に変換する</td></tr><tr><td>濁音つきカタカナが2文字扱い</td><td>濁点・半濁点が分離される仕様</td><td>LEN関数の結果を使っている処理は要チェック</td></tr><tr><td>#VALUE!エラーが出る</td><td>引数に無効な参照（エラー値）が入っている</td><td>参照先にエラーがないか確認</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc19">カタカナだけ全角に戻したい場合の対処</span></h3>



<p class="wp-block-paragraph">ASC関数をかけると英数字も記号もカタカナもまとめて半角になります。でも「英数字だけ半角にしたい、カタカナは全角で残したい」というケースは意外と多いです。</p>



<p class="wp-block-paragraph">この場合、「一度ASCをかけてからJIS関数で戻す」のはうまくいきません。カタカナ以外の英数字や記号まで全角に戻ってしまうからです。現実的な対処は2つあります。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-regexreplace-function/">REGEXREPLACE関数</a>で英数字だけを半角に置換する</li><li>正規表現で英数字を検出してから部分的にASCを適用する</li></ul>



<p class="wp-block-paragraph">本格的に正規表現を使うなら、REGEXREPLACE関数のほうがコントロールしやすいですよ。</p>



<h3 class="wp-block-heading"><span id="toc20">数値として使いたいときの対処</span></h3>



<p class="wp-block-paragraph">ASC関数の返り値はあくまで文字列です。全角数字「１２３」を半角「123」に変換しても、セルの中身は「数値123」ではなく「文字列&#8221;123&#8243;」のままです。</p>



<p class="wp-block-paragraph">このまま SUM や AVERAGE で集計するとエラーになったり、意図せず無視されたりします。数値として扱いたい場合はVALUE関数で明示的に変換してください。</p>



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



<p class="wp-block-paragraph">これで計算や集計に使える数値として扱えるようになります。</p>



<h3 class="wp-block-heading"><span id="toc21">値として確定させたいとき</span></h3>



<p class="wp-block-paragraph">数式で変換したあと、もとのセルに「半角化した結果」として貼り直したい場面があります。そのときは数式の結果をコピーして、同じ範囲に <strong>「値のみ貼り付け」</strong> で上書きしましょう。</p>



<p class="wp-block-paragraph">メニューから「編集」→「特殊貼り付け」→「値のみ貼り付け」（ショートカット: Cmd/Ctrl + Shift + V）です。これで数式が消えてデータだけが残るので、ほかのシステムにエクスポートするときも安心ですよ。</p>



<h2 class="wp-block-heading"><span id="toc22">まとめ：ASC関数はデータクレンジングの第一歩</span></h2>



<p class="wp-block-paragraph">スプレッドシートのASC関数の要点を振り返ります。</p>



<ul class="wp-block-list"><li><strong>構文</strong>: <code>=ASC(文字列)</code> — 引数1つで全角を半角に変換</li><li><strong>変換対象</strong>: 英数字・カタカナ・記号・全角スペース（ひらがな・漢字は対象外）</li><li><strong>逆関数</strong>: <a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数</a>（半角→全角）</li><li><strong>実務での活用</strong>: 電話番号の統一・CSVクレンジング・VLOOKUP不一致の解消・フォーム入力のゆらぎ吸収</li><li><strong>組み合わせの王道</strong>: CLEAN → ASC → TRIM の3段構え</li><li><strong>注意点</strong>: 返り値は文字列なので、数値として使うときはVALUE関数を重ねる</li></ul>



<p class="wp-block-paragraph">データの集計や検索で全角半角の不一致に悩んでいるなら、まずASC関数で半角に統一するところから始めてみてください。<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>や<a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数</a>、<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>と組み合わせれば、データクレンジングの大半をこれ一式でカバーできますよ。</p>



<p class="wp-block-paragraph">Excel版のASC関数や、関連する文字列操作関数については、こちらの記事もあわせてどうぞ。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-function-howto-use-asc/">ExcelのASC関数の使い方</a></li><li><a href="https://mashukabu.com/excel-function-howto-use-jis/">JIS関数の使い方</a>（半角→全角変換）</li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数の使い方</a>（スペース整理）</li><li><a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数の使い方</a>（制御文字除去）</li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-asc-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのJIS関数の使い方｜半角→全角変換</title>
		<link>https://mashukabu.com/spreadsheet-jis-function/</link>
					<comments>https://mashukabu.com/spreadsheet-jis-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sat, 21 Mar 2026 11:33:28 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[ASC]]></category>
		<category><![CDATA[JIS]]></category>
		<category><![CDATA[データクレンジング]]></category>
		<category><![CDATA[全角]]></category>
		<category><![CDATA[半角]]></category>
		<category><![CDATA[文字列変換]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=4827</guid>

					<description><![CDATA[スプレッドシートのJIS関数の使い方を基礎から解説。半角を全角に変換する基本、カタカナ・英数字の統一パターン、ASC関数との逆関数関係、TRIM・SUBSTITUTEとの組み合わせまで。変換対象一覧表付き。]]></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-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">JIS関数の基本的な使い方（スプレッドシート）</a><ol><li><a href="#toc2" tabindex="0">読み方と語源</a></li><li><a href="#toc3" tabindex="0">構文と引数の説明</a></li><li><a href="#toc4" tabindex="0">基本的な書き方の例</a></li><li><a href="#toc5" tabindex="0">JIS関数の変換対象一覧</a></li></ol></li><li><a href="#toc6" tabindex="0">JIS関数の実務パターン集</a><ol><li><a href="#toc7" tabindex="0">半角カタカナを全角に統一する</a></li><li><a href="#toc8" tabindex="0">帳票・印刷用に全角で揃える</a></li><li><a href="#toc9" tabindex="0">TRIM + JISでデータクレンジング</a></li></ol></li><li><a href="#toc10" tabindex="0">ASC関数との違い・使い分け（逆関数関係）</a><ol><li><a href="#toc11" tabindex="0">比較表</a></li><li><a href="#toc12" tabindex="0">逆変換の確認</a></li><li><a href="#toc13" tabindex="0">どちらを使うべきか</a></li></ol></li><li><a href="#toc14" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc15" tabindex="0">JIS関数のよくある質問（FAQ）</a><ol><li><a href="#toc16" tabindex="0">Q. JIS関数でひらがなも全角に変換される？</a></li><li><a href="#toc17" tabindex="0">Q. JIS関数で変換されない文字はある？（絵文字・記号等）</a></li><li><a href="#toc18" tabindex="0">Q. ARRAYFORMULAとJIS関数を組み合わせて列全体を一括変換できる？</a></li><li><a href="#toc19" tabindex="0">Q. ExcelのJIS関数とスプレッドシートのJIS関数の違いは？</a></li></ol></li><li><a href="#toc20" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">「半角カタカナが混ざっていて見づらい&#8230;」。他のシステムから取り込んだデータで、こんな経験はありませんか?</p>



<p class="wp-block-paragraph">半角カタカナは読みにくいだけでなく、印刷すると文字が潰れて判読できないこともあります。帳票や請求書に使うなら全角に揃えておきたいですよね。</p>



<p class="wp-block-paragraph">そんなときに使えるのが<strong>JIS関数</strong>です。半角文字を全角にサッと変換してくれます。この記事ではJIS関数の基本から、実務の変換パターン、<a href="https://mashukabu.com/spreadsheet-asc-function/">ASC関数</a>との逆関数関係まで解説しますよ。</p>



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



<p class="wp-block-paragraph">JIS関数の読み方は「ジス」です。日本産業規格「JIS（Japanese Industrial Standards）」に由来します。JIS X 0208は全角文字の文字コード体系なので「JIS = 全角にする」と覚えてください。</p>



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



<p class="wp-block-paragraph">JIS関数の構文はこちらです。</p>



<pre class="wp-block-code"><code>=JIS(文字列)</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></tbody></table></figure>



<p class="wp-block-paragraph">引数は1つだけなのでとてもシンプルです。セル参照を渡すのが基本的な使い方ですよ。</p>



<h3 class="wp-block-heading"><span id="toc4">基本的な書き方の例</span></h3>



<p class="wp-block-paragraph">A1に「Excel」と半角で入力されている場合を見てみましょう。</p>



<pre class="wp-block-code"><code>=JIS(A1)
→ 「Ｅｘｃｅｌ」</code></pre>



<p class="wp-block-paragraph">半角の英字がすべて全角に変換されました。数字も同様です。</p>



<pre class="wp-block-code"><code>=JIS(&quot;12345&quot;)
→ 「１２３４５」</code></pre>



<p class="wp-block-paragraph">文字列を直接指定することもできます。ただし実務ではセル参照を使うのが一般的ですよ。</p>



<h3 class="wp-block-heading"><span id="toc5">JIS関数の変換対象一覧</span></h3>



<p class="wp-block-paragraph">どの文字がJIS関数で変換されるか、一覧表でまとめます。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字種</th><th>変換前（半角）</th><th>変換後（全角）</th><th>変換される?</th></tr></thead><tbody><tr><td>英字</td><td>A〜Z, a〜z</td><td>Ａ〜Ｚ, ａ〜ｚ</td><td>される</td></tr><tr><td>数字</td><td>0〜9</td><td>０〜９</td><td>される</td></tr><tr><td>カタカナ</td><td>ｱ〜ﾝ</td><td>ア〜ン</td><td>される</td></tr><tr><td>記号</td><td>@、#、$ など</td><td>＠、＃、＄ など</td><td>される</td></tr><tr><td>半角スペース</td><td>「 」</td><td>「　」</td><td>される</td></tr><tr><td>ひらがな</td><td>—</td><td>あ〜ん</td><td>変換不要（全角のみ）</td></tr><tr><td>漢字</td><td>—</td><td>東京、大阪</td><td>変換不要（全角のみ）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ひらがなと漢字にはもともと半角が存在しないため、JIS関数を通してもそのまま残ります。</p>



<h2 class="wp-block-heading"><span id="toc6">JIS関数の実務パターン集</span></h2>



<h3 class="wp-block-heading"><span id="toc7">半角カタカナを全角に統一する</span></h3>



<p class="wp-block-paragraph">CSVや外部システムから取り込んだ顧客名に半角カタカナが混在しているケースです。</p>



<pre class="wp-block-code"><code>=JIS(&quot;ﾀﾅｶ ﾀﾛｳ&quot;)
→ 「タナカ　タロウ」</code></pre>



<p class="wp-block-paragraph">半角カタカナが全角に変換され、読みやすくなりました。スペースも全角になる点に注意してください。</p>



<p class="wp-block-paragraph">半角カタカナは一部のシステムで文字化けの原因にもなります。データを共有する前にJIS関数で全角に統一しておくと安心ですよ。</p>



<h3 class="wp-block-heading"><span id="toc8">帳票・印刷用に全角で揃える</span></h3>



<p class="wp-block-paragraph">請求書や見積書に記載する住所や会社名は、全角に揃えると見栄えがよくなります。</p>



<pre class="wp-block-code"><code>=JIS(A2)
→ 「東京都渋谷区1-2-3」→「東京都渋谷区１−２−３」</code></pre>



<p class="wp-block-paragraph">数字やハイフンも全角に変換されるので、帳票全体の文字幅が揃います。</p>



<p class="wp-block-paragraph">逆にデータベースや集計用には半角が適しています。その場合は<a href="https://mashukabu.com/spreadsheet-asc-function/">ASC関数</a>を使ってくださいね。</p>



<h3 class="wp-block-heading"><span id="toc9">TRIM + JISでデータクレンジング</span></h3>



<p class="wp-block-paragraph">データクレンジングでは複数の関数を組み合わせるのが定番です。全角変換に加えて、余分なスペースも除去しましょう。</p>



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



<p class="wp-block-paragraph">この数式は2つのステップで動きます。</p>



<ol class="wp-block-list"><li>JIS関数が半角→全角に変換する</li><li><a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>が前後のスペースと連続スペースを除去する</li></ol>



<p class="wp-block-paragraph">さらに改行やタブも除去したい場合は<a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数</a>を追加します。</p>



<pre class="wp-block-code"><code>=TRIM(JIS(CLEAN(A2)))</code></pre>



<p class="wp-block-paragraph">特定の文字を置き換えたいときは<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>も組み合わせます。たとえば全角スペースを半角スペースに戻すにはこう書きます。</p>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>印刷用データの定番フロー</strong></p><p>CLEAN（制御文字除去）→ JIS（全角統一）→ TRIM（スペース整理）の順に適用すると、帳票向けのきれいなデータに仕上がります。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc10">ASC関数との違い・使い分け（逆関数関係）</span></h2>



<p class="wp-block-paragraph">JIS関数と<a href="https://mashukabu.com/spreadsheet-asc-function/">ASC関数</a>は「全角↔半角」の逆の関係にあります。セットで覚えておくと便利です。</p>



<h3 class="wp-block-heading"><span id="toc11">比較表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>JIS</th><th>ASC</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>ASC</td><td>JIS</td></tr><tr><td>引数</td><td>文字列（1つのみ）</td><td>文字列（1つのみ）</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc12">逆変換の確認</span></h3>



<p class="wp-block-paragraph">JIS関数とASC関数を連続で適用すると、元の文字列に戻ります。</p>



<pre class="wp-block-code"><code>=ASC(JIS(&quot;Excel&quot;))
→ 「Excel」（元に戻る）</code></pre>



<p class="wp-block-paragraph">つまり <code>JIS(ASC(文字列)) = 文字列</code> が成り立ちます。</p>



<h3 class="wp-block-heading"><span id="toc13">どちらを使うべきか</span></h3>



<p class="wp-block-paragraph">次の基準で選んでみてください。</p>



<ul class="wp-block-list"><li>印刷物・帳票で見やすくしたい → <strong>JIS</strong>（全角に統一）</li><li>データベースや集計に使うデータ → <strong>ASC</strong>（半角に統一）</li><li>CSVインポート後のクレンジング → <strong>ASC</strong>（半角統一が基本）</li><li>半角カタカナの文字化けを防ぎたい → <strong>JIS</strong>（全角カタカナに変換）</li></ul>



<p class="wp-block-paragraph">実務ではASC関数を使う場面のほうが多いです。ただし帳票出力や外部共有の場面ではJIS関数が活躍しますよ。</p>



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



<p class="wp-block-paragraph">JIS関数で発生しやすいトラブルをまとめます。</p>



<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>JIS関数は文字列を返す</td><td><a href="https://mashukabu.com/spreadsheet-value-function/">VALUE関数</a>で数値に変換する</td></tr><tr><td>スペースが全角になった</td><td>JIS関数は半角スペースも全角にする</td><td>SUBSTITUTE関数で全角スペースを半角に置換</td></tr><tr><td>VLOOKUPが不一致のまま</td><td>元データと検索値で全角半角が揃っていない</td><td>両方にJIS関数（またはASC関数）を適用する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">いちばん注意が必要なのが「数字の全角変換」です。JIS関数で全角にした数字はテキスト扱いになります。計算に使いたいセルにはJIS関数を適用しないでくださいね。</p>



<p class="wp-block-paragraph">数式で変換したデータを値として確定したいときは、コピー→「値のみ貼り付け」で元のセルに上書きしましょう。</p>



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



<p class="wp-block-paragraph">JIS関数を使っていて疑問に思いやすいポイントをまとめました。</p>



<h3 class="wp-block-heading"><span id="toc16">Q. JIS関数でひらがなも全角に変換される？</span></h3>



<p class="wp-block-paragraph">ひらがなはもともと全角しか存在しないため、JIS関数を通しても変化はありません。</p>



<p class="wp-block-paragraph">JIS関数が変換するのは「半角と全角の両方が存在する文字」だけです。具体的には半角英字・半角数字・半角カタカナ・半角記号・半角スペースが対象になります。</p>



<p class="wp-block-paragraph">ひらがなには半角の規格自体がないので、「あいうえお」をJIS関数に渡してもそのまま「あいうえお」が返ります。漢字も同じく全角のみなので変換されません。エラーにもならず、ただ素通りするだけなので安心してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc17">Q. JIS関数で変換されない文字はある？（絵文字・記号等）</span></h3>



<p class="wp-block-paragraph">はい、JIS X 0208の全角規格に対応していない文字は変換されずにそのまま残ります。</p>



<p class="wp-block-paragraph">絵文字や一部の特殊記号には全角・半角の対応関係がないため、JIS関数を通しても見た目は変わりません。たとえば絵文字や、機種依存の特殊記号はそのまま出力されます。</p>



<pre class="wp-block-code"><code>=JIS(&quot;Hello😀&quot;)
→ 「Ｈｅｌｌｏ😀」（英字は全角化、絵文字はそのまま）</code></pre>



<p class="wp-block-paragraph">つまりJIS関数は「変換できる文字だけ変換し、対応がない文字は手をつけない」という動きをします。変換されない文字があってもエラーにはならないので、まずは結果を確認してみてください。どうしても揃わない文字は<a href="https://mashukabu.com/spreadsheet-substitute-function/">SUBSTITUTE関数</a>で個別に置き換えるのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc18">Q. ARRAYFORMULAとJIS関数を組み合わせて列全体を一括変換できる？</span></h3>



<p class="wp-block-paragraph">できます。<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数</a>で囲めば、1つの数式で列全体を一気に全角変換できますよ。</p>



<p class="wp-block-paragraph">通常はセルごとに <code>=JIS(A2)</code> を入力してオートフィルで下までコピーします。でもデータが増えるたびに数式をコピーし直すのは面倒ですよね。そこでARRAYFORMULAの出番です。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(JIS(A2:A))</code></pre>



<p class="wp-block-paragraph">この数式を1つ入力するだけで、A2以降の全行に全角変換が適用されます。新しい行が追加されても自動で変換されるので、メンテナンスがぐっと楽になります。</p>



<p class="wp-block-paragraph">空白セルまで処理したくない場合は、IF関数で空白を除外しておくときれいです。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(IF(A2:A=&quot;&quot;, &quot;&quot;, JIS(A2:A)))</code></pre>



<p class="wp-block-paragraph">TRIMやCLEANと組み合わせても同じように一括処理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">Q. ExcelのJIS関数とスプレッドシートのJIS関数の違いは？</span></h3>



<p class="wp-block-paragraph">基本的な機能はどちらも「半角→全角変換」で同じですが、細かい仕様に違いがあります。</p>



<p class="wp-block-paragraph">スプレッドシートのJIS関数は引数が文字列1つだけのシンプルな構成です。一方、Excelの場合もエンドユーザーの使い方はほぼ同じで、半角英数字・カタカナ・記号を全角に変換します。日常的な変換用途であれば、両者を意識せず同じ感覚で使えます。</p>



<p class="wp-block-paragraph">ただしExcelには言語設定（日本語版かどうか）によって挙動が変わる側面があり、英語版Excelでは想定どおりに動かないことがあります。スプレッドシートはこうした言語依存が少なく、環境を問わず安定して全角変換できるのがメリットです。</p>



<p class="wp-block-paragraph">Excel版の詳しい使い方や注意点はこちらの記事で解説しています。<br><a href="https://mashukabu.com/excel-function-howto-use-jis/">ExcelのJIS関数の使い方</a></p>



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



<p class="wp-block-paragraph">スプレッドシートのJIS関数の使い方を振り返りましょう。</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>=JIS(文字列)</td></tr><tr><td>変換対象</td><td>英数字・カタカナ・記号・半角スペース</td></tr><tr><td>非変換</td><td>ひらがな・漢字（もとから全角のみ）</td></tr><tr><td>逆関数</td><td>ASC（全角→半角）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">帳票や印刷物で半角が混在して見づらいなら、まずJIS関数で全角に統一してみてください。<a href="https://mashukabu.com/spreadsheet-trim-function/">TRIM関数</a>や<a href="https://mashukabu.com/spreadsheet-clean-function/">CLEAN関数</a>と組み合わせれば、見栄えのよいデータに整えられますよ。</p>



<p class="wp-block-paragraph">データの集計や検索には半角統一が基本です。そちらは<a href="https://mashukabu.com/spreadsheet-asc-function/">ASC関数の使い方</a>をチェックしてくださいね。</p>



<p class="wp-block-paragraph">Excel版のJIS関数についてはこちらの記事で詳しく解説しています。<br><a href="https://mashukabu.com/excel-function-howto-use-jis/">ExcelのJIS関数の使い方</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-jis-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
