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

<channel>
	<title>文字列操作 &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e6%96%87%e5%ad%97%e5%88%97%e6%93%8d%e4%bd%9c/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 11 Jun 2026 23:50:23 +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 Replace関数の使い方｜引数Count・Compareで一括置換を使いこなす</title>
		<link>https://mashukabu.com/vba-replace-function/</link>
					<comments>https://mashukabu.com/vba-replace-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 01:46:17 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[Replace]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[一括置換]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7894</guid>

					<description><![CDATA[VBAのReplace関数の基本構文から、Count・Compare引数の応用まで実務パターンで解説。スペース全削除・記号の一括除去・大文字小文字を無視した置換など、コピペで使えるコード付き。WorksheetFunction.Substituteとの違い比較表も収録。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">VBAで「文字列の一部を別の文字に置き換えたい」と思ったとき、最初に候補に挙がるのがReplace関数です。住所の全角スペースを半角に直したい、商品コードの記号を統一したい、ファイル名から不要な文字を取り除きたい、といった処理は、Replace関数1行でほぼ完結します。</p>



<p class="wp-block-paragraph">ただし実際に使ってみると、「<code>start</code>引数を指定したら前半が消えた」「大文字と小文字が区別されて置換できない」など、引数の挙動でつまずく方も少なくありません。Replace関数は6つの引数を持つため、それぞれの役割を理解しないと意図しない結果になりがちです。</p>



<p class="wp-block-paragraph">この記事では、VBA Replace関数の基本構文から、<code>Count</code>・<code>Compare</code>引数を活用した一括置換のテクニック、そして実務でコピペして使えるコードパターンまでをまとめて解説します。<code>WorksheetFunction.Substitute</code>との使い分けも比較表で整理しているので、文字列加工の判断軸として活用してください。</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のReplace関数とは</a></li><li><a href="#toc2" tabindex="0">基本構文と引数一覧</a></li><li><a href="#toc3" tabindex="0">【引数別】戻り値の変化と注意点</a><ol><li><a href="#toc4" tabindex="0">start引数を使うときの落とし穴</a></li><li><a href="#toc5" tabindex="0">count引数で置換回数を制限する</a></li><li><a href="#toc6" tabindex="0">compare引数で大文字小文字を無視する</a></li></ol></li><li><a href="#toc7" tabindex="0">実務でよく使うコードパターン3選</a><ol><li><a href="#toc8" tabindex="0">パターン1: スペース・特殊文字を全削除する</a></li><li><a href="#toc9" tabindex="0">パターン2: 大文字小文字を統一する</a></li><li><a href="#toc10" tabindex="0">パターン3: 複数の文字列を一括置換する</a></li></ol></li><li><a href="#toc11" tabindex="0">VBA Replace関数 vs WorksheetFunction.Substitute</a></li><li><a href="#toc12" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">VBA Replace関数は、指定した文字列の中から検索対象の部分文字列を見つけて、別の文字列に置き換える組み込み関数です。Excel関数の<code>SUBSTITUTE</code>に近い動きをしますが、VBAコード内ではこちらが標準となります。</p>



<p class="wp-block-paragraph">最大の特徴は、引数によって挙動を細かく制御できる点です。「最初の1件だけ置換する」「N文字目から検索を開始する」「大文字と小文字を区別しない」といった処理が、追加のIf文なしに引数指定だけで実現できます。</p>



<p class="wp-block-paragraph">事務処理では、フォーム入力データの正規化、CSVの整形、ファイル名の一括変更など、文字列加工が発生する場面で頻繁に登場します。一度引数の意味を押さえておけば、関連する自動化処理の幅が大きく広がる関数です。</p>



<p class="wp-block-paragraph">なお、VBAには同名のメソッドがStringクラスやRangeオブジェクトにも存在しますが、本記事では純粋な関数としてのReplace（VBA.Strings.Replace）を扱います。</p>



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



<p class="wp-block-paragraph">Replace関数の構文は以下のとおりです。</p>



<pre class="wp-block-code"><code>Replace(expression, find, replace[, start[, count[, compare]]])</code></pre>



<p class="wp-block-paragraph">引数は6つあり、最初の3つが必須、後ろの3つは省略可能です。</p>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須</th><th>デフォルト</th><th>説明</th></tr></thead><tbody><tr><td>expression</td><td>必須</td><td>—</td><td>置換対象の文字列式</td></tr><tr><td>find</td><td>必須</td><td>—</td><td>検索する部分文字列</td></tr><tr><td>replace</td><td>必須</td><td>—</td><td>置換後の文字列</td></tr><tr><td>start</td><td>省略可</td><td>1</td><td>検索を開始する位置</td></tr><tr><td>count</td><td>省略可</td><td>-1（全置換）</td><td>置換を実行する回数</td></tr><tr><td>compare</td><td>省略可</td><td>vbBinaryCompare（0）</td><td>比較の種類</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最もシンプルな使い方は、必須の3引数だけを指定するパターンです。</p>



<pre class="wp-block-code"><code>Sub BasicReplace()
    Dim result As String
    result = Replace(&quot;2026/05/19&quot;, &quot;/&quot;, &quot;-&quot;)
    Debug.Print result   ' → 2026-05-19
End Sub</code></pre>



<p class="wp-block-paragraph">このように、<code>expression</code>の中に出てくる<code>find</code>をすべて<code>replace</code>に置き換えた文字列が返ります。デフォルトでは全件置換となるため、<code>Count</code>を指定しない限り該当箇所はすべて置換されると覚えておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc3">【引数別】戻り値の変化と注意点</span></h2>



<p class="wp-block-paragraph">ここからは、省略可能な3つの引数の挙動を順番に見ていきます。とくに<code>start</code>引数には「前半部分が消える」という有名な落とし穴があるため、最初に押さえておきましょう。</p>



<p class="wp-block-paragraph">戻り値の特殊ケースも整理しておきます。</p>



<ul class="wp-block-list"><li><code>expression</code>が空文字列のとき → <code>""</code>を返す</li><li><code>expression</code>が<code>Null</code>のとき → エラー（<code>IsNull</code>での事前チェック必須）</li><li><code>find</code>が空文字列のとき → <code>expression</code>のコピーをそのまま返す</li><li><code>replace</code>が空文字列のとき → <code>find</code>の出現箇所をすべて削除した文字列を返す</li><li><code>start</code>が<code>Len(expression)</code>より大きいとき → <code>""</code>を返す</li><li><code>count</code>が0のとき → <code>expression</code>のコピーを返す（置換なし）</li></ul>



<p class="wp-block-paragraph">Null値が混入しそうな処理では、必ず<code>If IsNull(value) Then ...</code>で分岐を入れておきます。</p>



<h3 class="wp-block-heading"><span id="toc4">start引数を使うときの落とし穴</span></h3>



<p class="wp-block-paragraph"><code>start</code>は検索開始位置を指定する引数ですが、戻り値が「start位置から末尾までの文字列のみ」になります。先頭部分は戻り値に含まれません。</p>



<pre class="wp-block-code"><code>Sub StartPitfall()
    Dim str As String
    str = &quot;ABCDEFG-ABCDEFG&quot;
    
    ' 6文字目以降のAをXに置換したい
    Debug.Print Replace(str, &quot;A&quot;, &quot;X&quot;, 6)
    ' → &quot;FG-XBCDEFG&quot;
    ' 先頭の &quot;ABCDE&quot; が消える！
End Sub</code></pre>



<p class="wp-block-paragraph">「6文字目以降のAをXに置換したい」と意図して書いたコードですが、先頭5文字が消えた結果が返ってきます。これは仕様であり、バグではありません。</p>



<p class="wp-block-paragraph">先頭部分を保持したい場合は、<code>Left</code>関数で前半を取り出して連結する必要があります。</p>



<pre class="wp-block-code"><code>Sub StartFixed()
    Dim str As String
    Dim head As String
    Dim tail As String
    Dim result As String
    
    str = &quot;ABCDEFG-ABCDEFG&quot;
    
    '--- 先頭5文字を保持 ---
    head = Left(str, 5)
    '--- 6文字目以降のAを置換 ---
    tail = Replace(str, &quot;A&quot;, &quot;X&quot;, 6)
    
    result = head &amp; tail
    Debug.Print result   ' → &quot;ABCDEFG-XBCDEFG&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">この挙動を知らずに<code>start</code>を使うと、データが意図せず削れる事故につながります。<code>start</code>は「途中から検索したい」というより「途中以降の文字列を加工して返したい」ときに使う引数だと理解しておくのが安全です。</p>



<h3 class="wp-block-heading"><span id="toc5">count引数で置換回数を制限する</span></h3>



<p class="wp-block-paragraph"><code>count</code>引数は、置換を実行する回数の上限を指定します。デフォルトは<code>-1</code>で、これは「すべての出現箇所を置換する」という意味です。</p>



<pre class="wp-block-code"><code>Sub CountLimit()
    Dim str As String
    str = &quot;AAA-AAA-AAA&quot;
    
    ' 全置換（デフォルト）
    Debug.Print Replace(str, &quot;A&quot;, &quot;X&quot;)
    ' → &quot;XXX-XXX-XXX&quot;
    
    ' 最初の1件だけ置換
    Debug.Print Replace(str, &quot;AAA&quot;, &quot;BBB&quot;, 1, 1)
    ' → &quot;BBB-AAA-AAA&quot;
    
    ' 最初の2件だけ置換
    Debug.Print Replace(str, &quot;AAA&quot;, &quot;BBB&quot;, 1, 2)
    ' → &quot;BBB-BBB-AAA&quot;
End Sub</code></pre>



<p class="wp-block-paragraph"><code>count</code>を使うときは、<code>start</code>も同時に指定する必要があります（<code>count</code>は4番目、<code>start</code>は5番目という順序のため）。先頭から数えたい場合は<code>start</code>に<code>1</code>を渡しておきましょう。</p>



<p class="wp-block-paragraph">ログの先頭1件目だけタイムスタンプを差し替えたい、テンプレートの最初のプレースホルダだけ置き換えたい、といった用途で役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc6">compare引数で大文字小文字を無視する</span></h3>



<p class="wp-block-paragraph"><code>compare</code>引数は文字列の比較方法を切り替えます。デフォルトは大文字と小文字を区別する<code>vbBinaryCompare</code>です。</p>



<figure class="wp-block-table"><table><thead><tr><th>定数</th><th>値</th><th>動作</th></tr></thead><tbody><tr><td>vbBinaryCompare</td><td>0</td><td>大文字・小文字を区別する（既定値）</td></tr><tr><td>vbTextCompare</td><td>1</td><td>大文字・小文字を区別しない</td></tr><tr><td>vbDatabaseCompare</td><td>2</td><td>Access専用</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>vbTextCompare</code>を指定すれば、「vba」「VBA」「Vba」「vBa」のような表記ゆれをまとめて拾えます。</p>



<pre class="wp-block-code"><code>Sub CompareDemo()
    Dim str As String
    str = &quot;vbaとVBAとVbaは同じ言語です&quot;
    
    ' 既定値（大文字小文字を区別）
    Debug.Print Replace(str, &quot;vba&quot;, &quot;Excel&quot;)
    ' → &quot;ExcelとVBAとVbaは同じ言語です&quot;
    
    ' vbTextCompare（大文字小文字を無視）
    Debug.Print Replace(str, &quot;vba&quot;, &quot;Excel&quot;, 1, -1, vbTextCompare)
    ' → &quot;ExcelとExcelとExcelは同じ言語です&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">ユーザー入力データやWebから取得した文字列は、大文字小文字が揺れていることが珍しくありません。表記ゆれをまとめて正規化したいときは、<code>vbTextCompare</code>を積極的に使いましょう。</p>



<h2 class="wp-block-heading"><span id="toc7">実務でよく使うコードパターン3選</span></h2>



<p class="wp-block-paragraph">ここからは、事務処理の現場で頻出する3つのパターンを紹介します。いずれもコピペしてそのまま使えるコードです。</p>



<h3 class="wp-block-heading"><span id="toc8">パターン1: スペース・特殊文字を全削除する</span></h3>



<p class="wp-block-paragraph">データの正規化で最も多いのが、不要な空白や記号の削除です。<code>replace</code>に空文字列<code>""</code>を渡せば、<code>find</code>に該当する箇所がすべて消えます。</p>



<pre class="wp-block-code"><code>Sub RemoveSpaces()
    Dim str As String
    str = &quot;山田　太郎 さん&quot;   ' 全角＋半角スペース混在
    
    '--- 半角スペースを全削除 ---
    str = Replace(str, &quot; &quot;, &quot;&quot;)
    
    '--- 全角スペースを全削除（Chr(12288)） ---
    str = Replace(str, Chr(12288), &quot;&quot;)
    
    Debug.Print str   ' → &quot;山田太郎さん&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">タブ・改行を含めて一気に除去したい場合は、Replace関数をネストするのが定番です。</p>



<pre class="wp-block-code"><code>Sub RemoveWhitespace()
    Dim str As String
    str = &quot;ABC&quot; &amp; vbTab &amp; &quot;DEF&quot; &amp; vbCrLf &amp; &quot;GHI&quot;
    
    '--- タブ・LF・CRをまとめて除去 ---
    str = Replace(Replace(Replace(str, Chr(9), &quot;&quot;), Chr(10), &quot;&quot;), Chr(13), &quot;&quot;)
    
    Debug.Print str   ' → &quot;ABCDEFGHI&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">スペース削除専用の手段としては、<code>Trim</code>関数や<code>LTrim</code> / <code>RTrim</code>関数もあります。前後の空白だけを削りたい場合はTrim系のほうがシンプルです。詳しくは<a href="https://mashukabu.com/excel-vba-howto-use-trim/">VBA Trim関数の使い方</a>や<a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBAでスペースを削除する方法</a>もあわせて参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc9">パターン2: 大文字小文字を統一する</span></h3>



<p class="wp-block-paragraph">入力データの「VBA／vba／Vba」のような表記ゆれを統一するパターンです。<code>compare</code>引数に<code>vbTextCompare</code>を渡せば、大文字小文字を無視して置換できます。</p>



<pre class="wp-block-code"><code>Sub NormalizeCase()
    Dim str As String
    str = &quot;vbaのコード例とVBA講座、Vba入門書&quot;
    
    '--- 大文字小文字を区別せず &quot;VBA&quot; に統一 ---
    str = Replace(str, &quot;vba&quot;, &quot;VBA&quot;, 1, -1, vbTextCompare)
    
    Debug.Print str
    ' → &quot;VBAのコード例とVBA講座、VBA入門書&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">ポイントは、<code>start</code>に<code>1</code>、<code>count</code>に<code>-1</code>を必ず渡すことです。<code>compare</code>は6番目の引数なので、前の引数を省略できません。「先頭から全件置換」を意味する<code>1, -1</code>はセットで覚えておくと迷いません。</p>



<p class="wp-block-paragraph">商品コード・型番・タグなど、半角英字が混じるデータの正規化で重宝するパターンです。</p>



<h3 class="wp-block-heading"><span id="toc10">パターン3: 複数の文字列を一括置換する</span></h3>



<p class="wp-block-paragraph">複数の検索パターンを順番に置換するときは、配列とループを組み合わせると保守性が上がります。置換ルールが10件、20件と増えても、配列の中身を変えるだけで済むのが利点です。</p>



<pre class="wp-block-code"><code>Sub MultiReplace(ByRef str As String)
    Dim findList As Variant
    Dim repList  As Variant
    Dim i As Long
    
    '--- 検索文字と置換文字をペアで定義 ---
    findList = Array(&quot;（&quot;, &quot;）&quot;, &quot;　&quot;, &quot;・&quot;)
    repList  = Array(&quot;(&quot;,  &quot;)&quot;,  &quot; &quot;,  &quot;-&quot;)
    
    '--- 順番に置換していく ---
    For i = 0 To UBound(findList)
        str = Replace(str, findList(i), repList(i))
    Next i
End Sub

Sub TestMultiReplace()
    Dim s As String
    s = &quot;（株）山田　商事・東京&quot;
    
    Call MultiReplace(s)
    Debug.Print s   ' → &quot;(株)山田 商事-東京&quot;
End Sub</code></pre>



<p class="wp-block-paragraph"><code>findList</code>と<code>repList</code>を同じインデックスで対応させるのがコツです。要素数が一致しないと配列の境界エラーになるため、追加時は両方の配列を必ずセットで更新してください。</p>



<p class="wp-block-paragraph">社内システムから出力されたCSVを集計用に整形する、住所データの記号を統一する、といった処理にそのまま流用できます。</p>



<h2 class="wp-block-heading"><span id="toc11">VBA Replace関数 vs WorksheetFunction.Substitute</span></h2>



<p class="wp-block-paragraph">VBAから文字列を置換する手段は、Replace関数だけではありません。<code>WorksheetFunction.Substitute</code>を経由して、Excel関数の<code>SUBSTITUTE</code>を呼び出す方法もあります。両者には明確な使い分けの基準があります。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較軸</th><th>VBA Replace関数</th><th>WorksheetFunction.Substitute</th></tr></thead><tbody><tr><td>コード量</td><td>短い</td><td>長い</td></tr><tr><td>大文字小文字の無視</td><td>可能（compare引数）</td><td>不可</td></tr><tr><td>検索開始位置の指定</td><td>可能（start引数）</td><td>不可</td></tr><tr><td>置換回数の上限</td><td>可能（count引数）</td><td>不可</td></tr><tr><td>N番目のみ置換</td><td>不可</td><td><strong>可能</strong>（第4引数）</td></tr><tr><td>主な用途</td><td>VBAコード内の文字列加工全般</td><td>N番目のみ置換したい特殊ケース</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">基本的にはVBA Replace関数のほうがコードが短く、引数も柔軟です。日常的な置換処理は、まずReplace関数で書くことを推奨します。</p>



<p class="wp-block-paragraph">一方、「3番目に出現した文字だけを置換したい」のような限定的なケースでは、<code>WorksheetFunction.Substitute</code>の第4引数（インスタンス番号）が役立ちます。</p>



<pre class="wp-block-code"><code>Sub SubstituteByPosition()
    Dim str As String
    Dim result As String
    str = &quot;A-A-A-A-A&quot;
    
    '--- 3番目の &quot;A&quot; だけ &quot;X&quot; に置換 ---
    result = WorksheetFunction.Substitute(str, &quot;A&quot;, &quot;X&quot;, 3)
    Debug.Print result   ' → &quot;A-A-X-A-A&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">Replace関数ではN番目だけの置換ができないため、この用途に限ってはSubstituteの出番です。Excel関数の挙動については<a href="https://mashukabu.com/excel-function-howto-use-substitute/">ExcelのSUBSTITUTE関数の使い方</a>も参考になります。</p>



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



<p class="wp-block-paragraph">VBA Replace関数のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>基本構文は<code>Replace(expression, find, replace, start, count, compare)</code>の6引数</li><li><code>start</code>を指定すると先頭部分が戻り値から消える。<code>Left</code>関数との連結で対処</li><li><code>count</code>で置換回数を制限できる。最初の1件だけ、最初の2件だけといった指定が可能</li><li><code>compare</code>に<code>vbTextCompare</code>を渡すと、大文字小文字を区別せず置換できる</li><li>実務では「スペース全削除」「大文字小文字統一」「複数文字列の一括置換」の3パターンが頻出</li><li>N番目のみ置換したい特殊ケースは<code>WorksheetFunction.Substitute</code>を使う</li></ul>



<p class="wp-block-paragraph">パターンに一致する文字列をまとめて置換したい場合は<a href="https://mashukabu.com/excel-vba-regexp-howto/">VBA正規表現（RegExp）の使い方</a>が便利です。</p>



<p class="wp-block-paragraph">引数の挙動さえ押さえれば、Replace関数は文字列加工の最強の味方になります。とくに<code>compare</code>引数の存在を知っているかどうかで、表記ゆれデータの処理スピードは大きく変わります。まずは基本の3引数からスタートし、慣れてきたら<code>count</code>・<code>compare</code>を組み合わせて、データ正規化の自動化に役立ててください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/vba-replace-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VBA WorksheetFunction.Trim の使い方｜VBA Trim との違いと使い分けを解説</title>
		<link>https://mashukabu.com/vba-worksheetfunction-trim/</link>
					<comments>https://mashukabu.com/vba-worksheetfunction-trim/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 15:50:48 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[Trim]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[WorksheetFunction]]></category>
		<category><![CDATA[データクリーニング]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[空白除去]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7849</guid>

					<description><![CDATA[VBA の WorksheetFunction.Trim は、文字列の先頭・末尾だけでなく単語間の連続スペースも1つに圧縮できます。中間スペースを残す VBA 標準の Trim 関数との違いを入力→出力の比較表で解説し、CSV やシステム出力のデータクリーニングに使える実務コードも紹介。Chr(160) ノーブレークスペースが消えない落とし穴と対処法もカバーしました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">VBA の <code>Trim</code> 関数を使ったのに、文字列の途中にある余分なスペースが消えなくて困ったことはありませんか。実は、VBA の標準 <code>Trim</code> 関数は先頭と末尾のスペースしか削除しません。単語の間にある連続スペースを1つにまとめたいときは、<code>WorksheetFunction.Trim</code> を使います。</p>



<p class="wp-block-paragraph">この記事では、<code>WorksheetFunction.Trim</code> の使い方を、VBA 標準の <code>Trim</code>・<code>LTrim</code>・<code>RTrim</code> との違いとあわせて解説します。4つの空白処理の挙動は、入力と出力の比較表で整理します。CSV やシステム出力のデータクリーニングに使える実務コードも紹介します。最後に、<code>Trim</code> 系をどれだけ使っても消えないノーブレークスペース（Chr(160)）の落とし穴と対処法も取り上げます。</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">VBA の WorksheetFunction.Trim とは？</a></li><li><a href="#toc2" tabindex="0">WorksheetFunction.Trim の使い方</a><ol><li><a href="#toc3" tabindex="0">VBE の起動と標準モジュールの準備</a></li><li><a href="#toc4" tabindex="0">基本コード</a></li></ol></li><li><a href="#toc5" tabindex="0">VBA Trim・LTrim・RTrim との違い｜4関数の比較表</a></li><li><a href="#toc6" tabindex="0">WorksheetFunction.Trim が活躍する実務シーン</a><ol><li><a href="#toc7" tabindex="0">実務コード1: 1つのセルをクレンジングする</a></li><li><a href="#toc8" tabindex="0">実務コード2: セル範囲を一括クレンジングする</a></li></ol></li><li><a href="#toc9" tabindex="0">ノーブレークスペース（Chr(160)）が削除できない落とし穴と対処法</a></li><li><a href="#toc10" tabindex="0">WorksheetFunction.Trim を使うときの注意点・よくあるエラー</a></li><li><a href="#toc11" tabindex="0">まとめ</a><ol><li><a href="#toc12" tabindex="0">関連記事</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBA の WorksheetFunction.Trim とは？</span></h2>



<p class="wp-block-paragraph"><code>WorksheetFunction.Trim</code> は、ワークシート関数の TRIM を VBA から呼び出すメソッドです。文字列の先頭と末尾のスペースを削除します。さらに、単語の間にある連続したスペースも1つだけ残して圧縮します。</p>



<p class="wp-block-paragraph">VBA には標準の <code>Trim</code> 関数もあります。ただし標準の <code>Trim</code> 関数は、中間の連続スペースには手を付けません。「単語間のスペースを1つに詰める」処理は、VBA 標準関数にはない機能です。</p>



<p class="wp-block-paragraph">そこで <code>WorksheetFunction</code> オブジェクトを経由して、ワークシート関数の TRIM を借りてくるわけです。具体的な挙動を見てみましょう。</p>



<pre class="wp-block-code"><code>result = WorksheetFunction.Trim(&quot;A   B   C&quot;)
'--- 結果は &quot;A B C&quot;（単語間スペースが1つに圧縮される）---</code></pre>



<p class="wp-block-paragraph">入力 <code>"A   B   C"</code> の単語間には、それぞれ3つのスペースがあります。<code>WorksheetFunction.Trim</code> を通すと、すべて1つにまとめられて <code>"A B C"</code> になります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>NOTE: ワークシート関数を VBA から呼ぶ仕組み全般については、<a href="https://mashukabu.com/excel-vba-howto-use-worksheetfunction/">VBAでWorksheetFunctionを使う方法</a>で詳しく解説しています。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc2">WorksheetFunction.Trim の使い方</span></h2>



<p class="wp-block-paragraph">まずは基本の構文と、実際に動かすための準備を確認します。</p>



<pre class="wp-block-code"><code>WorksheetFunction.Trim(Arg1)</code></pre>



<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>Arg1</td><td>必須</td><td>String</td><td>余分なスペースを削除したい文字列</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">戻り値は String 型です。<code>Application.WorksheetFunction.Trim(Arg1)</code> と書いても同じ動作になります。<code>Application.</code> は省略できます。</p>



<h3 class="wp-block-heading"><span id="toc3">VBE の起動と標準モジュールの準備</span></h3>



<p class="wp-block-paragraph">コードを書くには、まず VBE（Visual Basic Editor）を開きます。Excel で <code>Alt + F11</code> キーを押すと VBE が起動します。</p>



<p class="wp-block-paragraph">リボンから開くこともできます。「開発」タブの「Visual Basic」ボタンをクリックする方法です。「開発」タブが表示されていない場合は、次の手順で追加します。</p>



<ol class="wp-block-list"><li>「ファイル」→「オプション」を開きます。</li><li>「リボンのユーザー設定」を選びます。</li><li>右側の一覧で「開発」にチェックを入れます。</li></ol>



<p class="wp-block-paragraph">VBE が開いたら、メニューの「挿入」→「標準モジュール」をクリックします。表示されたコード入力欄に、これから紹介するコードを貼り付けてください。</p>



<h3 class="wp-block-heading"><span id="toc4">基本コード</span></h3>



<p class="wp-block-paragraph">実際に <code>WorksheetFunction.Trim</code> を動かす基本コードです。変換前と変換後をメッセージボックスで見比べられるようにしています。</p>



<pre class="wp-block-code"><code>Sub WorksheetFunctionTrimSample()
    Dim sBefore As String '変換前の文字列
    Dim sAfter As String  '変換後の文字列

    '--- 変換前の文字列を用意 ---
    sBefore = &quot;  Excel   VBA   入門  &quot;

    '--- 連続スペースを1つに圧縮し、先頭末尾も削除 ---
    sAfter = WorksheetFunction.Trim(sBefore)

    '--- 変換前後を確認 ---
    MsgBox &quot;変換前：[&quot; &amp; sBefore &amp; &quot;]&quot; &amp; vbCrLf &amp; _
           &quot;変換後：[&quot; &amp; sAfter &amp; &quot;]&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">このコードを実行すると、変換後は <code>[Excel VBA 入門]</code> と表示されます。先頭と末尾のスペースが消え、単語間の連続スペースも1つに詰まりました。<code>[ ]</code> で囲んでいるのは、両端のスペースが消えたことを目で確認しやすくするためです。</p>



<h2 class="wp-block-heading"><span id="toc5">VBA Trim・LTrim・RTrim との違い｜4関数の比較表</span></h2>



<p class="wp-block-paragraph">ここがこの記事の核心です。VBA には空白を扱う関数が複数あります。それぞれ削除する範囲が異なります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>先頭のスペース</th><th>末尾のスペース</th><th>中間の連続スペース</th></tr></thead><tbody><tr><td><code>Trim</code></td><td>削除する</td><td>削除する</td><td>残す</td></tr><tr><td><code>LTrim</code></td><td>削除する</td><td>残す</td><td>残す</td></tr><tr><td><code>RTrim</code></td><td>残す</td><td>削除する</td><td>残す</td></tr><tr><td><code>WorksheetFunction.Trim</code></td><td>削除する</td><td>削除する</td><td>1つに圧縮する</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">同じ文字列に4つの関数を通すと、結果は次のように変わります。入力は <code>"  A   B  "</code> とします。先頭に2つ、中間に3つ、末尾に2つのスペースがある文字列です。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>出力結果</th></tr></thead><tbody><tr><td><code>Trim("  A   B  ")</code></td><td><code>"A   B"</code></td></tr><tr><td><code>LTrim("  A   B  ")</code></td><td><code>"A   B  "</code></td></tr><tr><td><code>RTrim("  A   B  ")</code></td><td><code>"  A   B"</code></td></tr><tr><td><code>WorksheetFunction.Trim("  A   B  ")</code></td><td><code>"A B"</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><code>Trim</code>・<code>LTrim</code>・<code>RTrim</code> はいずれも、中間の連続スペースをそのまま残します。中間スペースを1つに詰めるのは <code>WorksheetFunction.Trim</code> だけです。ここが最大の違いです。</p>



<p class="wp-block-paragraph">「先頭と末尾だけ消えればいい」場合は VBA 標準の <code>Trim</code> で十分です。「単語間の余分なスペースも整えたい」場合は <code>WorksheetFunction.Trim</code> を選びます。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>TIP: 各関数の単体の使い方は、<a href="https://mashukabu.com/excel-vba-howto-use-trim/">VBA Trim関数</a>・<a href="https://mashukabu.com/excel-vba-howto-use-ltrim/">VBA LTrim関数</a>・<a href="https://mashukabu.com/excel-vba-howto-use-rtrim/">VBA RTrim関数</a>の各記事で解説しています。空白処理全体の使い分けは<a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBAで空白を削除する方法まとめ</a>も参考にしてください。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc6">WorksheetFunction.Trim が活躍する実務シーン</span></h2>



<p class="wp-block-paragraph"><code>WorksheetFunction.Trim</code> の出番は、間隔がそろっていないデータを受け取ったときです。代表的なのが、システムから出力されたレポートや CSV ファイルです。項目の区切りが複数スペースになっていることがよくあります。実務で使えるコードを2つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc7">実務コード1: 1つのセルをクレンジングする</span></h3>



<p class="wp-block-paragraph">A 列のセルに入った文字列を整え、B 列に書き出すコードです。</p>



<pre class="wp-block-code"><code>Sub CleanSingleCell()
    Dim sRaw As String   '元の文字列
    Dim sClean As String '整形後の文字列

    '--- A2セルの値を取得 ---
    sRaw = Range(&quot;A2&quot;).Value

    '--- 先頭末尾＋中間スペースを正規化 ---
    sClean = WorksheetFunction.Trim(sRaw)

    '--- 整形結果をB2セルに出力 ---
    Range(&quot;B2&quot;).Value = sClean
End Sub</code></pre>



<p class="wp-block-paragraph">A2 に <code>"  山田    太郎  "</code> のような値が入っていても、B2 には <code>"山田 太郎"</code> ときれいに出力されます。</p>



<h3 class="wp-block-heading"><span id="toc8">実務コード2: セル範囲を一括クレンジングする</span></h3>



<p class="wp-block-paragraph">実務では1セルだけでなく、列全体を一気に処理したい場面が多いはずです。A 列のデータを最終行まで順番に整えるコードです。</p>



<pre class="wp-block-code"><code>Sub CleanRangeWithTrim()
    Dim lastRow As Long '最終行の行番号
    Dim i As Long       '行カウンター

    '--- A列の最終行を取得 ---
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    '--- 2行目から最終行まで繰り返す ---
    For i = 2 To lastRow
        '--- 文字列のセルだけを対象に正規化 ---
        If VarType(Cells(i, 1).Value) = vbString Then
            Cells(i, 1).Value = WorksheetFunction.Trim(Cells(i, 1).Value)
        End If
    Next i

    MsgBox &quot;クレンジングが完了しました。&quot;
End Sub</code></pre>



<p class="wp-block-paragraph"><code>VarType</code> でセルの値が文字列かどうかを確認しています。数値や日付のセルに <code>Trim</code> をかけると、意図しない型変換が起きることがあるためです。文字列のセルだけを対象にすると安全です。</p>



<h2 class="wp-block-heading"><span id="toc9">ノーブレークスペース（Chr(160)）が削除できない落とし穴と対処法</span></h2>



<p class="wp-block-paragraph"><code>WorksheetFunction.Trim</code> には1つ大きな落とし穴があります。それが「ノーブレークスペース」です。Web ページや一部のシステムからコピーしたデータに混ざっていることがあります。</p>



<p class="wp-block-paragraph">ノーブレークスペースは、文字コードの値が160の空白文字です。HTML では <code>&nbsp;</code> として使われます。見た目は普通のスペースとそっくりですが、別の文字です。</p>



<p class="wp-block-paragraph"><code>WorksheetFunction.Trim</code> が削除できるのは、値が32の半角スペース（Chr(32)）だけです。これは公式ドキュメントにも明記されています。VBA 標準の <code>Trim</code>・<code>LTrim</code>・<code>RTrim</code> も同じく、ノーブレークスペースには反応しません。</p>



<pre class="wp-block-code"><code>Sub TrimCannotRemoveNbsp()
    Dim sText As String '元の文字列

    '--- 単語の間にノーブレークスペースを含む文字列 ---
    sText = &quot;A&quot; &amp; Chr(160) &amp; Chr(160) &amp; &quot;B&quot;

    '--- Trimをかけてもノーブレークスペースは残る ---
    MsgBox &quot;[&quot; &amp; WorksheetFunction.Trim(sText) &amp; &quot;]&quot;
End Sub</code></pre>



<p class="wp-block-paragraph">このコードを実行しても、A と B の間のノーブレークスペースは消えません。「Trim を試したのに空白が消えない」という現象の正体は、たいていこれです。</p>



<p class="wp-block-paragraph">対処法は、ノーブレークスペースを先に半角スペースへ変換することです。<code>Replace</code> 関数を使います。半角スペースに変えてから <code>WorksheetFunction.Trim</code> を通すと、区切りのスペースを残しつつ正規化できます。</p>



<pre class="wp-block-code"><code>Sub CleanWithNbsp()
    Dim sRaw As String   '元の文字列
    Dim sClean As String '整形後の文字列

    '--- A2セルの値を取得 ---
    sRaw = Range(&quot;A2&quot;).Value

    '--- ノーブレークスペースを半角スペースに変換 ---
    sClean = Replace(sRaw, Chr(160), &quot; &quot;)

    '--- 連続スペースを1つに圧縮し先頭末尾も削除 ---
    sClean = WorksheetFunction.Trim(sClean)

    '--- 整形結果をB2セルに出力 ---
    Range(&quot;B2&quot;).Value = sClean
End Sub</code></pre>



<p class="wp-block-paragraph">「<code>Chr(160)</code> を半角スペースに変換 → <code>WorksheetFunction.Trim</code>」の順番がポイントです。いきなり全削除すると、本来必要な区切りスペースまで失われることがあります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>NOTE: ノーブレークスペースの正体と消し方は、<a href="https://mashukabu.com/about-nbsp/">Excelで消えない空白の正体と消し方</a>でさらに詳しく解説しています。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc10">WorksheetFunction.Trim を使うときの注意点・よくあるエラー</span></h2>



<p class="wp-block-paragraph">最後に、つまずきやすいポイントを整理します。</p>



<p class="wp-block-paragraph">1つ目は、タブや改行は削除されないことです。削除対象はあくまで半角スペースだけです。タブ（Chr(9)）や改行（Chr(10)、Chr(13)）が混じっている場合は、<code>Replace</code> で個別に処理する必要があります。</p>



<p class="wp-block-paragraph">2つ目は、全角スペースの扱いです。<code>WorksheetFunction.Trim</code> は半角スペースを対象に設計されています。全角スペースを確実に消したいときは、<code>Replace(s, "　", " ")</code> で半角に変換してから処理するのが安全です。</p>



<p class="wp-block-paragraph">3つ目は、空セルや数値セルへの適用です。空のセルや数値のセルを直接渡すと、思わぬ型変換が起きることがあります。実務コード2のように <code>VarType</code> で文字列かどうかを確認してから渡すと、トラブルを防げます。</p>



<figure class="wp-block-table"><table><thead><tr><th>つまずきポイント</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>中間スペースが残る</td><td>VBA 標準の <code>Trim</code> を使っている</td><td><code>WorksheetFunction.Trim</code> を使う</td></tr><tr><td>ある空白だけ消えない</td><td>ノーブレークスペース（Chr(160)）</td><td><code>Replace</code> で半角スペースに変換してから処理</td></tr><tr><td>全角スペースが残る</td><td>対象は半角スペースのみ</td><td><code>Replace(s, "　", " ")</code> で半角に変換</td></tr><tr><td>タブ・改行が残る</td><td>対象は半角スペースのみ</td><td><code>Replace</code> で Chr(9)/Chr(10)/Chr(13) を処理</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph"><code>WorksheetFunction.Trim</code> は、文字列の先頭・末尾のスペースに加えて、単語間の連続スペースも1つに圧縮できるメソッドです。VBA 標準の <code>Trim</code> 関数が中間スペースを残すのに対し、こちらは中間スペースを詰めてくれます。この違いが両者の最大のポイントです。</p>



<p class="wp-block-paragraph">システム出力や CSV インポート後のデータで、間隔が不規則な文字列を整えたいときに役立ちます。ただし、ノーブレークスペース（Chr(160)）は <code>Trim</code> 系では消せません。<code>Replace</code> で半角スペースに変換してから処理する、という流れを覚えておくと安心です。</p>



<p class="wp-block-paragraph">空白処理の関数はそれぞれ役割が違います。先頭・末尾だけなら <code>Trim</code>、片側だけなら <code>LTrim</code>/<code>RTrim</code>、中間も整えるなら <code>WorksheetFunction.Trim</code>、と使い分けてみてください。</p>



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



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-vba-howto-use-trim/">VBA Trim関数の使い方｜前後の空白を一括削除する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-ltrim/">VBA LTrim関数の使い方｜先頭の空白を削除する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-rtrim/">VBA RTrim関数の使い方｜末尾の空白を一括削除する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBAで空白を削除する方法｜Trim・Replace・全角スペースの対処法まとめ</a></li><li><a href="https://mashukabu.com/vba-trim-ltrim-rtrim/">VBAのTrim・LTrim・RTrim関数で文字列の空白を除去する方法</a></li><li><a href="https://mashukabu.com/excel-vba-howto-use-worksheetfunction/">VBAでWorksheetFunctionを使う方法｜Excel関数をマクロで活用する</a></li><li><a href="https://mashukabu.com/about-nbsp/">Excelで消えない空白の正体と消し方｜ノーブレークスペース完全対策ガイド</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/vba-worksheetfunction-trim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VBAのTrim・LTrim・RTrim関数で文字列の空白を除去する方法｜WorksheetFunction.Trimとの違いも解説</title>
		<link>https://mashukabu.com/vba-trim-ltrim-rtrim/</link>
					<comments>https://mashukabu.com/vba-trim-ltrim-rtrim/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 08 Jun 2026 15:50:34 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[LTrim]]></category>
		<category><![CDATA[RTrim]]></category>
		<category><![CDATA[Trim]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[文字列操作]]></category>
		<category><![CDATA[空白除去]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7845</guid>

					<description><![CDATA[VBAのTrim・LTrim・RTrim関数で文字列の空白を除去する方法を、3関数の違いがわかる比較表とコピペできるコードで解説。全角スペースが消えない原因と対処法、WorksheetFunction.TrimとVBA Trimの違いもフローチャートで整理します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">VBAでセルの空白を取りたいけれど、Trim・LTrim・RTrimのどれを使えばいいのか迷っていませんか？さらに「Trimをかけたのに全角スペースが消えない」と詰まった経験がある方も多いはずです。</p>



<p class="wp-block-paragraph">この記事では、VBAの空白除去でつまずきがちなポイントを <strong>比較表と判断フローチャート</strong> で一気に整理します。3つの関数の違いから、全角スペースが消えない本当の原因、<code>WorksheetFunction.Trim</code>との違いまで、コピペで動くコードつきで解説していきますね。</p>



<p class="wp-block-paragraph">各関数の詳しい使い方は個別の記事にまとめてあるので、本記事は「結局どれを使えばいいの？」を最短で解決する地図として使ってください。</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">VBA Trim・LTrim・RTrimの違い【結論】</a><ol><li><a href="#toc2" tabindex="0">3関数の比較表（削除位置・構文・使う場面）</a></li><li><a href="#toc3" tabindex="0">迷ったらどれを使う？1分でわかる選び方</a></li></ol></li><li><a href="#toc4" tabindex="0">VBA Trim関数の基本と使い方</a><ol><li><a href="#toc5" tabindex="0">Trimの構文と基本コード（コピペで動く）</a></li><li><a href="#toc6" tabindex="0">LTrim・RTrimとの動作の違い</a></li></ol></li><li><a href="#toc7" tabindex="0">VBEの起動とコードの準備</a></li><li><a href="#toc8" tabindex="0">Trimで空白が消えないときの原因と対処法</a><ol><li><a href="#toc9" tabindex="0">全角スペースはTrimでは消えない</a></li><li><a href="#toc10" tabindex="0">タブ・改行・NBSPもTrimの対象外</a></li><li><a href="#toc11" tabindex="0">どの空白をどう消す？判断フローチャート</a></li></ol></li><li><a href="#toc12" tabindex="0">WorksheetFunction.TrimとVBA Trimの違い</a><ol><li><a href="#toc13" tabindex="0">中間の連続スペースの扱いが違う</a></li><li><a href="#toc14" tabindex="0">VBAからワークシート版Trimを呼ぶ方法</a></li></ol></li><li><a href="#toc15" tabindex="0">実務で使えるTrim・LTrim・RTrimの活用コード</a><ol><li><a href="#toc16" tabindex="0">コピペデータの先頭空白を一括削除（LTrim）</a></li><li><a href="#toc17" tabindex="0">氏名フィールドの全角スペースを正しく除去する</a></li><li><a href="#toc18" tabindex="0">シート全体の前後空白をまとめてクレンジング（Trim）</a></li></ol></li><li><a href="#toc19" tabindex="0">まとめ｜Trim・LTrim・RTrimの使い分け早見表</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBA Trim・LTrim・RTrimの違い【結論】</span></h2>



<p class="wp-block-paragraph">先に結論からお伝えします。VBAのTrim・LTrim・RTrimは、<strong>削除する「位置」だけが違う</strong> 3兄弟です。動作そのものはほぼ同じで、空白を消す場所が「前後」「先頭だけ」「末尾だけ」と分かれているだけなんですね。</p>



<h3 class="wp-block-heading"><span id="toc2">3関数の比較表（削除位置・構文・使う場面）</span></h3>



<p class="wp-block-paragraph">3つの関数を「構文・削除位置・戻り値・使う場面」の4軸で横並びにすると、違いが一目でわかります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>構文</th><th>削除位置</th><th><code>"  VBA 入門  "</code> の戻り値</th><th>こんなときに使う</th></tr></thead><tbody><tr><td><strong>LTrim</strong></td><td><code>LTrim(文字列)</code></td><td>先頭のみ</td><td><code>"VBA 入門  "</code></td><td>先頭のパディングだけ消したい</td></tr><tr><td><strong>RTrim</strong></td><td><code>RTrim(文字列)</code></td><td>末尾のみ</td><td><code>"  VBA 入門"</code></td><td>末尾の余分な空白だけ消したい</td></tr><tr><td><strong>Trim</strong></td><td><code>Trim(文字列)</code></td><td>先頭＋末尾</td><td><code>"VBA 入門"</code></td><td>前後どちらの空白も不要</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">3つに共通する大事なポイントが2つあります。</p>



<ul class="wp-block-list"><li><strong>中間（文字列の途中）の空白には一切手をつけない</strong>。<code>"VBA 入門"</code> のような単語間のスペースはそのまま残ります。</li><li><strong>削除できるのは半角スペースだけ</strong>。全角スペースは消えません（これが後述する最大の落とし穴です）。</li></ul>



<h3 class="wp-block-heading"><span id="toc3">迷ったらどれを使う？1分でわかる選び方</span></h3>



<p class="wp-block-paragraph">実務で迷ったら、次の3ステップで選べばOKです。</p>



<ol class="wp-block-list"><li><strong>前後どちらも消したい → Trim</strong>。いちばん出番が多いのはこれです。とりあえずTrimを覚えておけば9割の場面に対応できます。</li><li><strong>先頭だけ消したい → LTrim</strong>。固定長データの先頭パディングなど、「末尾の空白は残したい」明確な理由があるときだけ使います。</li><li><strong>末尾だけ消したい → RTrim</strong>。CSVや基幹システム出力で末尾にスペースが付くケースで活躍します。</li></ol>



<p class="wp-block-paragraph">「<code>LTrim</code>と<code>RTrim</code>を両方かけたい」と思ったら、それは<code>Trim</code>を使う場面です。<code>LTrim(RTrim(s))</code>と入れ子にするより、<code>Trim(s)</code>のほうが簡潔でコードの意図も伝わりやすいですよ。</p>



<p class="wp-block-paragraph">それぞれの関数を深掘りしたい方は、<a href="https://mashukabu.com/excel-vba-howto-use-trim/">VBA Trim関数の使い方</a>・<a href="https://mashukabu.com/excel-vba-howto-use-ltrim/">LTrim関数の使い方</a>・<a href="https://mashukabu.com/excel-vba-howto-use-rtrim/">RTrim関数の使い方</a>で実践コードつきの解説をしています。</p>



<h2 class="wp-block-heading"><span id="toc4">VBA Trim関数の基本と使い方</span></h2>



<p class="wp-block-paragraph">3関数の代表として、まずはTrimの基本動作を押さえておきましょう。Trimさえ理解すれば、LTrim・RTrimは「位置が違うだけ」なのですぐ応用できます。</p>



<h3 class="wp-block-heading"><span id="toc5">Trimの構文と基本コード（コピペで動く）</span></h3>



<p class="wp-block-paragraph">Trimの構文はとてもシンプルです。</p>



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



<p class="wp-block-paragraph">引数に文字列を渡すと、前後の半角スペースを取り除いた文字列が返ってきます。まずは動作確認用のコードを試してみましょう。VBE（後述）の標準モジュールに、以下をそのまま貼り付けてF5キーで実行してください。</p>



<pre class="wp-block-code"><code>Sub Trimの動作確認()

    Dim sBefore As String '--- 変換前の文字列 ---
    Dim sAfter As String  '--- 変換後の文字列 ---

    sBefore = &quot;   Excel VBA   &quot;
    sAfter = Trim(sBefore)

    '--- 結果をメッセージボックスで確認 ---
    MsgBox &quot;変換前: [&quot; &amp; sBefore &amp; &quot;]&quot; &amp; vbCrLf &amp; _
           &quot;変換後: [&quot; &amp; sAfter &amp; &quot;]&quot;, vbInformation

End Sub</code></pre>



<p class="wp-block-paragraph">角括弧で囲んでいるので、前後のスペースが消えたことが一目でわかります。前後に空白がない文字列を渡してもエラーにはならず、元の文字列がそのまま返るので、「空白があるか事前にチェックしなきゃ」と心配する必要はありません。</p>



<p class="wp-block-paragraph">なお、正式には<code>Strings.Trim</code>と書きますが、<code>Strings</code>はVBAの標準ライブラリ名なので通常は省略できます。もし複数ライブラリを参照していて「あいまいな名前が検出されました」というエラーが出たら、<code>Strings.Trim</code>とフル修飾で書けば解決しますよ。</p>



<h3 class="wp-block-heading"><span id="toc6">LTrim・RTrimとの動作の違い</span></h3>



<p class="wp-block-paragraph">同じ文字列をLTrim・RTrim・Trimに渡すと、削除される位置の違いがはっきり見えます。</p>



<pre class="wp-block-code"><code>Sub 3関数の違いを比較()

    Dim s As String
    s = &quot;   VBA 入門   &quot;

    Debug.Print &quot;[&quot; &amp; LTrim(s) &amp; &quot;]&quot;  '--- 結果: [VBA 入門   ]（末尾残る） ---
    Debug.Print &quot;[&quot; &amp; RTrim(s) &amp; &quot;]&quot;  '--- 結果: [   VBA 入門]（先頭残る） ---
    Debug.Print &quot;[&quot; &amp; Trim(s) &amp; &quot;]&quot;   '--- 結果: [VBA 入門]（前後消える） ---

End Sub</code></pre>



<p class="wp-block-paragraph"><code>Debug.Print</code>の結果はイミディエイトウィンドウに表示されます。3つを並べると、LTrimは左、RTrimは右、Trimは両方を削っているのがよくわかりますね。どの関数も中間の半角スペース（<code>VBA</code>と<code>入門</code>の間）は残したままです。</p>



<h2 class="wp-block-heading"><span id="toc7">VBEの起動とコードの準備</span></h2>



<p class="wp-block-paragraph">ここまでのコードを試すには、VBE（Visual Basic Editor）を開いてコードを書く場所を用意します。すでにVBEに慣れている方は、このセクションは読み飛ばして構いません。</p>



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



<p class="wp-block-paragraph">VBEが開いたら、コードを書く場所（標準モジュール）を追加します。</p>



<ol class="wp-block-list"><li>メニューバーの「挿入」→「標準モジュール」をクリック</li><li>左側のプロジェクトエクスプローラーに「Module1」が追加される</li><li>右側のコードウィンドウにコードを書く</li></ol>



<p class="wp-block-paragraph">VBEの画面構成をもっと詳しく知りたい方は、<a href="https://mashukabu.com/excel-vba-vbe-menu-explanation/">VBEの画面の見方と基本操作</a>も参考にしてみてください。なお、マクロを含むファイルは必ず <strong>マクロ有効ブック（.xlsm）</strong> 形式で保存してくださいね。通常の.xlsx形式で保存するとコードが失われてしまいます。</p>



<h2 class="wp-block-heading"><span id="toc8">Trimで空白が消えないときの原因と対処法</span></h2>



<p class="wp-block-paragraph">「Trimをかけたのに空白が残っている」——これはVBAの空白処理でいちばん多いつまずきです。原因のほとんどは、<strong>Trim系では消せない種類の空白</strong> が混じっていることにあります。</p>



<h3 class="wp-block-heading"><span id="toc9">全角スペースはTrimでは消えない</span></h3>



<p class="wp-block-paragraph">最初に、いちばん大事なファクトをはっきりさせておきます。</p>



<p class="wp-block-paragraph"><strong>VBAのTrim・LTrim・RTrimが削除できるのは、半角スペース（Chr(32)）だけです。全角スペース（ChrW(12288)）は削除されません。</strong></p>



<p class="wp-block-paragraph">一部のサイトや解説では「VBA Trimで全角スペースも消える」と書かれていることがありますが、これは誤りです。実際に試すと、全角スペースはそのまま残ります。</p>



<pre class="wp-block-code"><code>Sub 全角スペースは消えないことを確認()

    Dim s As String
    s = &quot;　東京都　&quot;  '--- 前後は全角スペース ---

    Debug.Print &quot;[&quot; &amp; Trim(s) &amp; &quot;]&quot;
    '--- 結果: [　東京都　]（全角スペースは残ったまま） ---

End Sub</code></pre>



<p class="wp-block-paragraph">日本語入力の切り替え忘れで先頭に全角スペースが入る、というのは事務作業で本当によく起こります。「Trimしたのに消えない」と感じたら、まずは全角スペースを疑ってください。対処法は後述しますが、<code>Replace</code>関数で個別に消すのが基本です。</p>



<h3 class="wp-block-heading"><span id="toc10">タブ・改行・NBSPもTrimの対象外</span></h3>



<p class="wp-block-paragraph">全角スペース以外にも、Trim系で消えない「空白に見える文字」があります。次の表で整理しておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字</th><th>文字コード</th><th>Trim系で消える？</th><th>主な混入経路</th></tr></thead><tbody><tr><td>半角スペース</td><td>Chr(32)</td><td>前後のみ消える</td><td>CSV末尾・手入力</td></tr><tr><td>全角スペース</td><td>ChrW(12288)</td><td>消えない</td><td>日本語入力の切替忘れ</td></tr><tr><td>タブ</td><td>Chr(9)</td><td>消えない</td><td>TSVインポート</td></tr><tr><td>改行（LF / CR）</td><td>Chr(10) / Chr(13)</td><td>消えない</td><td>セル内改行・他システム連携</td></tr><tr><td>NBSP</td><td>Chr(160)</td><td>消えない</td><td>Webページからのコピペ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に厄介なのが <strong>NBSP（ノーブレークスペース）</strong> です。Webページからコピーしたデータに紛れ込みやすく、見た目はただの半角スペースなのにTrimでは消えません。VLOOKUPが完全一致のはずなのに #N/A を返す、という原因不明のトラブルの正体がこれだったりします。NBSPの詳しい対策は<a href="https://mashukabu.com/about-nbsp/">ノーブレークスペース完全対策ガイド</a>で解説しています。</p>



<p class="wp-block-paragraph">「Trimしても消えない空白」の正体を突き止めたいときは、<code>AscW</code>関数で文字コードを調べるのが確実です。</p>



<pre class="wp-block-code"><code>Sub 消えない空白の正体を調べる()

    Dim s As String, i As Long
    s = Range(&quot;A1&quot;).Value  '--- 調べたいセル ---

    For i = 1 To Len(s)
        Debug.Print &quot;位置&quot; &amp; i &amp; &quot;: [&quot; &amp; Mid(s, i, 1) &amp; _
                    &quot;] → AscW=&quot; &amp; AscW(Mid(s, i, 1))
    Next i

End Sub</code></pre>



<p class="wp-block-paragraph">AscWの結果が <strong>32なら半角スペース、160ならNBSP、12288なら全角スペース</strong> です。正体さえわかれば、対応する<code>Replace</code>文を書くだけで解決できます。</p>



<h3 class="wp-block-heading"><span id="toc11">どの空白をどう消す？判断フローチャート</span></h3>



<p class="wp-block-paragraph">空白の種類が整理できたら、あとは「どの関数を使うか」を判断するだけです。次のフローで考えると迷いません。</p>



<ol class="wp-block-list"><li><strong>半角スペースが前後だけ？</strong> → そのまま <strong>Trim（LTrim / RTrim）</strong> でOK。</li><li><strong>半角スペースが文字列の途中で連続している？</strong> → <strong>WorksheetFunction.Trim</strong> で1つに圧縮（次のセクションで解説）。</li><li><strong>全角スペースが混ざっている？</strong> → <strong><code>Replace(s, ChrW(12288), "")</code></strong> で削除。半角に統一したいなら<code>StrConv(s, vbNarrow)</code>で全角→半角変換してからTrim。</li><li><strong>NBSP・タブ・改行が混ざっている？</strong> → <strong><code>Replace</code></strong> でそれぞれの文字コードを指定して削除。</li></ol>



<p class="wp-block-paragraph">つまり、<strong>「半角スペースの前後」だけがTrim系の守備範囲</strong> で、それ以外はすべてReplaceや別の関数の出番、と覚えておけば判断に迷いません。具体的なReplaceの使い方は<a href="https://mashukabu.com/vba-replace-function/">VBA Replace関数の使い方</a>で詳しく解説しています。</p>



<h2 class="wp-block-heading"><span id="toc12">WorksheetFunction.TrimとVBA Trimの違い</span></h2>



<p class="wp-block-paragraph">VBAには、これまで紹介したTrimのほかに <code>WorksheetFunction.Trim</code> という書き方もあります。名前がそっくりなので混同しがちですが、<strong>動作はまったくの別物</strong> です。ここを押さえておくと「Trimしたのに中間の空白が残る」トラブルを避けられます。</p>



<h3 class="wp-block-heading"><span id="toc13">中間の連続スペースの扱いが違う</span></h3>



<p class="wp-block-paragraph">2つの最大の違いは、<strong>文字列の途中にある連続スペースの扱い</strong> です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>VBA Trim</th><th>WorksheetFunction.Trim</th></tr></thead><tbody><tr><td>前後の半角スペース</td><td>削除する</td><td>削除する</td></tr><tr><td>中間の連続スペース</td><td>そのまま残す</td><td>1つに圧縮する</td></tr><tr><td>全角スペース</td><td>削除しない</td><td>削除しない</td></tr><tr><td>NBSP（Chr(160)）</td><td>削除しない</td><td>削除しない</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">VBA Trimは前後しか触りませんが、WorksheetFunction.Trim（＝ワークシート関数のTRIMと同じ動作）は前後に加えて中間の連続スペースを1つにまとめます。実際に比べてみましょう。</p>



<pre class="wp-block-code"><code>Sub 中間スペースの扱いを比較()

    Dim s As String
    s = &quot;田中  太郎  &quot;  '--- 中間に半角スペース2つ ---

    Debug.Print &quot;[&quot; &amp; Trim(s) &amp; &quot;]&quot;
    '--- VBA Trim → [田中  太郎]（中間は2つのまま残る） ---

    Debug.Print &quot;[&quot; &amp; Application.WorksheetFunction.Trim(s) &amp; &quot;]&quot;
    '--- ワークシート版 → [田中 太郎]（中間が1つに圧縮される） ---

End Sub</code></pre>



<p class="wp-block-paragraph">「氏名の途中に余分なスペースが入ってしまったデータを、見栄えよく整えたい」——そんなときはWorksheetFunction.Trimの出番です。逆に「前後だけ確実に消したい」場面ではVBA Trimで十分。中間まで勝手に圧縮されないぶん、データを意図せず変えてしまう心配がありません。</p>



<p class="wp-block-paragraph">なお、どちらも <strong>全角スペースは消せない</strong> 点は共通です。ワークシート関数版だからといって全角に対応するわけではないので注意してください。</p>



<h3 class="wp-block-heading"><span id="toc14">VBAからワークシート版Trimを呼ぶ方法</span></h3>



<p class="wp-block-paragraph">VBAのコード内からワークシート版のTrimを使いたいときは、次のように書きます。</p>



<pre class="wp-block-code"><code>Application.WorksheetFunction.Trim(対象文字列)</code></pre>



<p class="wp-block-paragraph"><code>Application.</code>は省略して<code>WorksheetFunction.Trim(s)</code>と書いても動きます。VBA Trimとの使い分けは、</p>



<ul class="wp-block-list"><li><strong>前後だけ消せば十分</strong> → <code>Trim(s)</code>（VBA版）</li><li><strong>中間の連続スペースも1つにまとめたい</strong> → <code>WorksheetFunction.Trim(s)</code>（ワークシート版）</li></ul>



<p class="wp-block-paragraph">と覚えておくと迷いません。ワークシート上の数式としてのTRIM関数について詳しくは、<a href="https://mashukabu.com/excel-function-howto-use-trim/">ExcelのTRIM関数の使い方</a>で解説しています。</p>



<h2 class="wp-block-heading"><span id="toc15">実務で使えるTrim・LTrim・RTrimの活用コード</span></h2>



<p class="wp-block-paragraph">ここからは、3関数の使い分けを実感できる実務コードを3つ紹介します。いずれもVarType判定で文字列セルだけを処理しているので、数値や日付のセルが混ざっていても安全に動きます。</p>



<h3 class="wp-block-heading"><span id="toc16">コピペデータの先頭空白を一括削除（LTrim）</span></h3>



<p class="wp-block-paragraph">他システムや固定長データからコピーしたデータは、桁を揃えるために先頭にスペースが詰められていることがあります。「末尾の空白は意味があるので残したいが、先頭のパディングだけ消したい」——そんなときはLTrimの出番です。</p>



<pre class="wp-block-code"><code>Sub A列の先頭空白を一括削除()

    Dim ws As Worksheet '--- 対象シート ---
    Dim cell As Range   '--- ループ用セル ---

    Set ws = ActiveSheet

    '--- A列の各セルから先頭の半角スペースを削除 ---
    For Each cell In ws.Range(&quot;A1:A&quot; &amp; ws.Cells(ws.Rows.Count, 1).End(xlUp).Row)
        If VarType(cell.Value) = vbString Then
            cell.Value = LTrim(cell.Value)
        End If
    Next cell

    MsgBox &quot;A列の先頭空白を削除しました。&quot;, vbInformation

End Sub</code></pre>



<p class="wp-block-paragraph">ここでTrimではなくLTrimを選ぶのがポイントです。前後まとめて消したいならTrimですが、「先頭だけ」という明確な意図があるならLTrimのほうがコードの意図が伝わります。<code>For Each</code>の基本は<a href="https://mashukabu.com/excel-vba-howto-use-ltrim/">LTrim関数の使い方</a>でも触れています。</p>



<h3 class="wp-block-heading"><span id="toc17">氏名フィールドの全角スペースを正しく除去する</span></h3>



<p class="wp-block-paragraph">事務作業で頻発するのが、氏名の前後に全角スペースが入ってしまうケースです。前述のとおりTrimでは全角スペースを消せないので、<code>Replace</code>で全角スペースを消してからTrimで半角スペースを仕上げる、という二段構えが定番になります。</p>



<pre class="wp-block-code"><code>Sub 氏名の全角スペースを正しく除去()

    Dim ws As Worksheet '--- 対象シート ---
    Dim cell As Range   '--- ループ用セル ---
    Dim sVal As String  '--- セルの値 ---

    Set ws = ActiveSheet

    For Each cell In ws.UsedRange
        If VarType(cell.Value) = vbString Then
            sVal = cell.Value

            '--- Step1: 全角スペースを削除（Trimでは消せない） ---
            sVal = Replace(sVal, ChrW(12288), &quot;&quot;)

            '--- Step2: 残った前後の半角スペースを削除 ---
            sVal = Trim(sVal)

            cell.Value = sVal
        End If
    Next cell

    MsgBox &quot;氏名フィールドの空白を除去しました。&quot;, vbInformation

End Sub</code></pre>



<p class="wp-block-paragraph">処理の順番が大切です。先に<code>Replace</code>で全角スペースを消し、最後に<code>Trim</code>で半角スペースを仕上げます。「Trimだけで済ませようとして全角が残る」という典型的な失敗を、この二段構えで確実に防げます。</p>



<h3 class="wp-block-heading"><span id="toc18">シート全体の前後空白をまとめてクレンジング（Trim）</span></h3>



<p class="wp-block-paragraph">「どの列に空白が混じっているか分からない」というときは、UsedRange全体を走査して前後空白をまとめて削除するのがいちばん手軽です。前後どちらも対象なのでTrimを使います。</p>



<pre class="wp-block-code"><code>Sub シート全体の前後空白をクレンジング()

    Dim ws As Worksheet '--- 対象シート ---
    Dim cell As Range   '--- ループ用セル ---
    Dim lCount As Long  '--- 処理件数カウンタ ---

    Set ws = ActiveSheet

    For Each cell In ws.UsedRange
        '--- 文字列セルかつ数式でないセルだけを処理 ---
        If VarType(cell.Value) = vbString And Not cell.HasFormula Then
            cell.Value = Trim(cell.Value)
            lCount = lCount + 1
        End If
    Next cell

    MsgBox lCount &amp; &quot; 件のセルから前後の空白を削除しました。&quot;, vbInformation

End Sub</code></pre>



<p class="wp-block-paragraph">ポイントは<code>And Not cell.HasFormula</code>の一文です。VLOOKUPやTEXT関数など結果が文字列になる数式セルも<code>VarType</code>ではvbStringを返すため、これを入れておかないと数式を計算結果の文字列で上書きしてしまう恐れがあります。計算式と手入力データが混在する業務ファイルでは、この一行が事故防止に効いてきますよ。空白処理の全体像は<a href="https://mashukabu.com/excel-vba-howto-remove-space/">VBAで空白を削除する方法まとめ</a>で一覧できます。</p>



<h2 class="wp-block-heading"><span id="toc19">まとめ｜Trim・LTrim・RTrimの使い分け早見表</span></h2>



<p class="wp-block-paragraph">最後に、VBAの空白除去の使い分けを早見表でおさらいしましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>使う関数・方法</th></tr></thead><tbody><tr><td>前後の半角スペースを消す</td><td><strong>Trim</strong></td></tr><tr><td>先頭の半角スペースだけ消す</td><td><strong>LTrim</strong></td></tr><tr><td>末尾の半角スペースだけ消す</td><td><strong>RTrim</strong></td></tr><tr><td>中間の連続スペースを1つに圧縮</td><td><strong>WorksheetFunction.Trim</strong></td></tr><tr><td>全角スペースを消す</td><td><strong>Replace(s, ChrW(12288), &#8220;&#8221;)</strong></td></tr><tr><td>NBSP・タブ・改行を消す</td><td><strong>Replace</strong> で各文字コードを指定</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">押さえるべきポイントは次の3つです。</p>



<ul class="wp-block-list"><li><strong>Trim・LTrim・RTrimの違いは「削除する位置」だけ</strong>。迷ったらTrimでOK。</li><li><strong>3関数が消せるのは半角スペースだけ</strong>。全角スペースやNBSPは消えないので、<code>Replace</code>を併用する。</li><li><strong>中間の連続スペースを整えたいときはWorksheetFunction.Trim</strong>。VBA Trimは前後しか触らない。</li></ul>



<p class="wp-block-paragraph">空白の処理は地味ですが、VLOOKUPの照合ミスや集計ズレを防ぐ大切な前処理です。本記事の比較表とフローチャートを手元の地図にして、クリーンなデータを手に入れてくださいね。各関数の実践コードをもっと見たい方は、<a href="https://mashukabu.com/excel-vba-howto-use-trim/">VBA Trim関数の使い方</a>・<a href="https://mashukabu.com/excel-vba-howto-use-ltrim/">LTrim関数の使い方</a>・<a href="https://mashukabu.com/excel-vba-howto-use-rtrim/">RTrim関数の使い方</a>もあわせてどうぞ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/vba-trim-ltrim-rtrim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのLEFTB関数の使い方｜左からバイト数で文字を抽出する</title>
		<link>https://mashukabu.com/excel-leftb-function/</link>
					<comments>https://mashukabu.com/excel-leftb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:38 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[LEFTB関数]]></category>
		<category><![CDATA[バイト処理]]></category>
		<category><![CDATA[固定長]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6519</guid>

					<description><![CDATA[ExcelのLEFTB関数の使い方を解説。文字列の先頭からバイト数で文字を抽出する方法、LEFT関数との違い、半角・全角混在データの処理、固定長フォーマットや全銀データでの実務活用例まで詳しく紹介します。]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">ExcelのLEFTB関数の使い方｜左からバイト数で文字を抽出する</h1>



<p class="wp-block-paragraph">「LEFT関数なら知っているけれど、LEFTB関数って何が違うの？」と感じたことはありませんか。文字数ではなく <strong>バイト数</strong> で先頭を取り出す LEFTB 関数は、半角と全角が混ざった文字列を扱うときに役立ちます。固定長フォーマットや全銀レコード、商品コードの先頭抽出など、業務の現場では意外と出番の多い関数なんですよ。</p>



<p class="wp-block-paragraph">この記事では、ExcelのLEFTB関数の構文・LEFT関数との違い・実務での使い分けを、サンプルデータを交えて紹介します。LENB関数との組み合わせや、よくあるエラーの対処法もまとめているので、最後まで読めば LEFTB を自信を持って使えるようになりますよ。</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><li><a href="#toc1" tabindex="0">ExcelのLEFTB関数とは？基本構文と動作</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">LEFT関数とLEFTB関数の違い</a><ol><li><a href="#toc5" tabindex="0">使い分けの判断基準</a></li></ol></li><li><a href="#toc6" tabindex="0">ExcelのLEFTB関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">例1: 半角文字列の先頭抽出</a></li><li><a href="#toc8" tabindex="0">例2: 全角文字列の先頭抽出</a></li><li><a href="#toc9" tabindex="0">例3: 半角全角混在の文字列</a></li><li><a href="#toc10" tabindex="0">例4: 半角カタカナの扱い</a></li></ol></li><li><a href="#toc11" tabindex="0">実務での活用シーン3選</a><ol><li><a href="#toc12" tabindex="0">シーン1: 固定長CSVのフィールド分解</a></li><li><a href="#toc13" tabindex="0">シーン2: 全銀フォーマットの識別子抽出</a></li><li><a href="#toc14" tabindex="0">シーン3: 半角全角混在の商品コード処理</a></li></ol></li><li><a href="#toc15" tabindex="0">LENB関数との組み合わせ</a><ol><li><a href="#toc16" tabindex="0">LENBとLEFTBで「半分のバイト数」を抽出</a></li><li><a href="#toc17" tabindex="0">バイト数で条件分岐</a></li><li><a href="#toc18" tabindex="0">全角文字数を逆算する</a></li></ol></li><li><a href="#toc19" tabindex="0">LEFTB関数を使うときの注意点</a><ol><li><a href="#toc20" tabindex="0">注意点1: 全角文字の途中で切ると半角スペースが混入する</a></li><li><a href="#toc21" tabindex="0">注意点2: 環境依存（DBCS非対応環境では LEFT と同じ動作）</a></li><li><a href="#toc22" tabindex="0">注意点3: 半角カナと全角カナの混同</a></li><li><a href="#toc23" tabindex="0">注意点4: 絵文字・サロゲートペア</a></li></ol></li><li><a href="#toc24" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc25" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc26" tabindex="0">結果が空文字 &#8220;&#8221;（エラーは出ないが期待と違う）</a></li><li><a href="#toc27" tabindex="0">結果に半角スペースが混じる</a></li><li><a href="#toc28" tabindex="0">#NAME? エラー</a></li></ol></li><li><a href="#toc29" tabindex="0">関連記事</a></li><li><a href="#toc30" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのLEFTB関数とは？基本構文と動作</span></h2>



<p class="wp-block-paragraph">ExcelのLEFTB関数は、文字列の先頭から <strong>指定したバイト数分</strong> の文字を取り出す関数です。LEFT関数が「文字数」で取り出すのに対し、LEFTBは「バイト数」で取り出す点が大きな違いです。</p>



<h3 class="wp-block-heading"><span id="toc2">構文</span></h3>



<pre class="wp-block-code"><code>=LEFTB(文字列, バイト数)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略</th><th>説明</th></tr></thead><tbody><tr><td>文字列</td><td>必須</td><td>抽出元の文字列、または文字列を返すセル参照</td></tr><tr><td>バイト数</td><td>省略可</td><td>取り出すバイト数（整数）。省略時は1バイト</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">バイト換算ルール</span></h3>



<p class="wp-block-paragraph">LEFTB関数を使うときは、文字種ごとのバイト数を押さえておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字種</th><th>バイト数</th></tr></thead><tbody><tr><td>半角英数字（A〜Z、0〜9）</td><td>1バイト</td></tr><tr><td>半角カタカナ（ｱ〜ﾝ）</td><td>1バイト</td></tr><tr><td>半角記号（!、?、@など）</td><td>1バイト</td></tr><tr><td>全角ひらがな・カタカナ</td><td>2バイト</td></tr><tr><td>漢字</td><td>2バイト</td></tr><tr><td>全角記号・全角英数字</td><td>2バイト</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ざっくりと「半角=1バイト、全角=2バイト」と覚えておけば、日常業務ではほぼ困りません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong>: LEFTB関数は、日本語のような <strong>2バイト文字セット（DBCS）言語</strong> を使う環境で意味を持つ関数です。Microsoftの公式ドキュメントによると、英語版Excelなど DBCS 非対応の環境では LEFT関数と同じ挙動になります。日本語版Excelを使っている方は安心して使ってくださいね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">LEFT関数とLEFTB関数の違い</span></h2>



<p class="wp-block-paragraph">LEFT関数とLEFTB関数の違いは、たった1行の比較で一目瞭然です。同じ文字列「Excel入門」（半角5文字+全角2文字、合計9バイト）で結果を比べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td><code>=LEFT("Excel入門", 5)</code></td><td>&#8220;Excel&#8221;</td><td>先頭5 <strong>文字</strong> を取得</td></tr><tr><td><code>=LEFTB("Excel入門", 5)</code></td><td>&#8220;Excel&#8221;</td><td>先頭5 <strong>バイト</strong> を取得（半角5文字）</td></tr><tr><td><code>=LEFT("Excel入門", 6)</code></td><td>&#8220;Excel入&#8221;</td><td>先頭6文字を取得</td></tr><tr><td><code>=LEFTB("Excel入門", 6)</code></td><td>&#8220;Excel&#8221; + 半角スペース</td><td>先頭6バイト（&#8221;入&#8221;が半端で切れる）</td></tr><tr><td><code>=LEFTB("Excel入門", 7)</code></td><td>&#8220;Excel入&#8221;</td><td>先頭7バイト（半角5+全角1=7）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは、全角文字の途中で切れる指定をしたときの挙動です。Excelは <strong>半端な1バイトを破棄して半角スペースで埋める</strong> 動きをします。文字化けは起きない代わりに「予期しないスペースが混入する」ので、バイト数の指定には注意が必要ですよ。</p>



<h3 class="wp-block-heading"><span id="toc5">使い分けの判断基準</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>文字数（見た目の文字の個数）で抽出したい</td><td>LEFT</td></tr><tr><td>バイト数（半角=1、全角=2）で抽出したい</td><td>LEFTB</td></tr><tr><td>固定長レコード・全銀フォーマットなどシステム連携</td><td>LEFTB</td></tr><tr><td>表示や見出しの整形</td><td>LEFT</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「人が見る文字数」ならLEFT、「システムが扱うバイト数」ならLEFTB、と覚えておくと迷いませんよ。</p>



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



<p class="wp-block-paragraph">実際にLEFTB関数を使ってみましょう。次のサンプルデータを使って、いくつかのパターンを試します。</p>



<figure class="wp-block-table"><table><thead><tr><th>セル</th><th>内容</th></tr></thead><tbody><tr><td>A2</td><td>&#8220;Microsoft&#8221;</td></tr><tr><td>A3</td><td>&#8220;東京都新宿区&#8221;</td></tr><tr><td>A4</td><td>&#8220;Excel関数&#8221;</td></tr><tr><td>A5</td><td>&#8220;ｱｲｳｴｵabc&#8221;</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc7">例1: 半角文字列の先頭抽出</span></h3>



<pre class="wp-block-code"><code>=LEFTB(A2, 5)</code></pre>



<p class="wp-block-paragraph">A2が&#8221;Microsoft&#8221;（半角9バイト）なので、結果は <strong>&#8220;Micro&#8221;</strong> になります。半角だけの場合は LEFT(A2, 5) と同じ結果になりますね。</p>



<h3 class="wp-block-heading"><span id="toc8">例2: 全角文字列の先頭抽出</span></h3>



<pre class="wp-block-code"><code>=LEFTB(A3, 6)</code></pre>



<p class="wp-block-paragraph">A3が&#8221;東京都新宿区&#8221;（全角6文字=12バイト）なので、結果は <strong>&#8220;東京都&#8221;</strong> になります。6バイト=全角3文字分を取り出した形です。</p>



<h3 class="wp-block-heading"><span id="toc9">例3: 半角全角混在の文字列</span></h3>



<pre class="wp-block-code"><code>=LEFTB(A4, 7)</code></pre>



<p class="wp-block-paragraph">A4が&#8221;Excel関数&#8221;（半角5+全角2=9バイト）なので、結果は <strong>&#8220;Excel関&#8221;</strong> になります。半角5バイト+全角1文字（2バイト）=7バイトを取り出した形ですね。</p>



<h3 class="wp-block-heading"><span id="toc10">例4: 半角カタカナの扱い</span></h3>



<pre class="wp-block-code"><code>=LEFTB(A5, 5)</code></pre>



<p class="wp-block-paragraph">A5が&#8221;ｱｲｳｴｵabc&#8221;（半角カナ5+半角英3=8バイト）なので、結果は <strong>&#8220;ｱｲｳｴｵ&#8221;</strong> になります。半角カタカナは1バイト扱いなので、5バイトでちょうど5文字分が取れますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong>: 第2引数を省略すると <code>LEFTB(A2)</code> のように1バイトだけ取得します。バイト数は必ず明示的に指定するのが安全です。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">実務での活用シーン3選</span></h2>



<p class="wp-block-paragraph">LEFTB関数が真価を発揮するのは、システム連携や固定長データの処理です。代表的な3つのシーンを見ていきましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">シーン1: 固定長CSVのフィールド分解</span></h3>



<p class="wp-block-paragraph">レガシー基幹システムから出力される固定長CSVは、フィールドが「先頭何バイト〜何バイト」と決まっています。たとえば次のようなレコードを想像してください。</p>



<pre class="wp-block-code"><code>JP0123東京支店12345678</code></pre>



<p class="wp-block-paragraph">このレコードの構造は「先頭2バイト=国コード、3〜6バイト=店舗コード、7バイト〜=支店名」と決まっているとします。LEFTBで先頭の国コードを切り出すには、次の数式を使います。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, 2)
→ &quot;JP&quot;</code></pre>



<p class="wp-block-paragraph">LEFT関数を使うと「先頭2文字」になり、もし全角文字が混ざると意図とずれてしまいます。バイト固定の仕様に対しては、LEFTBが正解ですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">シーン2: 全銀フォーマットの識別子抽出</span></h3>



<p class="wp-block-paragraph">全国銀行協会（全銀協）のフォーマットは、各レコードの先頭1バイトが「データ区分」と決まっています。1=ヘッダー、2=データ、8=トレーラー、9=エンドという仕様です。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, 1)
→ &quot;1&quot;（ヘッダーレコードの場合）</code></pre>



<p class="wp-block-paragraph">このバイト単位の仕様は、文字数ではなくバイト数で考えるのが自然です。LEFTBで先頭1バイトを取り出し、IF関数で分岐させればレコード種別ごとに処理を分けられますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">シーン3: 半角全角混在の商品コード処理</span></h3>



<p class="wp-block-paragraph">「半角6バイトの管理コード+全角の商品名」という形式のデータを想像してください。</p>



<figure class="wp-block-table"><table><thead><tr><th>セル</th><th>値</th></tr></thead><tbody><tr><td>A2</td><td>&#8220;ABC001ノートパソコン&#8221;</td></tr><tr><td>A3</td><td>&#8220;XY-203デスクトップPC&#8221;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">先頭6バイト（=半角6文字）の管理コードを抽出するには、次の数式を使います。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, 6)
→ &quot;ABC001&quot;</code></pre>



<p class="wp-block-paragraph">LEFT関数を使った <code>=LEFT(A2, 6)</code> でも結果は同じですが、もしデータに <strong>全角コード</strong> が混ざっていた場合の挙動は変わります。LEFTBなら「先頭6バイト=全角3文字」として処理されるので、システム仕様に合った動作になりますよ。</p>



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



<p class="wp-block-paragraph">LEFTB関数と相性が良いのが、文字列のバイト数を返すLENB関数（バイト単位で文字列の長さを返す関数）です。組み合わせることで、より柔軟なバイト処理ができます。</p>



<h3 class="wp-block-heading"><span id="toc16">LENBとLEFTBで「半分のバイト数」を抽出</span></h3>



<pre class="wp-block-code"><code>=LEFTB(A2, LENB(A2)/2)</code></pre>



<p class="wp-block-paragraph">文字列のちょうど半分のバイト数を取り出す数式です。固定の数値ではなく、データ長に応じて動的にバイト数を決められますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">バイト数で条件分岐</span></h3>



<pre class="wp-block-code"><code>=IF(LENB(A2)&gt;20, LEFTB(A2,20)&amp;&quot;...&quot;, A2)</code></pre>



<p class="wp-block-paragraph">文字列のバイト数が20を超えたら先頭20バイト+「&#8230;」を表示し、20以下ならそのまま表示する数式です。システムのフィールド長制限（例: 表示は20バイトまで）を扱うときに便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc18">全角文字数を逆算する</span></h3>



<p class="wp-block-paragraph">LENとLENBを組み合わせると、半角・全角の文字数を逆算できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>意味</th></tr></thead><tbody><tr><td><code>=LENB(A2)-LEN(A2)</code></td><td>全角文字の数（全角は2バイト、半角は1バイトなので差分が全角数）</td></tr><tr><td><code>=LEN(A2)*2-LENB(A2)</code></td><td>半角文字の数</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">これを応用すれば「全角だけを取り出すための適切なバイト数」を計算してLEFTBに渡せます。</p>



<h2 class="wp-block-heading"><span id="toc19">LEFTB関数を使うときの注意点</span></h2>



<p class="wp-block-paragraph">LEFTB関数は便利な一方で、いくつか押さえておきたいクセがあります。</p>



<h3 class="wp-block-heading"><span id="toc20">注意点1: 全角文字の途中で切ると半角スペースが混入する</span></h3>



<p class="wp-block-paragraph">全角文字を奇数バイトで切ろうとしたときの挙動には注意が必要です。Excelは半端な1バイトを破棄し、代わりに半角スペースを埋め込みます。</p>



<pre class="wp-block-code"><code>=LEFTB(&quot;あいう&quot;, 3)
→ &quot;あ &quot;（&quot;あ&quot;の後に半角スペース）</code></pre>



<p class="wp-block-paragraph">そのため、LEFTBの結果をそのまま別のシステムに連携すると、 <strong>意図しないスペース混入</strong> が起きることがあります。後段でTRIM関数を挟むか、バイト数指定を必ず偶数（または全角文字の境界）に揃える運用を徹底するのが安全ですよ。</p>



<h3 class="wp-block-heading"><span id="toc21">注意点2: 環境依存（DBCS非対応環境では LEFT と同じ動作）</span></h3>



<p class="wp-block-paragraph">LEFTB関数は <strong>DBCS言語（日本語・中国語・韓国語）対応の環境</strong> でのみ意味のある動作をします。英語版Excelやマシンの言語設定が英語の場合、LEFTB はLEFT関数と同じく文字数ベースで動作します。</p>



<p class="wp-block-paragraph">複数の環境でファイルを共有する場合は、LEFTBの代わりにLEFTを使うか、両方の環境でテストするのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc22">注意点3: 半角カナと全角カナの混同</span></h3>



<p class="wp-block-paragraph">半角カタカナ（ｱｲｳｴｵ）は <strong>1バイト</strong> ですが、見た目で全角カナ（アイウエオ）と混同しやすい文字種です。意図せず半角カナが混入していると、LEFTBの結果が予測と違うことがあります。</p>



<p class="wp-block-paragraph">確認するには、LEN(A2)とLENB(A2)を比較するのが手軽です。LEN=LENBなら全部半角、LENBがLENの倍なら全部全角、と一目で判別できますよ。</p>



<h3 class="wp-block-heading"><span id="toc23">注意点4: 絵文字・サロゲートペア</span></h3>



<p class="wp-block-paragraph">絵文字や一部の特殊文字（Unicode拡張領域）は3〜4バイト相当で扱われることがあります。最近の絵文字混在データを処理するときは、事前にテストデータで挙動を確認しましょう。</p>



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



<p class="wp-block-paragraph">LEFTB関数で遭遇しやすいエラーと対処法をまとめました。</p>



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



<p class="wp-block-paragraph"><strong>原因と対処法</strong>:</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>第2引数が負の数</td><td>バイト数は0以上の整数で指定する。<code>MAX(0, 数式)</code> でクランプ可能</td></tr><tr><td>第2引数が文字列で数値変換不可</td><td>数値またはVALUE関数で変換した値を渡す</td></tr><tr><td>セル参照先がエラー値</td><td>IFERROR関数で囲む <code>=IFERROR(LEFTB(A2,5),"")</code></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc26">結果が空文字 &#8220;&#8221;（エラーは出ないが期待と違う）</span></h3>



<p class="wp-block-paragraph"><strong>原因と対処法</strong>:</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>第2引数が0</td><td>バイト数を1以上に変更する</td></tr><tr><td>第1引数が空セル</td><td>IF関数で空チェック <code>=IF(A2="","",LEFTB(A2,5))</code></td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc27">結果に半角スペースが混じる</span></h3>



<p class="wp-block-paragraph"><strong>原因と対処法</strong>: 全角文字の途中で切れた場合に発生します。バイト数指定を見直すか、TRIM関数で末尾スペースを除去します。</p>



<pre class="wp-block-code"><code>=TRIM(LEFTB(A2, 5))</code></pre>



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



<p class="wp-block-paragraph"><strong>原因</strong>: 関数名のスペルミス（LEFTBをLEFTやLEFBと書いていないか確認）。LEFTB関数は標準のExcel関数なので、関数名さえ正しければエラーにはなりません。</p>



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



<p class="wp-block-paragraph">LEFTB関数と一緒に覚えておくと便利な、バイト単位で文字列を扱う関数も紹介します。あわせて読むと、半角・全角混在データの処理がぐっと得意になりますよ。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-rightb-function/">ExcelのRIGHTB関数の使い方｜右からバイト数で文字を抽出する</a> — LEFTBと対になる関数で、文字列の末尾からバイト数で抽出します。</li><li><a href="https://mashukabu.com/excel-findb-function/">ExcelのFINDB関数の使い方｜半角・全角の文字位置をバイト数で検索</a> — 区切り文字のバイト位置を調べ、LEFTBと組み合わせて可変長の抽出ができます。</li><li><a href="https://mashukabu.com/excel-replaceb-function/">ExcelのREPLACEB関数の使い方｜位置指定バイト置換</a> — バイト位置を指定して文字列を置き換えたいときに使います。</li><li><a href="https://mashukabu.com/excel-dbcs-function/">ExcelのDBCS関数の使い方｜JIS関数との違い・半角→全角変換</a> — この記事で何度も出てきたDBCS（2バイト文字セット）そのものを扱う関数です。</li></ul>



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



<p class="wp-block-paragraph">ExcelのLEFTB関数は、文字列の先頭から <strong>バイト数指定</strong> で文字を抽出する関数です。LEFT関数との違いと使い分けの要点をまとめると次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>観点</th><th>LEFT関数</th><th>LEFTB関数</th></tr></thead><tbody><tr><td>抽出単位</td><td>文字数</td><td>バイト数</td></tr><tr><td>全角文字の扱い</td><td>1文字</td><td>2バイト</td></tr><tr><td>主な用途</td><td>表示・見出し整形</td><td>固定長レコード・システム連携</td></tr><tr><td>環境依存</td><td>なし</td><td>DBCS言語環境で意味あり</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実務での主な活用シーンは次の3つでした。</p>



<ol class="wp-block-list"><li><strong>固定長CSVのフィールド分解</strong> — 国コード・店舗コードの先頭抽出</li><li><strong>全銀フォーマットの識別子抽出</strong> — レコード区分の1バイト判定</li><li><strong>半角全角混在の商品コード処理</strong> — 管理コードと商品名の分離</li></ol>



<p class="wp-block-paragraph">LENB関数と組み合わせれば、文字列のバイト数を動的に判定して条件分岐する処理も組めます。半角と全角が混ざるデータを扱う方は、LEFT・LEFTB・LEN・LENBの4つをセットで覚えておくと、業務がぐっと楽になりますよ。</p>



<p class="wp-block-paragraph">関連する文字列操作の関数も合わせてチェックしてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-leftb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのRIGHTB関数の使い方｜右からバイト数で文字を抽出する</title>
		<link>https://mashukabu.com/excel-rightb-function/</link>
					<comments>https://mashukabu.com/excel-rightb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:30 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[RIGHTB関数]]></category>
		<category><![CDATA[バイト処理]]></category>
		<category><![CDATA[固定長]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6513</guid>

					<description><![CDATA[ExcelのRIGHTB関数の使い方を解説。文字列の末尾からバイト数で文字を抽出する方法、RIGHT関数との違い、半角・全角混在データの処理、固定長レコードやチェックデジット抽出での実務活用例まで詳しく紹介します。]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">ExcelのRIGHTB関数の使い方｜右からバイト数で文字を抽出する</h1>



<p class="wp-block-paragraph">「RIGHT関数なら知っているけれど、RIGHTB関数って何が違うの？」と感じたことはありませんか。文字数ではなく <strong>バイト数</strong> で末尾を取り出す RIGHTB 関数は、半角と全角が混ざった文字列を扱うときに本領を発揮する関数です。固定長フォーマットの末尾チェックデジット抽出や、商品コードのロット番号取得など、業務の現場では意外と出番の多い関数なんですよ。</p>



<p class="wp-block-paragraph">この記事では、ExcelのRIGHTB関数の構文・RIGHT関数との違い・実務での使い分けまで、サンプルデータを交えながら詳しく紹介します。LENB関数との組み合わせや、よくあるエラーの対処法もまとめているので、最後まで読めば RIGHTB を自信を持って使えるようになりますよ。</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><li><a href="#toc1" tabindex="0">ExcelのRIGHTB関数とは？基本構文と動作</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">RIGHT関数とRIGHTB関数の違い</a><ol><li><a href="#toc5" tabindex="0">使い分けの判断基準</a></li></ol></li><li><a href="#toc6" tabindex="0">ExcelのRIGHTB関数の基本的な使い方</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><li><a href="#toc10" tabindex="0">バイト数を省略した場合</a></li></ol></li><li><a href="#toc11" tabindex="0">実務での活用シーン3選</a><ol><li><a href="#toc12" tabindex="0">シーン1: 固定長レコードの末尾チェックデジット抽出</a></li><li><a href="#toc13" tabindex="0">シーン2: ファイル拡張子の抽出</a></li><li><a href="#toc14" tabindex="0">シーン3: 商品コード末尾のロット番号取得</a></li></ol></li><li><a href="#toc15" tabindex="0">LENB関数との組み合わせ</a><ol><li><a href="#toc16" tabindex="0">全角文字を除いた半角末尾を取り出す</a></li><li><a href="#toc17" tabindex="0">LEFTB と組み合わせて二分割する</a></li><li><a href="#toc18" tabindex="0">条件分岐でレコード長を判定する</a></li></ol></li><li><a href="#toc19" tabindex="0">RIGHTB関数を使うときの注意点</a><ol><li><a href="#toc20" tabindex="0">マルチバイト文字の途中で切れると半角スペースになる</a></li><li><a href="#toc21" tabindex="0">文字化けや表示崩れに注意</a></li><li><a href="#toc22" tabindex="0">DBCS環境でのみ意味がある</a></li><li><a href="#toc23" tabindex="0">第2引数に小数を渡した場合</a></li></ol></li><li><a href="#toc24" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc25" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc26" tabindex="0">結果が空文字（&#8221;&#8221;）になる</a></li><li><a href="#toc27" tabindex="0">期待した文字数より少ない結果になる</a></li><li><a href="#toc28" tabindex="0">#NAME? エラー</a></li></ol></li><li><a href="#toc29" tabindex="0">関連記事</a></li><li><a href="#toc30" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのRIGHTB関数とは？基本構文と動作</span></h2>



<p class="wp-block-paragraph">ExcelのRIGHTB関数は、文字列の末尾から <strong>指定したバイト数分</strong> の文字を取り出す関数です。RIGHT関数が「文字数」で取り出すのに対し、RIGHTBは「バイト数」で取り出す点が大きな違いです。</p>



<h3 class="wp-block-heading"><span id="toc2">構文</span></h3>



<pre class="wp-block-code"><code>=RIGHTB(文字列, バイト数)</code></pre>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/省略</th><th>説明</th></tr></thead><tbody><tr><td>文字列</td><td>必須</td><td>抽出元の文字列、または文字列を返すセル参照</td></tr><tr><td>バイト数</td><td>省略可</td><td>取り出すバイト数（整数）。省略時は1バイト</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">バイト換算ルール</span></h3>



<p class="wp-block-paragraph">RIGHTB関数を使うときは、文字種ごとのバイト数を押さえておきましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字種</th><th>バイト数</th></tr></thead><tbody><tr><td>半角英数字（A〜Z、0〜9）</td><td>1バイト</td></tr><tr><td>半角カタカナ（ｱ〜ﾝ）</td><td>1バイト</td></tr><tr><td>半角記号（!、?、@など）</td><td>1バイト</td></tr><tr><td>全角ひらがな・カタカナ</td><td>2バイト</td></tr><tr><td>漢字</td><td>2バイト</td></tr><tr><td>全角記号・全角英数字</td><td>2バイト</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ざっくりと「半角=1バイト、全角=2バイト」と覚えておけば、日常業務ではほぼ困りません。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong>: RIGHTB関数は、日本語のような <strong>2バイト文字セット（DBCS）言語</strong> を使う環境で意味を持つ関数です。Microsoftの公式ドキュメントによると、英語版Excelなど DBCS 非対応の環境では RIGHT関数と同じ挙動になります。日本語版Excelを使っている方は安心して使ってくださいね。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc4">RIGHT関数とRIGHTB関数の違い</span></h2>



<p class="wp-block-paragraph">RIGHT関数とRIGHTB関数の違いは、たった1行の比較で一目瞭然です。同じ文字列「入門Excel」（全角2文字+半角5文字）で結果を比べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>説明</th></tr></thead><tbody><tr><td><code>=RIGHT("入門Excel", 5)</code></td><td>&#8220;Excel&#8221;</td><td>末尾5 <strong>文字</strong> を取得</td></tr><tr><td><code>=RIGHTB("入門Excel", 5)</code></td><td>&#8220;Excel&#8221;</td><td>末尾5 <strong>バイト</strong> を取得（半角5文字）</td></tr><tr><td><code>=RIGHT("入門Excel", 6)</code></td><td>&#8220;門Excel&#8221;</td><td>末尾6文字を取得</td></tr><tr><td><code>=RIGHTB("入門Excel", 6)</code></td><td>半角スペース + &#8220;Excel&#8221;</td><td>末尾6バイト（&#8221;門&#8221;が半端で切れる）</td></tr><tr><td><code>=RIGHTB("入門Excel", 7)</code></td><td>&#8220;門Excel&#8221;</td><td>末尾7バイト（半角5+全角1=7）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ポイントは、<strong>全角文字の途中で切れる位置を指定すると、半角スペースで埋められる</strong> という点です。これは RIGHTB が文字単位ではなくバイト単位で機械的にカウントしているためで、Microsoft の公式仕様にも明記されています。先頭側の処理である LEFTB と対称的に、末尾抽出時はスペースが先頭側に挿入される点に注意してください。</p>



<h3 class="wp-block-heading"><span id="toc5">使い分けの判断基準</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>こんなとき</th><th>使う関数</th></tr></thead><tbody><tr><td>「末尾◯文字を取りたい」と人間目線で考える</td><td>RIGHT</td></tr><tr><td>「末尾◯バイトを取りたい」とシステム目線で考える</td><td>RIGHTB</td></tr><tr><td>半角・全角が混在し、固定バイト幅のフォーマットを処理する</td><td>RIGHTB</td></tr><tr><td>半角のみ・全角のみで構成された文字列</td><td>どちらでも同じ結果</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">普段の業務でメール文や商品名から末尾の数文字を切り出すなら <strong>RIGHT</strong> で十分です。一方、銀行系の固定長レコードや、バイト数で末尾の制御コードが定義されているデータを扱うなら <strong>RIGHTB</strong> の出番。「文字数の世界」と「バイト数の世界」を切り替えて考える癖をつけておくと、データ処理で迷わなくなりますよ。</p>



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



<p class="wp-block-paragraph">それではRIGHTB関数を実際に使ってみましょう。シンプルな例から段階的に見ていきます。</p>



<h3 class="wp-block-heading"><span id="toc7">半角文字列から末尾を取り出す</span></h3>



<p class="wp-block-paragraph">セルA2に「PRODUCT-2026-A123」と入力し、末尾の「A123」（4バイト）を取り出してみます。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 4)</code></pre>



<p class="wp-block-paragraph">結果は <code>A123</code> になります。半角英数字なので 1文字=1バイト、RIGHT関数と同じ感覚で使えますね。</p>



<h3 class="wp-block-heading"><span id="toc8">全角文字列から末尾を取り出す</span></h3>



<p class="wp-block-paragraph">セルA2に「営業部第一課」と入力し、末尾4バイト（=末尾2文字）を取り出します。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 4)</code></pre>



<p class="wp-block-paragraph">結果は <code>一課</code> になります。全角文字は1文字=2バイトなので、4バイト指定で2文字分が取り出されます。</p>



<h3 class="wp-block-heading"><span id="toc9">混在文字列から末尾を取り出す</span></h3>



<p class="wp-block-paragraph">セルA2に「契約書-A100」と入力し、末尾5バイトを取り出します。「契約書」は全角3文字（6バイト）、「-A100」は半角5文字（5バイト）で構成されています。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 5)</code></pre>



<p class="wp-block-paragraph">結果は <code>-A100</code> になります。末尾の半角5文字（ハイフン+A100）がちょうど5バイトだからですね。一方で末尾6バイトを指定すると…</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 6)</code></pre>



<p class="wp-block-paragraph">結果は <code> -A100</code>（先頭に半角スペース1つ + -A100）になります。半角5バイト+全角1バイトの計6バイトを取りたいわけですが、直前の文字「書」（全角=2バイト）のうち1バイト分しか取れないため、文字として成立せず半角スペースで埋められる仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc10">バイト数を省略した場合</span></h3>



<p class="wp-block-paragraph">第2引数を省略すると 1バイトとして扱われます。</p>



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



<p class="wp-block-paragraph">結果は <code>l</code> です。末尾1バイト=半角1文字なので、l が返ります。</p>



<h2 class="wp-block-heading"><span id="toc11">実務での活用シーン3選</span></h2>



<p class="wp-block-paragraph">ここからは「現場で実際にRIGHTBが効く」具体的なシーンを3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc12">シーン1: 固定長レコードの末尾チェックデジット抽出</span></h3>



<p class="wp-block-paragraph">全銀協のフォーマットや EDI（電子データ交換）で扱われる固定長レコードでは、末尾の数バイトに制御コードやチェックデジットが格納されていることがよくあります。たとえば、各レコードが「データ部 + 末尾2バイトのチェックデジット」で構成されている場合、RIGHTB で末尾2バイトだけを切り出して検証用列に展開できます。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 2)</code></pre>



<p class="wp-block-paragraph">A列にレコード全体（半角・全角混在）が入っていても、RIGHTBなら末尾の制御部分だけを正確に抜き出せるんですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">シーン2: ファイル拡張子の抽出</span></h3>



<p class="wp-block-paragraph">ファイル名から拡張子を取り出すケース。半角拡張子は通常 3〜4 文字（=3〜4バイト）なので、RIGHTBが活躍します。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 4)</code></pre>



<p class="wp-block-paragraph">A2に「report_2026.xlsx」と入っていれば、結果は <code>xlsx</code> になります。ただし拡張子の長さは可変（jpg は3文字、xlsx は4文字、tiff は4文字、jpeg は4文字）なので、汎用的に拡張子を取り出すなら次のように FIND と組み合わせるのが安全です。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, LENB(A2) - FIND(&quot;.&quot;, A2))</code></pre>



<p class="wp-block-paragraph">「ファイル名全体のバイト数 − 最初のドット位置」で、拡張子部分のバイト数を求めて RIGHTB に渡します。半角ファイル名なら FIND で十分機能しますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">シーン3: 商品コード末尾のロット番号取得</span></h3>



<p class="wp-block-paragraph">「IT-PC-A001」のような半角ハイフン区切りの商品コードから、末尾のロット番号「A001」を取り出すケース。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 4)</code></pre>



<p class="wp-block-paragraph">末尾4バイトで A001 が取れます。商品コードが全部半角で固定長なら、これだけで運用に乗せられますね。一方、商品名が「特注品-A001」のように全角混在で末尾だけが半角ロット番号という場合も、RIGHTB なら半角部分だけを正確に抜き出せます。</p>



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



<p class="wp-block-paragraph">RIGHTBの真価は、<strong>LENB関数との組み合わせ</strong> で発揮されます。LENB は文字列の総バイト数を返す関数で、これと組み合わせると動的なバイト幅切り出しが可能になります。</p>



<h3 class="wp-block-heading"><span id="toc16">全角文字を除いた半角末尾を取り出す</span></h3>



<p class="wp-block-paragraph">「特注品-A001」のような文字列で、末尾の半角部分だけを取り出したい場合。半角部分のバイト数が固定（4バイト）なら、</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 4)</code></pre>



<p class="wp-block-paragraph">で十分ですが、半角部分の長さが可変なら、まず全角部分のバイト数を計算します。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, LENB(A2) - LEN(全角部分の文字数)*2)</code></pre>



<p class="wp-block-paragraph">実務的には、特定の区切り文字（ハイフン等）を起点に FIND/SEARCH を組み合わせて切り出すケースの方が多いでしょう。</p>



<h3 class="wp-block-heading"><span id="toc17">LEFTB と組み合わせて二分割する</span></h3>



<p class="wp-block-paragraph">レコード全体を「データ部」と「末尾コード部」に二分割するパターン。末尾2バイトがコード、それ以外がデータ部だとすると、</p>



<pre class="wp-block-code"><code>データ部: =LEFTB(A2, LENB(A2) - 2)
コード部: =RIGHTB(A2, 2)</code></pre>



<p class="wp-block-paragraph">LEFTB と RIGHTB は対称ペアとして機能するので、「全体バイト数 − 末尾バイト数」で先頭側、RIGHTB で末尾側を取り出せばきれいに分割できます。固定長フォーマットを2列に展開する定番パターンとして覚えておくと便利ですよ。</p>



<h3 class="wp-block-heading"><span id="toc18">条件分岐でレコード長を判定する</span></h3>



<p class="wp-block-paragraph">レコード長によって取り出し位置を変えたい場合は、IF と組み合わせます。</p>



<pre class="wp-block-code"><code>=IF(LENB(A2) &gt;= 10, RIGHTB(A2, 5), RIGHTB(A2, 3))</code></pre>



<p class="wp-block-paragraph">「全体が10バイト以上なら末尾5バイト、それ未満なら末尾3バイト」という条件分岐です。バリエーションのあるデータを統一的に処理する際に役立ちますね。</p>



<h2 class="wp-block-heading"><span id="toc19">RIGHTB関数を使うときの注意点</span></h2>



<p class="wp-block-paragraph">RIGHTBは便利な関数ですが、いくつか押さえておきたい注意点があります。</p>



<h3 class="wp-block-heading"><span id="toc20">マルチバイト文字の途中で切れると半角スペースになる</span></h3>



<p class="wp-block-paragraph">すでに触れたとおり、全角文字の途中で切れるバイト数を指定すると、その部分は <strong>半角スペース</strong> で埋められます。たとえば、</p>



<pre class="wp-block-code"><code>=RIGHTB(&quot;企画書&quot;, 3)</code></pre>



<p class="wp-block-paragraph">の結果は <code> 書</code>（先頭に半角スペース1つ+書）です。「画」の2バイトのうち1バイト分しか取れないため、文字として成立せず半角スペースに置き換わるわけですね。データを後続で利用する際に「先頭にスペースがあるからエラーになった」というトラブルの原因になりがちです。<strong>TRIM</strong> や <strong>CLEAN</strong> で前処理するか、そもそも切れない位置で抽出するのが安全策です。</p>



<h3 class="wp-block-heading"><span id="toc21">文字化けや表示崩れに注意</span></h3>



<p class="wp-block-paragraph">WordファイルやWebからコピーした文字列には、見た目は半角でも実は全角の英数字が紛れ込んでいることがあります。RIGHTB はバイト数で機械的に切るため、想定外のバイト数になっていると結果がズレますよ。<code>=LENB(A2)</code> で総バイト数を確認してから RIGHTB を適用すると失敗しません。</p>



<h3 class="wp-block-heading"><span id="toc22">DBCS環境でのみ意味がある</span></h3>



<p class="wp-block-paragraph">繰り返しになりますが、RIGHTB が RIGHT と異なる挙動をするのは <strong>DBCS（2バイト文字セット）言語環境</strong> に限定されます。日本語版Excelでは問題なく動作しますが、海外の同僚と共有するファイルでは挙動が変わる可能性があるので留意してください。</p>



<h3 class="wp-block-heading"><span id="toc23">第2引数に小数を渡した場合</span></h3>



<p class="wp-block-paragraph">第2引数のバイト数に小数を渡すと、Excelは自動で <strong>整数部分のみ</strong> を採用します（切り捨て）。</p>



<pre class="wp-block-code"><code>=RIGHTB(&quot;Sample&quot;, 3.7)</code></pre>



<p class="wp-block-paragraph">の結果は <code>ple</code> で、3バイト分が取り出されます。意図せず小数値が入ってしまうと結果が変わるため、<code>INT</code> 関数などで明示的に整数化しておくと安全ですね。</p>



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



<p class="wp-block-paragraph">RIGHTB関数で遭遇しやすいエラーと、その対処法をまとめました。</p>



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



<p class="wp-block-paragraph">第2引数のバイト数に <strong>負の数</strong> を指定すると #VALUE! エラーになります。</p>



<pre class="wp-block-code"><code>=RIGHTB(&quot;Excel&quot;, -2)  → #VALUE!</code></pre>



<p class="wp-block-paragraph">セル参照を使っている場合、参照先が誤って負の値になっていないか確認しましょう。<code>MAX(0, バイト数)</code> で下限を0に揃えるテクニックが使えますよ。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, MAX(0, B2))</code></pre>



<h3 class="wp-block-heading"><span id="toc26">結果が空文字（&#8221;&#8221;）になる</span></h3>



<p class="wp-block-paragraph">第2引数に <strong>0</strong> を指定すると空文字が返ります。</p>



<pre class="wp-block-code"><code>=RIGHTB(&quot;Excel&quot;, 0)  → &quot;&quot;</code></pre>



<p class="wp-block-paragraph">これはエラーではなく仕様です。LENB の計算結果が想定外に0になっていないか、上流の数式を見直してみてください。</p>



<h3 class="wp-block-heading"><span id="toc27">期待した文字数より少ない結果になる</span></h3>



<p class="wp-block-paragraph">「末尾4文字を取りたいのに、3文字しか返ってこない…」というケース。これは取り出し対象に <strong>全角文字が含まれている</strong> のが原因です。RIGHT関数なら末尾4文字、RIGHTB関数なら末尾4 <strong>バイト</strong> なので、全角2文字（=4バイト）しか取れません。</p>



<p class="wp-block-paragraph">文字数で取りたいなら <strong>RIGHT</strong>、バイト数で取りたいなら <strong>RIGHTB</strong> を使う、という根本ルールに立ち返って関数を選び直しましょう。</p>



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



<p class="wp-block-paragraph">関数名のスペルミスです。<code>RIGHTB</code> を <code>RIGTHB</code> や <code>RIGTB</code> と打っていないか確認してください。Excelでは関数名の予測候補が出るので、Tabキーで補完すると入力ミスを防げますよ。</p>



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



<p class="wp-block-paragraph">RIGHTB関数とあわせて覚えておくと、文字列処理の引き出しが広がる関数を紹介します。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-leftb-function/">ExcelのLEFTB関数の使い方｜左からバイト数で文字を抽出する</a> — RIGHTBと対称ペアになる先頭側のバイト抽出関数です。</li><li><a href="https://mashukabu.com/excel-function-howto-use-right/">ExcelのRIGHT関数の使い方｜文字列の右から指定文字数を取り出す方法</a> — バイト数ではなく文字数で末尾を取り出す「文字数版」です。</li><li><a href="https://mashukabu.com/excel-function-howto-use-lenb/">ExcelのLENB関数の使い方｜バイト数をカウントしてLENと使い分ける方法</a> — RIGHTBと組み合わせて動的なバイト幅切り出しを実現します。</li><li><a href="https://mashukabu.com/excel-findb-function/">ExcelのFINDB関数の使い方｜半角・全角の文字位置をバイト数で検索</a> — バイト位置を起点にした抽出と相性のよい検索関数です。</li></ul>



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



<p class="wp-block-paragraph">ExcelのRIGHTB関数は、文字列の末尾から <strong>バイト数指定</strong> で文字を取り出す関数です。RIGHT関数の「文字数版」に対する「バイト数版」と理解すると、使い分けがスッキリ整理できます。</p>



<ul class="wp-block-list"><li><strong>構文</strong>: <code>=RIGHTB(文字列, バイト数)</code></li><li><strong>半角=1バイト、全角=2バイト</strong> が基本ルール</li><li>全角の途中で切れると <strong>半角スペース</strong> で埋められる</li><li>固定長レコードの末尾チェックデジット・拡張子・ロット番号取得で活躍</li><li><strong>LENB関数・LEFTB関数</strong> との組み合わせで二分割や動的切り出しが可能</li><li>第2引数が <strong>負の数で #VALUE!</strong>、0で空文字、小数は切り捨て</li></ul>



<p class="wp-block-paragraph">普段は RIGHT 関数で間に合っていても、固定長データや半角全角混在のテキストを扱う場面では RIGHTB が一番手っ取り早い解決策になります。LEFTB との対称ペアで覚えておくと、データ整形の引き出しが一気に増えますよ。ぜひお手元のデータで試してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-rightb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのLENB関数の使い方｜バイト数</title>
		<link>https://mashukabu.com/spreadsheet-lenb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-lenb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 00:42:45 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LEFTB]]></category>
		<category><![CDATA[LEN]]></category>
		<category><![CDATA[LENB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6102</guid>

					<description><![CDATA[スプレッドシートのLENB関数の使い方を実例付きで解説します。全角2バイト・半角1バイトで文字列のバイト数を数える関数で、LEN関数との違い、LEFTB・RIGHTB・MIDBとの組み合わせ、基幹システム連携での超過チェックまで紹介。コピペで使えるテンプレートも用意しました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで文字列を扱っていると、「このデータのバイト数を知りたい」という場面にぶつかることがありますよね。基幹システムに流し込むCSVで「摘要欄は40バイトまで」と指定されることもあります。入力フォームで半角40バイト・全角20文字の制約がかかることも多いですよね。文字数なら数えられても、バイト数はパッと出てこない方が多いのではないでしょうか。</p>



<p class="wp-block-paragraph">そんなときに活躍するのが、スプレッドシートのLENB関数です。全角2バイト・半角1バイトでカウントしてくれます。半角と全角が混ざっている文字列でも、正確にバイト数が測れますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのLENB関数の基本構文から、LEN関数との違い、LEFTBやMIDBとの組み合わせまで紹介します。実務でよく使うバイト数チェックのテンプレートも用意しました。コピペで使える超過チェック用の4行テンプレートも置いておくので、そのまま貼って活用してくださいね。</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">スプレッドシートのLENB関数とは？バイト数を返す関数</a><ol><li><a href="#toc2" tabindex="0">LENB関数の構文と引数</a></li><li><a href="#toc3" tabindex="0">全角=2バイト・半角=1バイトのルール</a></li></ol></li><li><a href="#toc4" tabindex="0">LEN関数とLENB関数の違い</a><ol><li><a href="#toc5" tabindex="0">文字数とバイト数の違いを整理</a></li><li><a href="#toc6" tabindex="0">LENB-LENで全角文字数を数えるテクニック</a></li><li><a href="#toc7" tabindex="0">半角文字数だけを逆算するテクニック</a></li></ol></li><li><a href="#toc8" tabindex="0">スプレッドシートのLENB関数の基本的な使い方</a><ol><li><a href="#toc9" tabindex="0">全角・半角が混在する文字列での挙動</a></li><li><a href="#toc10" tabindex="0">空白・改行・記号のカウント</a></li></ol></li><li><a href="#toc11" tabindex="0">LEFTB・RIGHTB・MIDBとの組み合わせパターン</a><ol><li><a href="#toc12" tabindex="0">LENBで超過検出→LEFTBでトリミング</a></li><li><a href="#toc13" tabindex="0">固定長レイアウトの確認に使う</a></li></ol></li><li><a href="#toc14" tabindex="0">実務で使えるバイト数チェックの活用例</a><ol><li><a href="#toc15" tabindex="0">基幹システム連携のCSV整形</a></li><li><a href="#toc16" tabindex="0">入力フォームのバイト数バリデーション</a></li><li><a href="#toc17" tabindex="0">入力規則にLENBを組み込んで全角・半角混入を弾く</a></li><li><a href="#toc18" tabindex="0">コピペで使えるテンプレート</a></li><li><a href="#toc19" tabindex="0">ARRAYFORMULAで範囲一括適用</a></li><li><a href="#toc20" tabindex="0">SUMPRODUCTで超過行数を一括集計する</a></li></ol></li><li><a href="#toc21" tabindex="0">LENB関数でよくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">結果が想定と合わない</a></li><li><a href="#toc23" tabindex="0">配列を直接渡したときの挙動</a></li><li><a href="#toc24" tabindex="0">数値や日付を渡したときの挙動</a></li></ol></li><li><a href="#toc25" tabindex="0">ExcelのLENB関数とスプレッドシートのLENB関数、動作が違う点に注意</a></li><li><a href="#toc26" tabindex="0">ASC・SUBSTITUTEでデータを整形してからバイト数を計る</a><ol><li><a href="#toc27" tabindex="0">ASC関数で全角英数字・カタカナを半角化してからチェックする</a></li><li><a href="#toc28" tabindex="0">SUBSTITUTE関数でスペースや区切り文字を除外してからチェックする</a></li></ol></li><li><a href="#toc29" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのLENB関数とは？バイト数を返す関数</span></h2>



<p class="wp-block-paragraph">スプレッドシートのLENB関数は、文字列のバイト数を返す関数です。読み方は「レンビー」と読みます。LEN（Length＝長さ）とB（Byte＝バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">日本語環境では、全角文字を2バイト、半角文字を1バイトとしてカウントします。全角半角が混ざった商品名や住所、摘要欄のテキストなどを、バイト単位で管理したいときに使える関数ですよ。</p>



<h3 class="wp-block-heading"><span id="toc2">LENB関数の構文と引数</span></h3>



<p class="wp-block-paragraph">LENB関数の構文はとてもシンプルです。引数は1つだけなので、覚えるのも楽ですよ。</p>



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



<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>必須</td><td>バイト数を調べたいテキスト、またはセル参照</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">空のセルや空文字列 <code>""</code> を渡すと、結果は 0 になります。数値を渡した場合は文字列として扱われ、桁数がそのままバイト数になりますよ。たとえば <code>=LENB(123)</code> の結果は 3 です。エラー値（#N/A や #VALUE! など）を渡すと、そのエラーがそのまま返ってくるので注意してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc3">全角=2バイト・半角=1バイトのルール</span></h3>



<p class="wp-block-paragraph">LENB関数のカウントルールは、日本語環境だと次のようになっています。</p>



<ul class="wp-block-list"><li>全角文字（ひらがな・カタカナ・漢字・全角英数字・全角記号）: <strong>1文字=2バイト</strong></li><li>半角文字（英数字・半角カタカナ・半角記号）: <strong>1文字=1バイト</strong></li></ul>



<p class="wp-block-paragraph">意外と見落としがちなのが、<strong>半角カタカナは1バイト</strong>という点です。JIS X 0201（半角カナを定義するASCII拡張の文字コード規格）で定義されているため、全角カタカナ（2バイト）とはカウントが違いますよ。また、全角スペースや全角記号も2バイト、改行コード（CHAR(10)）は1バイトとしてカウントされます。</p>



<h2 class="wp-block-heading"><span id="toc4">LEN関数とLENB関数の違い</span></h2>



<p class="wp-block-paragraph">LENB関数とLEN関数は似ていますが、数える単位が違うだけです。ここを押さえておくと、使い分けで迷わなくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc5">文字数とバイト数の違いを整理</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>LEN</td><td>文字数</td><td>1文字</td><td>1文字</td></tr><tr><td>LENB</td><td>バイト数</td><td>2バイト</td><td>1バイト</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実際に同じ文字列で結果を比べてみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字列</th><th>=LEN(A2)</th><th>=LENB(A2)</th></tr></thead><tbody><tr><td>&#8220;あいうえお&#8221;</td><td>5</td><td>10</td></tr><tr><td>&#8220;ABCDE&#8221;</td><td>5</td><td>5</td></tr><tr><td>&#8220;Excel関数&#8221;</td><td>7</td><td>9</td></tr><tr><td>&#8220;商品A-100&#8221;</td><td>7</td><td>10</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">全角だけ、半角だけなら違いは出にくいです。でも混在するとLENB関数のほうが大きくなります。バイト数制限のあるシステムで使うのは、当然LENBのほうですよ。</p>



<p class="wp-block-paragraph">LEN関数の基本を押さえたい方は、<a href="https://mashukabu.com/spreadsheet-len-function/">スプレッドシートのLEN関数の使い方</a>もあわせてチェックしてみてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc6">LENB-LENで全角文字数を数えるテクニック</span></h3>



<p class="wp-block-paragraph">ここでちょっと便利なワザを紹介しますね。LENBからLENを引くと、「全角文字だけの個数」が取得できます。</p>



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



<p class="wp-block-paragraph">全角文字は2バイトで1文字、半角文字は1バイトで1文字です。差分を取ると「全角文字のぶんだけ+1されている」という仕組みなんですよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字列</th><th>LENB-LEN</th><th>意味</th></tr></thead><tbody><tr><td>&#8220;あいうえお&#8221;</td><td>5</td><td>全角5文字</td></tr><tr><td>&#8220;ABCDE&#8221;</td><td>0</td><td>全角0文字</td></tr><tr><td>&#8220;Excel関数&#8221;</td><td>2</td><td>全角2文字（関・数）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「データの中に全角文字が混ざっていないかチェックしたい」という場面で便利に使えますよ。たとえば半角英数字のみ入力すべきコード列に全角が紛れていないか、LENB-LEN が 0 以外の行を抽出すれば一発で見つかります。</p>



<h3 class="wp-block-heading"><span id="toc7">半角文字数だけを逆算するテクニック</span></h3>



<p class="wp-block-paragraph">「LENB-LEN = 全角文字数」と同様に、「半角文字数だけを取り出す」公式も覚えておくと便利ですよ。</p>



<pre class="wp-block-code"><code>=LEN(A2)*2 - LENB(A2)</code></pre>



<p class="wp-block-paragraph">考え方はシンプルです。仮にすべての文字が全角なら LENB は LEN×2 になります。半角文字が混ざっていると、全角換算より LENB が小さくなります。その差が半角文字の個数というわけです。</p>



<figure class="wp-block-table"><table><thead><tr><th>文字列</th><th>LEN×2</th><th>LENB</th><th>LEN×2-LENB</th><th>意味</th></tr></thead><tbody><tr><td>&#8220;あいうえお&#8221;</td><td>10</td><td>10</td><td>0</td><td>半角0文字</td></tr><tr><td>&#8220;ABCDE&#8221;</td><td>10</td><td>5</td><td>5</td><td>半角5文字</td></tr><tr><td>&#8220;Excel関数&#8221;</td><td>14</td><td>9</td><td>5</td><td>半角5文字（E,x,c,e,l）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">住所や氏名データの中に英数字が何文字含まれているかを集計したい場面などで役立ちますよ。「全角LENB-LEN」と「半角LEN×2-LENB」の2つをセットで覚えておけば、文字種の分析がかなり楽になります。</p>



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



<p class="wp-block-paragraph">それではLENB関数を実際に使ってみましょう。いくつかのケースで挙動を確認しておくと、実務で迷わなくなりますよ。</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><code>=LENB("あいうえお")</code></td><td>10</td><td>全角5文字×2バイト</td></tr><tr><td><code>=LENB("ABCDE")</code></td><td>5</td><td>半角5文字×1バイト</td></tr><tr><td><code>=LENB("商品A-100")</code></td><td>10</td><td>全角2（商品）+ 半角5（A-100）</td></tr><tr><td><code>=LENB("ｱｲｳｴｵ")</code></td><td>5</td><td>半角カナ5文字×1バイト</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">半角カナが1バイトあつかいなのは、慣れるまで少し意外に感じるかもしれません。でも、基幹システムなどで半角カナを使うレイアウトなら、この仕様のおかげでバイト数がコンパクトになりますよ。</p>



<h3 class="wp-block-heading"><span id="toc10">空白・改行・記号のカウント</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><code>=LENB(" ")</code></td><td>1</td><td>半角スペースは1バイト</td></tr><tr><td><code>=LENB("　")</code></td><td>2</td><td>全角スペースは2バイト</td></tr><tr><td><code>=LENB(CHAR(10))</code></td><td>1</td><td>改行は1バイト</td></tr><tr><td><code>=LENB("")</code></td><td>0</td><td>空文字列は0</td></tr><tr><td><code>=LENB("！？")</code></td><td>4</td><td>全角記号は2バイト</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">基幹システム向けのCSVで「改行コードも含めてバイト数カウントしたい」という場合にも便利です。CHAR(10)ぶんの1バイトも含まれているので、そのまま使えますよ。</p>



<h2 class="wp-block-heading"><span id="toc11">LEFTB・RIGHTB・MIDBとの組み合わせパターン</span></h2>



<p class="wp-block-paragraph">LENB関数は単体でも便利ですが、バイト系の切り出し関数と組み合わせるとさらに活躍します。LEFTB・RIGHTB・MIDBは、それぞれ左・右・任意位置からバイト単位で切り出す関数ですよ。実務での頻出パターンを2つ紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc12">LENBで超過検出→LEFTBでトリミング</span></h3>



<p class="wp-block-paragraph">一番よく使うのがこのパターンです。A列に文字列、B列に上限バイト数を入れている想定で、C列に「判定結果＋自動トリミング」を表示します。</p>



<pre class="wp-block-code"><code>=IF(LENB(A2)&gt;B2, LEFTB(A2,B2), A2)</code></pre>



<p class="wp-block-paragraph">この1本で、上限を超えている行だけ左から上限ぶん切り出せます。セーフな行はそのまま残してくれますよ。データ量が多いシートでも、列挿入1本で整形できるので作業時間がぐっと短くなります。</p>



<p class="wp-block-paragraph">さらに「超過した旨を表示してから切る」なら、こんな書き方もできます。</p>



<pre class="wp-block-code"><code>=IF(LENB(A2)&gt;B2, LEFTB(A2,B2)&amp;&quot;★&quot;, A2)</code></pre>



<p class="wp-block-paragraph">★マーク付きにしておくと、あとで目視確認したい行がすぐ見つかりますよ。詳しい使い方は<a href="https://mashukabu.com/spreadsheet-leftb-function/">スプレッドシートのLEFTB関数の使い方</a>も参考にしてみてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc13">固定長レイアウトの確認に使う</span></h3>



<p class="wp-block-paragraph">古い基幹システムから落とした固定長ファイルを扱うときも、LENBは頼りになります。たとえば「先頭8バイトが顧客コード、次の20バイトが氏名」というレイアウトがあるとしますね。データ全体の長さを事前に確認したい場面で重宝します。</p>



<pre class="wp-block-code"><code>全体のバイト数:  =LENB(A2)
氏名フィールド:  =MIDB(A2, 9, 20)
末尾フィールド:  =RIGHTB(A2, 10)</code></pre>



<p class="wp-block-paragraph">レイアウト定義書に書かれた想定バイト数（例: 合計128バイト）と、LENBの結果が一致しているか確認しておきましょう。あとで切り出したときのズレに気付けますよ。MIDBやRIGHTBの詳しい使い方は<a href="https://mashukabu.com/spreadsheet-midb-function/">スプレッドシートのMIDB関数の使い方</a>と<a href="https://mashukabu.com/spreadsheet-rightb-function/">スプレッドシートのRIGHTB関数の使い方</a>もあわせてチェックしてみてください。</p>



<h2 class="wp-block-heading"><span id="toc14">実務で使えるバイト数チェックの活用例</span></h2>



<p class="wp-block-paragraph">LENB関数を使いこなせると、事務作業のいろんな場面で時短につながります。よく使う3つの活用例を紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc15">基幹システム連携のCSV整形</span></h3>



<p class="wp-block-paragraph">会計ソフトや販売管理システムへの取り込み用CSVで、「摘要欄は40バイトまで」といった制限はよく出てきます。事前にLENBでチェックしておくと、取り込みエラーを防げますよ。</p>



<pre class="wp-block-code"><code>=IF(LENB(A2)&gt;40, &quot;超過&quot;, &quot;OK&quot;)</code></pre>



<p class="wp-block-paragraph">件数が多いときは、フィルタで「超過」だけ抽出すれば、対応が必要な行がすぐ見つかります。上長に「◯件を修正してから送ります」と報告できるので、やり取りもスムーズですよ。</p>



<h3 class="wp-block-heading"><span id="toc16">入力フォームのバイト数バリデーション</span></h3>



<p class="wp-block-paragraph">Googleフォームや自作の入力シートで、「このフィールドは半角40バイト・全角20文字以内」というルールを設けたい場合にも使えます。条件付き書式と組み合わせると、超過した行を自動で赤くできますよ。</p>



<p class="wp-block-paragraph">条件付き書式の「カスタム数式」にこう入れます。</p>



<pre class="wp-block-code"><code>=LENB($A2)&gt;40</code></pre>



<p class="wp-block-paragraph">A列の文字列が40バイトを超えると、行がハイライトされます。入力者に視覚的に伝わるので、修正漏れが減りますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">入力規則にLENBを組み込んで全角・半角混入を弾く</span></h3>



<p class="wp-block-paragraph">バイト数チェックを「後から検出」するだけでなく、そもそも入力時点で弾いてしまう方法もありますよ。スプレッドシートの「データの入力規則」のカスタム数式にLENBを使うと、担当者が誤って全角入力してしまうミスを事前に防げます。</p>



<p class="wp-block-paragraph"><strong>半角のみ許可する入力規則</strong></p>



<p class="wp-block-paragraph">社員コードや製品コードなど、半角英数字しか入力させたくない列に設定します。</p>



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



<p class="wp-block-paragraph">LENとLENBが等しい＝全文字が半角、という条件になります。全角文字が1文字でも入ると LEN < LENB になるため、入力が弾かれますよ。</p>



<p class="wp-block-paragraph"><strong>全角のみ許可する入力規則</strong></p>



<p class="wp-block-paragraph">氏名欄など、全角表記を統一したい列に使います。</p>



<pre class="wp-block-code"><code>=LEN(A1)*2=LENB(A1)</code></pre>



<p class="wp-block-paragraph">設定手順は次の通りです。</p>



<ol class="wp-block-list"><li>対象の列または範囲を選択する</li><li>メニューの「データ」→「データの入力規則」を開く</li><li>「条件」で「カスタム数式」を選び、上記の数式を入力する</li><li>「無効なデータの場合」を「入力を拒否する」に設定する</li></ol>



<p class="wp-block-paragraph">入力規則のカスタム数式にLENBを使う方法は、REGEXMATCH（正規表現でパターンマッチングする関数）と比較してもメリットがあります。<code>=REGEXMATCH(A1,"^[a-zA-Z0-9]+$")</code> のような数式では英数字以外の記号が漏れる場合もありますが、<code>LEN=LENB</code> の方法なら全角スペース・全角記号・全角カタカナなど「あらゆる全角文字」をまとめて弾けますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">コピペで使えるテンプレート</span></h3>



<p class="wp-block-paragraph">よく使う組み合わせを一式テンプレートにしました。そのまま貼って使ってくださいね。A2にデータ、B2に上限バイト数という前提です。</p>



<pre class="wp-block-code"><code>現在のバイト数:   =LENB(A2)
超過チェック:     =IF(LENB(A2)&gt;B2, &quot;超過 (&quot;&amp;LENB(A2)&amp;&quot;B)&quot;, &quot;OK&quot;)
トリミング結果:   =IF(LENB(A2)&gt;B2, LEFTB(A2,B2), A2)
残バイト数:       =B2-LENB(A2)</code></pre>



<p class="wp-block-paragraph">4つ並べておけば、現在のバイト数・超過判定・自動トリミング・残りバイト数が一度に把握できますよ。データ整形のたびに手作業する手間が減るので、月次のシステム連携業務がぐっと楽になります。</p>



<h3 class="wp-block-heading"><span id="toc19">ARRAYFORMULAで範囲一括適用</span></h3>



<p class="wp-block-paragraph">Googleスプレッドシートならではのワザも紹介しますね。ARRAYFORMULA（範囲に対して数式を一括適用する関数）と組み合わせると、行数ぶんの数式を書かなくて済みますよ。</p>



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



<p class="wp-block-paragraph">LENBは本来単一セル向けの関数です。ARRAYFORMULAでラップしてあげると、範囲一括で動きますよ。A列が空なら空白を返すようにIFを入れておくと、末尾の空行が「0」で埋まるのを防げます。</p>



<h3 class="wp-block-heading"><span id="toc20">SUMPRODUCTで超過行数を一括集計する</span></h3>



<p class="wp-block-paragraph">個々の行に判定を入れるだけでなく、「全体で何件が上限オーバーしているか」を1セルでまとめて出したい場面もありますよね。SUMPRODUCT（配列の積の合計を返す関数）と組み合わせると、超過件数を一括で集計できます。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((LENB(A2:A100)&gt;40)*1)</code></pre>



<p class="wp-block-paragraph">「LENB(A2:A100)>40」で各行をTRUE/FALSEに変換し、×1で0/1に変えてから合計します。ARRAYFORMULAなしで範囲全体に対して動くのがポイントですよ。</p>



<p class="wp-block-paragraph">さらに超過率（パーセンテージ）を出したい場合はこうします。</p>



<pre class="wp-block-code"><code>=SUMPRODUCT((LENB(A2:A100)&gt;40)*1)/COUNTA(A2:A100)</code></pre>



<p class="wp-block-paragraph">セルの表示形式をパーセンテージにしておけば、「今月の請求データで40バイト超は全体の○%」という数値がすぐ確認できます。上長への報告やシステム移行前の品質チェックで、件数ベースのサマリーが必要なときに重宝しますよ。</p>



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



<p class="wp-block-paragraph">LENB関数でつまずきやすいポイントを3つ紹介します。原因と対策をセットで覚えておくと、現場で詰まりにくくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc22">結果が想定と合わない</span></h3>



<p class="wp-block-paragraph">「半角だけのつもりでLENBを使ったら、思ったより多くなった」というときは、<strong>全角スペースや全角記号が紛れている</strong>ケースがほとんどです。見た目ではわからない全角混入を疑ってみてください。</p>



<p class="wp-block-paragraph">LENB-LENの差分を見れば、全角文字の個数が一瞬でわかります。</p>



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



<p class="wp-block-paragraph">この結果が0でなければ、全角が混ざっている証拠ですよ。ASC関数（全角を半角に変換する関数）と組み合わせて整形するのも手ですね。</p>



<h3 class="wp-block-heading"><span id="toc23">配列を直接渡したときの挙動</span></h3>



<p class="wp-block-paragraph">LENB関数自体は引数1つで単純なので、エラーは起きにくいです。ただし、<strong>配列（範囲）を直接渡したとき</strong>は想定外の結果になることがあります。</p>



<pre class="wp-block-code"><code>=LENB(A2:A10)   → 結果は A2 の値だけ（範囲は無視）</code></pre>



<p class="wp-block-paragraph">範囲に一括適用したいときは、先ほど紹介したARRAYFORMULAでラップしてくださいね。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(LENB(A2:A10))</code></pre>



<p class="wp-block-paragraph">これで範囲ぶんの結果が縦に並びます。</p>



<h3 class="wp-block-heading"><span id="toc24">数値や日付を渡したときの挙動</span></h3>



<p class="wp-block-paragraph">LENB関数に数値や日付を渡すと、文字列化された見た目の桁数をカウントします。日付は内部的に数値で管理されているため、想定外の結果になることがありますよ。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>補足</th></tr></thead><tbody><tr><td><code>=LENB(123)</code></td><td>3</td><td>数値は桁数ぶん</td></tr><tr><td><code>=LENB(TODAY())</code></td><td>5</td><td>日付のシリアル値（例: 46401）の桁数</td></tr><tr><td><code>=LENB(TEXT(TODAY(),"yyyy/mm/dd"))</code></td><td>10</td><td>文字列化してからカウント</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">日付のバイト数を測りたいときは、TEXT関数で表示形式の文字列に変換してから渡すのが正解ですよ。シリアル値のまま渡すとズレるので、気をつけてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc25">ExcelのLENB関数とスプレッドシートのLENB関数、動作が違う点に注意</span></h2>



<p class="wp-block-paragraph">ExcelでLENBを使っていた方がスプレッドシートに移行するときに、意外な落とし穴があります。<strong>全角英数字のバイト数の扱いが異なります。</strong></p>



<figure class="wp-block-table"><table><thead><tr><th>文字</th><th>Excel</th><th>スプレッドシート</th></tr></thead><tbody><tr><td>半角英数字（ABC）</td><td>1バイト</td><td>1バイト</td></tr><tr><td>半角カタカナ（ｱｲｳ）</td><td>1バイト</td><td>1バイト</td></tr><tr><td>全角ひらがな（あい）</td><td>2バイト</td><td>2バイト</td></tr><tr><td>全角英数字（ＡＢＣ）</td><td>2バイト</td><td>2バイト</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">基本的なカウントルールは両者で共通しています。ただし、Excelでは「全角・半角の判定をShift-JISの文字コード基準」で行うのに対し、スプレッドシートは内部的にUnicodeで処理します。そのため、旧規格で定義されたマルチバイト文字（一部の特殊記号など）の扱いで稀に結果が異なる場合がありますよ。</p>



<p class="wp-block-paragraph"><strong>ASC関数で文字種を統一してからチェックする</strong></p>



<p class="wp-block-paragraph">移植する際は、事前にASC関数（全角英数字・カタカナ・記号を半角に変換する関数）で文字種を統一してからLENBに渡すのが安全です。</p>



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



<p class="wp-block-paragraph">ただし、ひらがな・漢字はASCでは変換されないので、あくまでも英数字・記号・カタカナが対象であることに注意してくださいね。ExcelとスプレッドシートのLENBを混在させる業務では、どちらの仕様でカウントするかをチームで明示しておくとトラブルを防げますよ。</p>



<p class="wp-block-paragraph">ExcelのLENBとの詳しい比較は<a href="https://mashukabu.com/excel-function-howto-use-lenb/">ExcelのLENB関数の使い方</a>もあわせてご覧ください。</p>



<h2 class="wp-block-heading"><span id="toc26">ASC・SUBSTITUTEでデータを整形してからバイト数を計る</span></h2>



<p class="wp-block-paragraph">LENBに渡す前にデータを整形しておくと、より正確なバイト数チェックができますよ。2つのパターンを紹介します。</p>



<h3 class="wp-block-heading"><span id="toc27">ASC関数で全角英数字・カタカナを半角化してからチェックする</span></h3>



<p class="wp-block-paragraph">ユーザーが全角で入力してしまった英数字を「半角換算」した上でバイト数を判定したい場合、ASCでまとめて変換してからLENBに渡します。</p>



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



<p class="wp-block-paragraph">「全角・半角どちらで入力されても同じ基準でバイト数判定したい」という要件に対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc28">SUBSTITUTE関数でスペースや区切り文字を除外してからチェックする</span></h3>



<p class="wp-block-paragraph">氏名欄の姓名間スペースや、電話番号のハイフンを除いたバイト数を測りたい場合は、SUBSTITUTE（指定した文字を別の文字に置換する関数）で除外してからLENBに渡します。</p>



<p class="wp-block-paragraph">半角・全角スペース両方を除外する場合:</p>



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



<p class="wp-block-paragraph">ハイフンを除外する場合:</p>



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



<p class="wp-block-paragraph">SUBSTITUTEは全角と半角を区別して処理するため、半角スペースと全角スペースは別々に指定する必要がある点に注意してくださいね。</p>



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



<p class="wp-block-paragraph">スプレッドシートのLENB関数は、全角2バイト・半角1バイトで文字列のバイト数を返す関数です。シンプルながら実務で使い出がありますよ。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=LENB(文字列)</code> の1引数。空文字列は0、数値は桁数ぶんを返す</li><li>日本語環境では全角=2バイト、半角カナを含む半角文字=1バイトでカウント</li><li>LENB-LENで全角文字の個数が取得でき、全角混入チェックに便利</li><li>LEFTB/RIGHTB/MIDBと組み合わせると、超過検出から自動トリミングまで一本でこなせる</li><li>基幹システム連携のCSV整形、入力フォームのバリデーション、固定長ファイル処理で活躍</li><li>ARRAYFORMULAでラップすれば、範囲一括適用も可能</li></ul>



<p class="wp-block-paragraph">まずは手元の商品名リストや摘要欄データで、<code>=LENB(A2)</code> を使ってバイト数の分布を見てみてください。どの行が上限オーバーしているのか、どこに全角が混ざっているのか、数式1本で可視化できますよ。バイト単位のデータ整形が必要なら、LEFTB・RIGHTB・MIDBの使い方もあわせて覚えておきましょう。対応できる業務の幅がぐっと広がりますよ。</p>



<p class="wp-block-paragraph">Excel版の挙動と比べたい場合は、<a href="https://mashukabu.com/excel-function-howto-use-lenb/">ExcelのLENB関数の使い方</a>もご覧くださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-lenb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのLEFTB関数の使い方｜左からバイト数で文字取得</title>
		<link>https://mashukabu.com/spreadsheet-leftb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-leftb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:11:19 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LEFT]]></category>
		<category><![CDATA[LEFTB]]></category>
		<category><![CDATA[LENB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6077</guid>

					<description><![CDATA[スプレッドシートのLEFTB関数の使い方を実例付きで解説します。文字列の先頭から指定したバイト数ぶんを取り出す関数で、全角2バイト・半角1バイトでカウントします。基本構文、LEFT関数との違い、システム連携や文字数制限対応で使う実務パターン、よくあるエラー対処まで丁寧にまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで取引先コードや商品名を扱っていると、「全角半角まじりの文字列から先頭の◯バイトだけ取り出したい」という場面、ありませんか。基幹システムに流し込むCSVで、項目ごとのバイト数制限に引っかかって弾かれた経験がある人も多いと思います。</p>



<p class="wp-block-paragraph">LEFT関数だと「文字数」で切るので、全角が混ざると想定バイト数を超えてしまうんですよね。そんなときにピッタリ使えるのが、スプレッドシートのLEFTB関数です。全角2バイト・半角1バイトでカウントしながら、左から必要なバイト数ぶんだけサクッと取り出せますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのLEFTB関数の構文から、LEFT関数との違い、実務でよく使うシステム連携や文字数制限対応のパターンまで紹介します。LENBと組み合わせた「超過チェック」のテンプレートも置いておきますね。</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">スプレッドシートのLEFTB関数とは？</a><ol><li><a href="#toc2" tabindex="0">関数の基本構文と引数</a></li><li><a href="#toc3" tabindex="0">LEFT関数との違い（文字数 vs バイト数）</a></li></ol></li><li><a href="#toc4" tabindex="0">LEFTB関数の基本的な使い方</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">実務で使えるLEFTB関数の活用パターン</a><ol><li><a href="#toc8" tabindex="0">バイト数制限のあるシステム連携（基幹システム向けCSV）</a></li><li><a href="#toc9" tabindex="0">固定長ファイルのフィールド切り出し</a></li><li><a href="#toc10" tabindex="0">全角混在文字列の頭出しプレビュー</a></li></ol></li><li><a href="#toc11" tabindex="0">LEFTBとLENBを組み合わせたバイト数チェック</a><ol><li><a href="#toc12" tabindex="0">文字列の超過検出テンプレート</a></li><li><a href="#toc13" tabindex="0">コピペで使えるセット数式</a></li></ol></li><li><a href="#toc14" tabindex="0">LEFT系・RIGHT系関数との使い分け</a><ol><li><a href="#toc15" tabindex="0">LEFT・LEFTB・RIGHT・RIGHTB・MID・MIDBの比較</a></li><li><a href="#toc16" tabindex="0">バイト系関数を使うべき判断ポイント</a></li></ol></li><li><a href="#toc17" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc18" tabindex="0">&#8220;#VALUE!&#8221; エラー</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></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのLEFTB関数とは？</span></h2>



<p class="wp-block-paragraph">スプレッドシートのLEFTB関数は、文字列の先頭から指定したバイト数ぶんの文字を取り出す文字列関数です。読み方は「レフト・ビー」で、LEFT（左）と Byte（バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">全角文字は2バイト、半角文字は1バイトとしてカウントします。日本語と英数字が入り混じる商品名や住所などを、バイト単位で制限のあるシステムに合わせて整えたいときに便利ですよ。</p>



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



<p class="wp-block-paragraph">基本構文はシンプルで、引数は2つだけです。</p>



<pre class="wp-block-code"><code>=LEFTB(文字列, [バイト数])</code></pre>



<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>対象となるテキスト</td><td>省略不可</td></tr><tr><td>バイト数</td><td>取り出すバイト数（0以上の整数）</td><td>省略時は1（先頭1バイト）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">バイト数に小数を指定した場合は、整数部分に切り捨てられます。負の数を入れると <code>#VALUE!</code> エラーになるので、気をつけてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc3">LEFT関数との違い（文字数 vs バイト数）</span></h3>



<p class="wp-block-paragraph">LEFT関数とLEFTB関数は、切り出す単位が違います。ここを押さえておくと、使い分けで迷いません。</p>



<ul class="wp-block-list"><li><strong>LEFT</strong>: 先頭から「文字数」ぶんを取り出す。全角・半角を区別しない</li><li><strong>LEFTB</strong>: 先頭から「バイト数」ぶんを取り出す。全角=2バイト、半角=1バイトで計算</li></ul>



<p class="wp-block-paragraph">たとえば「商品A-100」という文字列で、左から4つ取り出したい場合はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td><code>=LEFT("商品A-100", 4)</code></td><td>商品A-</td><td>先頭から4文字（全角半角を問わず）</td></tr><tr><td><code>=LEFTB("商品A-100", 4)</code></td><td>商品A</td><td>先頭から4バイト（全角2+全角2=4バイト）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「システムの項目が10バイトまで」のような制約があるときは、LEFTBの出番ですよ。</p>



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



<p class="wp-block-paragraph">それでは実際に使ってみましょう。バイト数のカウント方法を意識すると、結果がイメージしやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc5">全角・半角が混在する文字列での挙動</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><code>=LEFTB("あいうえお", 4)</code></td><td>あい</td><td>全角2文字=4バイト</td></tr><tr><td><code>=LEFTB("ABCDE", 3)</code></td><td>ABC</td><td>半角3文字=3バイト</td></tr><tr><td><code>=LEFTB("Excel関数", 6)</code></td><td>Excel関</td><td>半角5+全角1=6バイト（※後述の注意点あり）</td></tr><tr><td><code>=LEFTB("商品コード", 5)</code></td><td>商品</td><td>全角2文字=4バイト（5バイト目は全角の途中になるため切り捨て）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">注目してほしいのは最後の行です。バイト数が全角文字の途中で切れる場合、スプレッドシートでは<strong>そのバイトは切り捨てられます</strong>。文字が半分になって文字化けする、といった心配は不要ですよ。</p>



<h3 class="wp-block-heading"><span id="toc6">引数「バイト数」の省略時の挙動</span></h3>



<p class="wp-block-paragraph">バイト数を省略すると、1バイトだけ取り出されます。</p>



<pre class="wp-block-code"><code>=LEFTB(&quot;あいうえお&quot;)   → （空文字または先頭1バイト分の扱い）
=LEFTB(&quot;ABCDE&quot;)        → A</code></pre>



<p class="wp-block-paragraph">全角始まりの文字列でバイト数を省略すると、1バイトだけだと全角文字の半分にあたるため、結果は空になります。省略は半角始まりのときしか実用的ではないので、基本は明示的に指定するのがおすすめですよ。</p>



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



<p class="wp-block-paragraph">LEFTB関数が本領を発揮するのは、システム連携や文字数制限対応の場面です。よく出てくる3パターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc8">バイト数制限のあるシステム連携（基幹システム向けCSV）</span></h3>



<p class="wp-block-paragraph">会計システムや販売管理システムでは、「摘要欄は半角20バイトまで」「商品名は40バイトまで」といった制限があるのが定番です。こういうときにLEFTB関数で切り揃えておくと、取り込みエラーを防げます。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, 40)</code></pre>



<p class="wp-block-paragraph">A列に商品名、40バイトが上限、という想定です。これだけで「全角20文字 or 半角40文字 or その混在」にすべて対応できるので、列挿入1本でCSV出力前の整形ができますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">固定長ファイルのフィールド切り出し</span></h3>



<p class="wp-block-paragraph">古い基幹システムからダウンロードしたテキストで、「先頭8バイトが顧客コード、次の20バイトが氏名…」のような固定長レイアウトを扱うこともありますよね。LEFTBとMIDB（任意位置からバイト単位で切り出す関数）を組み合わせると、きれいに分解できますよ。</p>



<pre class="wp-block-code"><code>顧客コード:  =LEFTB(A2, 8)
氏名:        =MIDB(A2, 9, 20)</code></pre>



<p class="wp-block-paragraph">LEFT/MIDだと全角が混ざったときにズレますが、LEFTB/MIDBならレイアウト定義書どおりにサクッと取り出せます。</p>



<h3 class="wp-block-heading"><span id="toc10">全角混在文字列の頭出しプレビュー</span></h3>



<p class="wp-block-paragraph">Webサイトの記事タイトルや商品説明の先頭を、一覧画面用に短く表示したい場面でも使えます。画面の横幅に合わせてバイト数指定したいケースで便利ですよ。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, 30) &amp; IF(LENB(A2)&gt;30, &quot;…&quot;, &quot;&quot;)</code></pre>



<p class="wp-block-paragraph">LENB（文字列全体のバイト数を返す関数）を組み合わせて、30バイトを超える場合だけ「…」を付ける工夫を入れています。30バイトは全角15文字相当なので、一覧表示にちょうどいい長さですよ。</p>



<h2 class="wp-block-heading"><span id="toc11">LEFTBとLENBを組み合わせたバイト数チェック</span></h2>



<p class="wp-block-paragraph">バイト数制限のある項目を複数扱うときは、「その行がルールに違反していないか」を先にチェックしておくと安心です。LEFTBとLENBを組み合わせると、超過検出とトリミングを同時にこなせますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">文字列の超過検出テンプレート</span></h3>



<p class="wp-block-paragraph">A列に文字列、B列に上限バイト数を入れている想定です。C列に「OK/超過」を出しましょう。</p>



<pre class="wp-block-code"><code>=IF(LENB(A2) &gt; B2, &quot;超過&quot;, &quot;OK&quot;)</code></pre>



<p class="wp-block-paragraph">さらに、超過していたらLEFTBでトリミング結果を出す、という流れまでやりたい場合はこちら。</p>



<pre class="wp-block-code"><code>=IF(LENB(A2) &gt; B2, LEFTB(A2, B2), A2)</code></pre>



<p class="wp-block-paragraph">超過行だけ自動で切り揃えて、セーフな行はそのまま残します。件数が多いシートでも、目視チェックせずに一括整形できるので作業がぐっと楽になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc13">コピペで使えるセット数式</span></h3>



<p class="wp-block-paragraph">よく使う組み合わせを一式テンプレートにしておきますね。A2にデータ、B2に上限バイト数という前提です。</p>



<pre class="wp-block-code"><code>現在のバイト数:  =LENB(A2)
上限超過チェック: =IF(LENB(A2)&gt;B2, &quot;超過 (&quot;&amp;LENB(A2)&amp;&quot;B)&quot;, &quot;OK&quot;)
トリミング結果:  =IF(LENB(A2)&gt;B2, LEFTB(A2,B2), A2)
残バイト数:     =B2 - LENB(A2)</code></pre>



<p class="wp-block-paragraph">データ整形用のワークシートに丸ごと貼り付けて、A列と上限値を差し替えるだけで使えます。列挿入で4列ぶんの情報が一度に揃うので、品質確認の時短につながりますよ。</p>



<h2 class="wp-block-heading"><span id="toc14">LEFT系・RIGHT系関数との使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには似た名前の文字列関数がいくつもあります。ここで全体像を整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc15">LEFT・LEFTB・RIGHT・RIGHTB・MID・MIDBの比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>切り出し位置</th><th>単位</th><th>典型用途</th></tr></thead><tbody><tr><td>LEFT</td><td>左から</td><td>文字数</td><td>商品コードの頭3桁抽出</td></tr><tr><td>LEFTB</td><td>左から</td><td>バイト数</td><td>基幹システム用の項目整形</td></tr><tr><td>RIGHT</td><td>右から</td><td>文字数</td><td>ファイル拡張子の抽出</td></tr><tr><td>RIGHTB</td><td>右から</td><td>バイト数</td><td>末尾の固定長フィールド切り出し</td></tr><tr><td>MID</td><td>任意位置から</td><td>文字数</td><td>郵便番号の後半3桁抽出</td></tr><tr><td>MIDB</td><td>任意位置から</td><td>バイト数</td><td>固定長ファイルの中間フィールド</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ExcelのLEFTB関数との挙動比較をしたいときは、<a href="https://mashukabu.com/excel-leftb-function/">ExcelのLEFTB関数の使い方</a>も参考になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc16">バイト系関数を使うべき判断ポイント</span></h3>



<p class="wp-block-paragraph">バイト系関数（LEFTB/RIGHTB/MIDB/LENB）を選ぶ基準は、次の3点で判断できます。</p>



<ul class="wp-block-list"><li>出力先のシステムがバイト単位で桁数を指定している</li><li>全角半角が混在するデータを扱っている</li><li>固定長フォーマットのファイルを読み書きする必要がある</li></ul>



<p class="wp-block-paragraph">逆に、社内の集計シートやダッシュボードのように「文字数で区切れれば十分」という場面は、LEFT系のほうがシンプルで読みやすいですよ。</p>



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



<p class="wp-block-paragraph">LEFTB関数でハマりやすいポイントを3つまとめました。エラーの原因と対策をセットで覚えておくと、現場で詰まりにくくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc18">&#8220;#VALUE!&#8221; エラー</span></h3>



<p class="wp-block-paragraph">バイト数に負の数を指定したときに出ます。たとえば <code>=LEFTB("ABCDE", -1)</code> のようなケースですね。COUNT の結果をそのまま使っていたらマイナスになっていた、というミスがよくあります。MAX関数で下限を 0 に固定するのがおすすめです。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, MAX(B2, 0))</code></pre>



<p class="wp-block-paragraph">これで、B2がマイナスになっても安全に 0 として扱えますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">想定より短い結果が返る</span></h3>



<p class="wp-block-paragraph">「10バイトのつもりで指定したのに9文字しか返ってこない」というときは、<strong>全角の途中で切れている</strong>ケースが多いです。先ほど解説したとおり、全角の途中にバイト境界が来ると、そのバイトぶんは切り捨てられます。</p>



<p class="wp-block-paragraph">制限いっぱいまで詰めたい場合は、LENB（対象文字列の総バイト数を返す関数）と組み合わせて、切り捨てが発生していないかを確認しておきましょう。</p>



<pre class="wp-block-code"><code>=LENB(LEFTB(A2, 10))   → 9 なら、10バイト目が全角の途中だった</code></pre>



<h3 class="wp-block-heading"><span id="toc20">結果が空になる</span></h3>



<p class="wp-block-paragraph"><code>=LEFTB("あいうえお", 1)</code> のように、先頭が全角で1バイトだけ指定すると、結果が空（空文字）になります。「数式は合っているのに何も返ってこない」ときは、バイト数が全角1文字分（2バイト）に満たないかを確認してみてくださいね。</p>



<p class="wp-block-paragraph">最低でも 2 以上を指定するか、<code>=IF(LENB(A2)>=2, LEFTB(A2, 2), A2)</code> のようにIFで判定すると安心です。</p>



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



<p class="wp-block-paragraph">スプレッドシートのLEFTB関数は、バイト数を基準に文字列の先頭を取り出せる、システム連携や文字数制限対応にピッタリの関数です。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=LEFTB(文字列, [バイト数])</code> の2引数。バイト数省略時は1バイト</li><li>全角=2バイト、半角=1バイトとしてカウントする</li><li>全角文字の途中でバイトが切れる場合、そのバイトは切り捨てられる</li><li>LEFTは文字数、LEFTBはバイト数。基幹システム連携や固定長ファイルはLEFTB一択</li><li>LENBと組み合わせると、超過チェックと自動トリミングが同時にこなせる</li><li>#VALUE! は負のバイト数指定、結果が空になるのは全角始まりでバイト数が足りないパターン</li></ul>



<p class="wp-block-paragraph">まずは手元の商品名リストや顧客データを、<code>=LEFTB(A2, 40)</code> のような形で整形してみてください。基幹システム取込のエラーが減るだけで、月末作業の負担がぐっと軽くなりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-leftb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのMIDB関数の使い方｜中間のバイト取得</title>
		<link>https://mashukabu.com/spreadsheet-midb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-midb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:11:10 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LENB]]></category>
		<category><![CDATA[MID]]></category>
		<category><![CDATA[MIDB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6071</guid>

					<description><![CDATA[スプレッドシートのMIDB関数の使い方を実例付きで解説します。文字列の指定バイト位置から指定バイト数ぶんを取り出す関数で、全角2バイト・半角1バイトでカウントします。基本構文、MID関数との違い、固定長ファイルの中間フィールド抽出など実務パターン、よくあるエラー対処まで丁寧にまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで基幹システムの固定長データを扱っていると、「文字列の途中の◯バイト目から◯バイトだけ取り出したい」という場面、ありませんか。CSVじゃなくて全角半角混在の固定長テキストで、真ん中あたりの氏名フィールドを抜き出す、なんてケースもよくありますよね。</p>



<p class="wp-block-paragraph">MID関数だと「文字数」で切るので、全角が混ざると想定位置からズレてしまうんですよね。そんなときにピッタリ使えるのが、スプレッドシートのMIDB関数です。全角2バイト・半角1バイトでカウントしながら、任意の位置から必要なバイト数ぶんだけサクッと取り出せますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのMIDB関数の構文から、MID関数との違い、固定長ファイルの中間フィールド抽出など実務パターンまで紹介します。LEFTB/RIGHTBと組み合わせた「フィールド分解」のテンプレートも置いておきますね。</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">スプレッドシートのMIDB関数とは？</a><ol><li><a href="#toc2" tabindex="0">関数の基本構文と引数</a></li><li><a href="#toc3" tabindex="0">MID関数との違い（文字数 vs バイト数）</a></li></ol></li><li><a href="#toc4" tabindex="0">MIDB関数の基本的な使い方</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">実務で使えるMIDB関数の活用パターン</a><ol><li><a href="#toc8" tabindex="0">固定長ファイルの中間フィールド切り出し</a></li><li><a href="#toc9" tabindex="0">取引先コードの中間区分抽出</a></li><li><a href="#toc10" tabindex="0">電文ログからのタイムスタンプ抽出</a></li></ol></li><li><a href="#toc11" tabindex="0">MIDBとLEFTB/RIGHTBを組み合わせたフィールド分解</a><ol><li><a href="#toc12" tabindex="0">3フィールド分解のテンプレート</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">LEFT系・RIGHT系関数との使い分け</a><ol><li><a href="#toc16" tabindex="0">LEFT・LEFTB・RIGHT・RIGHTB・MID・MIDBの比較</a></li><li><a href="#toc17" tabindex="0">バイト系関数を使うべき判断ポイント</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">&#8220;#VALUE!&#8221; エラー</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">Q. MIDBとMIDの違いを一言で教えてください</a></li><li><a href="#toc24" tabindex="0">Q. スプレッドシートのMIDB関数はExcelのMIDB関数と同じですか？</a></li><li><a href="#toc25" tabindex="0">Q. 全角文字の途中から取り出そうとしたら空が返ってきました</a></li><li><a href="#toc26" tabindex="0">Q. MIDB関数でエラーが出て困っています</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのMIDB関数とは？</span></h2>



<p class="wp-block-paragraph">スプレッドシートのMIDB関数は、文字列の指定したバイト位置から、指定したバイト数ぶんの文字を取り出す文字列関数です。読み方は「ミッド・ビー」で、MID（中間）と Byte（バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">全角文字は2バイト、半角文字は1バイトとしてカウントします。日本語と英数字が入り混じる固定長データから、中間フィールドをバイト単位で正確に抜き出したいときに便利ですよ。</p>



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



<p class="wp-block-paragraph">基本構文はシンプルで、引数は3つです。</p>



<pre class="wp-block-code"><code>=MIDB(文字列, 開始バイト, バイト数)</code></pre>



<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>対象となるテキスト</td><td>省略不可</td></tr><tr><td>開始バイト</td><td>取り出しを始める位置（1以上の整数）</td><td>1バイト目から数え始める</td></tr><tr><td>バイト数</td><td>取り出すバイト数（0以上の整数）</td><td>省略不可</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">開始バイトに小数を指定した場合は、整数部分に切り捨てられます。0以下を入れると <code>#VALUE!</code> エラーになるので、気をつけてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc3">MID関数との違い（文字数 vs バイト数）</span></h3>



<p class="wp-block-paragraph">MID関数とMIDB関数は、切り出す単位が違います。ここを押さえておくと、使い分けで迷いません。</p>



<ul class="wp-block-list"><li><strong>MID</strong>: 指定した文字位置から「文字数」ぶんを取り出す。全角・半角を区別しない</li><li><strong>MIDB</strong>: 指定したバイト位置から「バイト数」ぶんを取り出す。全角=2バイト、半角=1バイトで計算</li></ul>



<p class="wp-block-paragraph">たとえば「商品A-100」という文字列で、3つ目から4つぶん取り出したい場合はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td><code>=MID("商品A-100", 3, 4)</code></td><td>A-10</td><td>3文字目から4文字（全角半角を問わず）</td></tr><tr><td><code>=MIDB("商品A-100", 3, 4)</code></td><td>品A-</td><td>3バイト目から4バイト（全角1+半角2=4バイト）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「レイアウト定義書で5バイト目から10バイトが氏名フィールド」のような固定長仕様のときは、MIDBの出番ですよ。</p>



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



<p class="wp-block-paragraph">それでは実際に使ってみましょう。開始バイトとバイト数の両方をイメージできると、結果が読みやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc5">全角・半角が混在する文字列での挙動</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><code>=MIDB("あいうえお", 3, 4)</code></td><td>いう</td><td>3バイト目から4バイト（全角2文字=4バイト）</td></tr><tr><td><code>=MIDB("ABCDE", 2, 3)</code></td><td>BCD</td><td>2バイト目から3バイト（半角3文字=3バイト）</td></tr><tr><td><code>=MIDB("Excel関数", 6, 2)</code></td><td>関</td><td>6バイト目から2バイト（全角1文字=2バイト）</td></tr><tr><td><code>=MIDB("商品コード", 2, 4)</code></td><td>品コ</td><td>2バイト目から4バイト（開始が全角の途中になるため先頭1バイト分が欠ける）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">注目してほしいのは最後の行です。開始バイトが全角文字の途中に来る場合や、バイト数が全角文字の途中で切れる場合、スプレッドシートでは<strong>そのバイトは切り捨てられます</strong>。文字が半分になって文字化けする、といった心配は不要ですよ。</p>



<h3 class="wp-block-heading"><span id="toc6">開始バイトとバイト数の関係</span></h3>



<p class="wp-block-paragraph">MIDBはLEFTB/RIGHTBと違って、位置の指定が2つあります。ここでつまずきやすいので整理しておきますね。</p>



<ul class="wp-block-list"><li>開始バイトは「何バイト目から読み始めるか」（1始まり）</li><li>バイト数は「そこから何バイトぶん取るか」</li><li>開始バイト + バイト数 − 1 が「読み終わるバイト位置」</li></ul>



<p class="wp-block-paragraph">たとえば <code>=MIDB(A2, 5, 10)</code> なら、5バイト目から14バイト目までの10バイトが対象です。レイアウト定義書の「開始位置」と「長さ」をそのまま引数に入れればOKですよ。</p>



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



<p class="wp-block-paragraph">MIDB関数が本領を発揮するのは、固定長レイアウトの中間フィールドを抜き出す場面です。よく出てくる3パターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc8">固定長ファイルの中間フィールド切り出し</span></h3>



<p class="wp-block-paragraph">古い基幹システムからダウンロードしたテキストで、「先頭8バイトが顧客コード、9バイト目から20バイトが氏名、29バイト目から8バイトが受付日」のような固定長レイアウトはよくあります。MIDB関数なら、中間の氏名フィールドもバイト単位でスッと取れますよ。</p>



<pre class="wp-block-code"><code>顧客コード:  =LEFTB(A2, 8)
氏名:        =MIDB(A2, 9, 20)
受付日:      =MIDB(A2, 29, 8)</code></pre>



<p class="wp-block-paragraph">MIDだと全角が混ざったときに位置がズレますが、MIDBならレイアウト定義書どおりにサクッと取り出せます。3つのフィールドを別列に展開するだけで、後続の集計がぐっと楽になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc9">取引先コードの中間区分抽出</span></h3>



<p class="wp-block-paragraph">業務系の取引先コードには、「先頭2桁が地域、次の3桁が業種、末尾4桁が連番」のような区分が埋め込まれているフォーマットがよくあります。中間の業種部分だけ抜き出して集計したいときにMIDBが効きますよ。</p>



<pre class="wp-block-code"><code>=MIDB(A2, 3, 3)</code></pre>



<p class="wp-block-paragraph">A列に「JP-WHL-0012」のような半角コードがあれば、3バイト目から3バイト（<code>-WH</code>）の位置を狙って取れます。コードの仕様が半角固定なら、MIDとMIDBの結果は同じですが、後から全角が混ざるケースに備えるならMIDBのほうが安全ですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">電文ログからのタイムスタンプ抽出</span></h3>



<p class="wp-block-paragraph">システム連携のログで、「先頭10バイトが日付、11バイト目から8バイトが時刻、19バイト目以降が本文」のような決まったフォーマットを扱うこともありますよね。MIDBを使うと、中間のタイムスタンプ部分だけきれいに取り出せますよ。</p>



<pre class="wp-block-code"><code>日付:        =LEFTB(A2, 10)
時刻:        =MIDB(A2, 11, 8)
本文:        =MIDB(A2, 19, LENB(A2)-18)</code></pre>



<p class="wp-block-paragraph">LENB（文字列全体のバイト数を返す関数）を組み合わせて、本文部分は「総バイト数から先頭18バイトを引いた残り全部」として指定しています。末尾の長さが可変のときに便利な書き方ですよ。</p>



<h2 class="wp-block-heading"><span id="toc11">MIDBとLEFTB/RIGHTBを組み合わせたフィールド分解</span></h2>



<p class="wp-block-paragraph">MIDBの真価は、LEFTB/RIGHTB/LENBと組み合わせたときに発揮されます。固定長データの分解や、区切り位置が動くデータの整形にすっきり対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">3フィールド分解のテンプレート</span></h3>



<p class="wp-block-paragraph">A列に固定長データ、B列に1つ目のバイト数、C列に2つ目のバイト数を入れている想定です。先頭・中間・末尾の3つに分けましょう。</p>



<pre class="wp-block-code"><code>先頭フィールド:  =LEFTB(A2, B2)
中間フィールド:  =MIDB(A2, B2+1, C2)
末尾フィールド:  =MIDB(A2, B2+C2+1, LENB(A2)-B2-C2)</code></pre>



<p class="wp-block-paragraph">B列とC列の数字を変えるだけで、レイアウトの変更に追従できます。中間フィールドの開始位置は「先頭ぶんのバイト数 + 1」、末尾は「総バイト数 − 先頭 − 中間」で計算するのがコツですよ。</p>



<h3 class="wp-block-heading"><span id="toc13">先頭と末尾を除外して中間だけ取るテンプレート</span></h3>



<p class="wp-block-paragraph">「先頭4バイトのヘッダと末尾2バイトのフッタを除いた本体部分だけ抜き出したい」という電文整形のシーンでは、開始位置を固定してバイト数だけLENBから計算します。</p>



<pre class="wp-block-code"><code>=MIDB(A2, 5, LENB(A2)-4-2)</code></pre>



<p class="wp-block-paragraph">開始バイトは固定（ヘッダ4バイトの次）、バイト数は「全体 − ヘッダ − フッタ」で動的に決めます。データ長が行ごとに違っても1本の数式で整形できるので、ログ解析の前処理で重宝しますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">コピペで使えるセット数式</span></h3>



<p class="wp-block-paragraph">よく使う組み合わせを一式テンプレートにしておきますね。A2にデータ、B2に開始バイト、C2にバイト数という前提です。</p>



<pre class="wp-block-code"><code>対象文字列:        =A2
全体バイト数:      =LENB(A2)
切り出し結果:      =MIDB(A2, B2, C2)
切り出し後バイト数: =LENB(MIDB(A2, B2, C2))
切り出し前の部分:  =LEFTB(A2, B2-1)
切り出し後の部分:  =MIDB(A2, B2+C2, LENB(A2)-(B2+C2)+1)</code></pre>



<p class="wp-block-paragraph">データ整形用のワークシートに丸ごと貼り付けて、A列と開始バイト・バイト数を差し替えるだけで使えます。切り出し前後の部分も一緒に出すと、結果のバイト位置が合っているか目視確認しやすくなりますよ。</p>



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



<p class="wp-block-paragraph">スプレッドシートには似た名前の文字列関数がいくつもあります。ここで全体像を整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc16">LEFT・LEFTB・RIGHT・RIGHTB・MID・MIDBの比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>切り出し位置</th><th>単位</th><th>典型用途</th></tr></thead><tbody><tr><td>LEFT</td><td>左から</td><td>文字数</td><td>商品コードの頭3桁抽出</td></tr><tr><td>LEFTB</td><td>左から</td><td>バイト数</td><td>基幹システム用の項目整形</td></tr><tr><td>RIGHT</td><td>右から</td><td>文字数</td><td>ファイル拡張子の抽出</td></tr><tr><td>RIGHTB</td><td>右から</td><td>バイト数</td><td>末尾の固定長フィールド切り出し</td></tr><tr><td>MID</td><td>任意位置から</td><td>文字数</td><td>郵便番号の後半3桁抽出</td></tr><tr><td>MIDB</td><td>任意位置から</td><td>バイト数</td><td>固定長ファイルの中間フィールド</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">左・右の切り出しを組み合わせて使いたいときは、<a href="https://mashukabu.com/spreadsheet-leftb-function/">スプレッドシートのLEFTB関数の使い方</a>と<a href="https://mashukabu.com/spreadsheet-rightb-function/">スプレッドシートのRIGHTB関数の使い方</a>もあわせて参考にしてみてくださいね。</p>



<p class="wp-block-paragraph">また、バイト数を数えるLENB関数については<a href="https://mashukabu.com/spreadsheet-lenb-function/">スプレッドシートのLENB関数の使い方</a>でくわしく解説しています。</p>



<h3 class="wp-block-heading"><span id="toc17">バイト系関数を使うべき判断ポイント</span></h3>



<p class="wp-block-paragraph">バイト系関数（LEFTB/RIGHTB/MIDB/LENB）を選ぶ基準は、次の3点で判断できます。</p>



<ul class="wp-block-list"><li>入出力のシステムがバイト単位で桁数を指定している</li><li>全角半角が混在するデータを扱っている</li><li>固定長フォーマットのファイルを読み書きする必要がある</li></ul>



<p class="wp-block-paragraph">逆に、社内の集計シートやダッシュボードのように「文字数で区切れれば十分」という場面は、MID系のほうがシンプルで読みやすいですよ。</p>



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



<p class="wp-block-paragraph">MIDB関数でハマりやすいポイントを3つまとめました。エラーの原因と対策をセットで覚えておくと、現場で詰まりにくくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">&#8220;#VALUE!&#8221; エラー</span></h3>



<p class="wp-block-paragraph">開始バイトに0以下を指定したときや、バイト数に負の数を指定したときに出ます。たとえば <code>=MIDB("ABCDE", 0, 3)</code> や <code>=MIDB("ABCDE", 2, -1)</code> のようなケースですね。計算式の結果がマイナスになっていた、というミスがよくあります。MAX関数で下限を固定するのがおすすめです。</p>



<pre class="wp-block-code"><code>=MIDB(A2, MAX(B2, 1), MAX(C2, 0))</code></pre>



<p class="wp-block-paragraph">これで、B2やC2が想定外の値になっても安全に動きますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">想定より短い結果が返る</span></h3>



<p class="wp-block-paragraph">「10バイトのつもりで指定したのに9文字しか返ってこない」というときは、<strong>開始位置が全角の途中</strong>か、<strong>末尾が全角の途中で切れている</strong>ケースが多いです。先ほど解説したとおり、全角の途中にバイト境界が来ると、そのバイトぶんは切り捨てられます。</p>



<p class="wp-block-paragraph">制限いっぱいまで詰めたい場合は、LENB（対象文字列の総バイト数を返す関数）と組み合わせて、切り捨てが発生していないかを確認しておきましょう。</p>



<pre class="wp-block-code"><code>=LENB(MIDB(A2, 3, 10))   → 9 なら、開始か末尾のどちらかが全角の途中だった</code></pre>



<h3 class="wp-block-heading"><span id="toc21">結果が空になる</span></h3>



<p class="wp-block-paragraph"><code>=MIDB("あいうえお", 2, 1)</code> のように、開始バイトが全角の途中で、バイト数も1だけのときは、結果が空（空文字）になります。「数式は合っているのに何も返ってこない」ときは、開始位置とバイト数が全角のバイト境界にきれいに乗っているかを確認してみてくださいね。</p>



<p class="wp-block-paragraph">レイアウトが全角中心なら、開始バイトを奇数（全角の先頭バイト）に、バイト数を偶数にそろえると安定しますよ。</p>



<h2 class="wp-block-heading"><span id="toc22">よくある質問</span></h2>



<h3 class="wp-block-heading"><span id="toc23">Q. MIDBとMIDの違いを一言で教えてください</span></h3>



<p class="wp-block-paragraph">MIDは「文字数」で切り出し、MIDBは「バイト数」で切り出します。全角1文字をMIDは1文字、MIDBは2バイトとして数えるので、全角が混在するデータでは切り出し結果が変わります。固定長ファイルや基幹システムデータの処理にはMIDB、通常の日本語テキストの整形にはMIDがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc24">Q. スプレッドシートのMIDB関数はExcelのMIDB関数と同じですか？</span></h3>



<p class="wp-block-paragraph">はい、引数・動作ともにExcelのMIDB関数と同じです。<code>=MIDB(文字列, 開始バイト, バイト数)</code> の3引数で同じように動きますので、ExcelとGoogleスプレッドシートを行き来する業務でも数式をそのまま移植できますよ。</p>



<h3 class="wp-block-heading"><span id="toc25">Q. 全角文字の途中から取り出そうとしたら空が返ってきました</span></h3>



<p class="wp-block-paragraph">開始バイトが全角文字の2バイト目に当たり、かつバイト数が少ないときに起きます。全角文字は先頭バイト（奇数番目）から取り出す必要があります。LENBで全体バイト数を確認しながら、開始バイトを1ずつ調整してみてください。</p>



<h3 class="wp-block-heading"><span id="toc26">Q. MIDB関数でエラーが出て困っています</span></h3>



<p class="wp-block-paragraph"><code>#VALUE!</code> エラーは、開始バイトに0以下、またはバイト数に負の値を指定したときに発生します。<code>=MIDB(A2, MAX(B2,1), MAX(C2,0))</code> のようにMAX関数でガードするか、引数が正しい範囲内か確認してください。<code>#REF!</code> エラーは参照セルが削除されている場合に出ます。</p>



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



<p class="wp-block-paragraph">スプレッドシートのMIDB関数は、バイト数を基準に文字列の任意位置から切り出せる、固定長データの中間フィールド抽出にピッタリの関数です。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=MIDB(文字列, 開始バイト, バイト数)</code> の3引数。開始バイトは1始まり</li><li>全角=2バイト、半角=1バイトとしてカウントする</li><li>全角文字の途中に開始位置や終端が来る場合、そのバイトは切り捨てられる</li><li>MIDは文字数、MIDBはバイト数。固定長ファイルの中間フィールドはMIDB一択</li><li>LEFTB/RIGHTB/LENBと組み合わせると、フィールド分解が一発で決まる</li><li>#VALUE! は開始バイト0以下や負のバイト数指定、結果が空になるのは全角境界で指定がずれたパターン</li></ul>



<p class="wp-block-paragraph">まずは手元の固定長テキストを、<code>=MIDB(A2, 9, 20)</code> のような形でレイアウト定義書どおりに分解してみてください。基幹システムからのデータ取り込みや電文解析の前処理が、一段ラクになりますよ。</p>



<p class="wp-block-paragraph">バイト系文字列関数の全体像を把握したい方は、<a href="https://mashukabu.com/spreadsheet-leftb-function/">スプレッドシートのLEFTB関数の使い方</a>と<a href="https://mashukabu.com/spreadsheet-rightb-function/">スプレッドシートのRIGHTB関数の使い方</a>もあわせてご確認ください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-midb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのSEARCHB関数の使い方｜バイト位置（大小無視）</title>
		<link>https://mashukabu.com/spreadsheet-searchb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-searchb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:11:08 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[FINDB]]></category>
		<category><![CDATA[MIDB]]></category>
		<category><![CDATA[SEARCH]]></category>
		<category><![CDATA[SEARCHB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6069</guid>

					<description><![CDATA[スプレッドシートのSEARCHB関数の使い方を実例付きで解説します。文字列の中で指定文字が何バイト目にあるかを返す関数で、全角2バイト・半角1バイトでカウントし大文字・小文字を区別せずワイルドカードも使えます。基本構文、FINDBとの違い、MIDBとの組み合わせで固定長データを曖昧検索で切り出す実務パターン、よくあるエラー対処まで丁寧にまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで全角半角が混ざったデータを処理していると、「特定の文字が先頭から何バイト目にあるかを、大文字小文字を気にせず調べたい」という場面、ありませんか。商品名や顧客データのように表記ゆれがあるデータで、曖昧検索しつつバイト位置を取りたいケースは意外とよくありますよね。</p>



<p class="wp-block-paragraph">FINDB関数でも似たことはできますが、大文字と小文字を厳密に区別するので、表記ゆれに弱いのが難点です。そんなときにピッタリ使えるのが、スプレッドシートのSEARCHB関数ですよ。全角2バイト・半角1バイトでカウントしながら、大文字小文字を無視してバイト位置を返してくれます。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのSEARCHB関数の構文から、SEARCH関数やFINDB関数との違い、ワイルドカードを使った曖昧検索、MIDBと組み合わせて可変長データを切り出す実務パターンまで紹介します。コピペで使えるテンプレートも置いておきますね。</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">スプレッドシートのSEARCHB関数とは？</a><ol><li><a href="#toc2" tabindex="0">関数の基本構文と引数</a></li><li><a href="#toc3" tabindex="0">SEARCH関数との違い（文字数 vs バイト数）</a></li><li><a href="#toc4" tabindex="0">SEARCHBとFINDBの違い（大小区別とワイルドカード）</a></li></ol></li><li><a href="#toc5" tabindex="0">SEARCHB関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">全角・半角が混在する文字列での挙動</a></li><li><a href="#toc7" tabindex="0">ワイルドカードで曖昧検索する</a></li><li><a href="#toc8" tabindex="0">引数「開始位置」の使い方</a></li></ol></li><li><a href="#toc9" tabindex="0">実務で使えるSEARCHB関数の活用パターン</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">SEARCHBとMIDBを組み合わせた曖昧フィールド分解</a><ol><li><a href="#toc14" tabindex="0">区切り文字ベースのフィールド分解テンプレート</a></li><li><a href="#toc15" tabindex="0">2段階検索で安全に位置を取る</a></li></ol></li><li><a href="#toc16" tabindex="0">FIND系・SEARCH系関数との使い分け</a><ol><li><a href="#toc17" tabindex="0">FIND・FINDB・SEARCH・SEARCHBの比較</a></li><li><a href="#toc18" tabindex="0">曖昧検索・表記ゆれの判断ポイント</a></li></ol></li><li><a href="#toc19" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc20" tabindex="0">&#8220;#VALUE!&#8221; エラー（検索文字列が見つからない）</a></li><li><a href="#toc21" tabindex="0">&#8220;#VALUE!&#8221; エラー（開始位置が不正）</a></li><li><a href="#toc22" tabindex="0">ワイルドカードを文字として検索したい</a></li></ol></li><li><a href="#toc23" tabindex="0">関連記事</a></li><li><a href="#toc24" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのSEARCHB関数とは？</span></h2>



<p class="wp-block-paragraph">スプレッドシートのSEARCHB関数は、文字列の中で指定した検索文字列が何バイト目から始まるかを返す関数です。読み方は「サーチ・ビー」で、SEARCH（検索）と Byte（バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">全角文字は2バイト、半角文字は1バイトとしてカウントします。特徴は、大文字と小文字を区別しないこと、そしてワイルドカード（<code>*</code> や <code>?</code>）が使えることです。「A」でも「a」でもヒットするので、表記ゆれのあるデータの解析にはSEARCHBが向いていますよ。</p>



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



<p class="wp-block-paragraph">基本構文はシンプルで、引数は3つです。</p>



<pre class="wp-block-code"><code>=SEARCHB(検索文字列, 対象文字列, [開始位置])</code></pre>



<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>探したい文字や記号（ワイルドカード可）</td><td>省略不可</td></tr><tr><td>対象文字列</td><td>検索される側の文字列</td><td>省略不可</td></tr><tr><td>開始位置</td><td>検索を開始するバイト位置</td><td>省略時は1（先頭から）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">開始位置に小数を指定した場合は、整数部分に切り捨てられます。0以下を指定したり、見つからない文字列を指定したりすると <code>#VALUE!</code> エラーになるので、そこだけ注意してくださいね。</p>



<h3 class="wp-block-heading"><span id="toc3">SEARCH関数との違い（文字数 vs バイト数）</span></h3>



<p class="wp-block-paragraph">SEARCH関数とSEARCHB関数は、返ってくる位置の単位が違います。ここを押さえておくと、使い分けで迷いません。</p>



<ul class="wp-block-list"><li><strong>SEARCH</strong>: 検索文字列が先頭から「何文字目」にあるかを返す。全角・半角を区別しない</li><li><strong>SEARCHB</strong>: 検索文字列が先頭から「何バイト目」にあるかを返す。全角=2バイト、半角=1バイトで計算</li></ul>



<p class="wp-block-paragraph">たとえば「商品a-100」という文字列で、&#8221;A&#8221;（大文字）の位置を調べた場合はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td><code>=SEARCH("A", "商品a-100")</code></td><td>3</td><td>先頭から3文字目（大小無視で「a」にヒット）</td></tr><tr><td><code>=SEARCHB("A", "商品a-100")</code></td><td>5</td><td>先頭から5バイト目（商2+品2+a=5バイト目スタート）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">MIDB関数やLEFTB関数と組み合わせるなら、必ずSEARCHB関数側を使ってください。SEARCHの結果をバイト系関数に渡すとズレてしまいますよ。</p>



<h3 class="wp-block-heading"><span id="toc4">SEARCHBとFINDBの違い（大小区別とワイルドカード）</span></h3>



<p class="wp-block-paragraph">似たような関数にFINDB関数があります。こちらもバイト単位で位置を返してくれる関数ですが、大小区別とワイルドカードの扱いが真逆です。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>大文字小文字</th><th>ワイルドカード</th></tr></thead><tbody><tr><td>SEARCHB</td><td>区別しない</td><td><code>*</code> や <code>?</code> が使える</td></tr><tr><td>FINDB</td><td>区別する</td><td>使えない（リテラル検索のみ）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">表記ゆれや曖昧検索を許容したい場面ではSEARCHB、商品コードのように「A と a は別物として厳密に扱いたい」場面ではFINDB、という整理ですよ。</p>



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



<p class="wp-block-paragraph">それでは実際に使ってみましょう。バイト位置のカウント方法と、大小無視の挙動を意識すると、結果がイメージしやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc6">全角・半角が混在する文字列での挙動</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><code>=SEARCHB("う", "あいうえお")</code></td><td>5</td><td>「う」は先頭から5バイト目（あ2+い2+う=5バイト目スタート）</td></tr><tr><td><code>=SEARCHB("c", "ABCDE")</code></td><td>3</td><td>大小無視で「C」にヒット、3バイト目</td></tr><tr><td><code>=SEARCHB("関", "Excel関数")</code></td><td>6</td><td>半角5バイト+「関」で6バイト目スタート</td></tr><tr><td><code>=SEARCHB("a", "ABCabc")</code></td><td>1</td><td>大小無視で先頭の「A」にヒット、1バイト目</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">4行目がポイントです。SEARCHBは大小を区別しないので、&#8221;a&#8221; で検索しても先頭の &#8220;A&#8221; にヒットします。ここが厳密一致のFINDBとは違うところですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">ワイルドカードで曖昧検索する</span></h3>



<p class="wp-block-paragraph">SEARCHBはワイルドカードが使えるのが大きな武器です。<code>*</code> は任意の文字列、<code>?</code> は任意の1文字を表します。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;商品*&quot;, &quot;注文書：商品A-100&quot;)    → 9  （「商品」で始まる部分の開始位置）
=SEARCHB(&quot;A?100&quot;, &quot;商品A-100&quot;)          → 5  （「A」+任意1文字+「100」にヒット）</code></pre>



<p class="wp-block-paragraph">「商品コードの規則だけわかっている」「区切り記号は揺れるかもしれない」みたいな場面で、ワイルドカードが効いてきますよ。</p>



<p class="wp-block-paragraph">ワイルドカードそのものを文字として検索したいときは、前にチルダ（<code>~</code>）を付けます。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;~*&quot;, &quot;在庫*あり&quot;)    → 5  （「*」という文字自体を検索）</code></pre>



<h3 class="wp-block-heading"><span id="toc8">引数「開始位置」の使い方</span></h3>



<p class="wp-block-paragraph">開始位置を指定すると、その位置から右側だけを検索対象にできます。同じ文字が複数回出てくる文字列で「2番目の位置」を調べたいときに便利ですよ。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;-&quot;, &quot;A-100-XYZ&quot;)            → 2  （1番目のハイフン）
=SEARCHB(&quot;-&quot;, &quot;A-100-XYZ&quot;, 3)         → 6  （3バイト目以降で探した1番目）</code></pre>



<p class="wp-block-paragraph">1番目のハイフン位置をSEARCHBで求めて、その次のバイトから2番目を探す、という入れ子にすると、動的に区切り位置を追えます。</p>



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



<p class="wp-block-paragraph">A2にデータを入れておけば、「2番目のハイフンは何バイト目か」が求められますよ。</p>



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



<p class="wp-block-paragraph">SEARCHB関数が本領を発揮するのは、表記ゆれのあるデータや曖昧な区切りルールのデータを処理する場面です。よく出てくる3パターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc10">表記ゆれを許容してフィールドを切り出す</span></h3>



<p class="wp-block-paragraph">顧客データで「メールアドレスのドメイン部分だけ抜き出したい」とき、入力者によって <code>@</code> が全角だったり半角だったりすることがありますよね。SEARCHBなら大小無視＋ワイルドカードでまとめて対応できます。</p>



<pre class="wp-block-code"><code>ドメイン抽出:  =MIDB(A2, SEARCHB(&quot;@&quot;, A2) + 1, LENB(A2))</code></pre>



<p class="wp-block-paragraph">半角の <code>@</code> でも、大文字小文字が違うドメインでも、まとめて同じ式で処理できますよ。</p>



<h3 class="wp-block-heading"><span id="toc11">商品コードの規則で位置を特定する</span></h3>



<p class="wp-block-paragraph">商品コードが「カテゴリ-番号」形式で、カテゴリ部分の長さが可変のデータを処理したいとき、ワイルドカードで先頭パターンを指定しつつバイト位置を取れます。</p>



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



<p class="wp-block-paragraph">「任意1文字＋ハイフン」という条件で、最初にマッチするバイト位置を返します。カテゴリ名の長さが揺れていても、ハイフンの直前までを <code>LEFTB</code> で取り出せますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">特定キーワードの出現位置でデータ仕分け</span></h3>



<p class="wp-block-paragraph">商品説明文の中で特定のキーワード（例: 「限定」「SALE」など）が出現するかどうか、出現位置が何バイト目か、で仕分けをしたい場合にも使えます。SALE と sale の両方を拾いたいときは、SEARCHBを使うと1本の式で済みますよ。</p>



<pre class="wp-block-code"><code>=IF(IFERROR(SEARCHB(&quot;sale&quot;, A2), 0) &gt; 0, &quot;セール対象&quot;, &quot;通常価格&quot;)</code></pre>



<p class="wp-block-paragraph">IFERROR でラップして、見つからない場合の <code>#VALUE!</code> を 0 に置き換えています。大小無視で検索できるので、「SALE」「Sale」「sale」のどれにもヒットしますよ。</p>



<h2 class="wp-block-heading"><span id="toc13">SEARCHBとMIDBを組み合わせた曖昧フィールド分解</span></h2>



<p class="wp-block-paragraph">区切り文字で可変長フィールドを切り出すときに、区切り記号自体に表記ゆれがある場合は、SEARCHBとMIDBの組み合わせが使いやすいです。コピペで使えるテンプレートをまとめておきますね。</p>



<h3 class="wp-block-heading"><span id="toc14">区切り文字ベースのフィールド分解テンプレート</span></h3>



<p class="wp-block-paragraph">A列に「コード-名前-備考」形式のデータが入っている想定です。ハイフンでフィールドを3つに分けましょう。SEARCHBなら、区切り記号周辺の英字の大小に揺れがあっても同じ式で処理できますよ。</p>



<pre class="wp-block-code"><code>1番目のハイフン位置: =SEARCHB(&quot;-&quot;, A2)
2番目のハイフン位置: =SEARCHB(&quot;-&quot;, A2, SEARCHB(&quot;-&quot;, A2) + 1)
コード:              =LEFTB(A2, SEARCHB(&quot;-&quot;, A2) - 1)
名前:                =MIDB(A2, SEARCHB(&quot;-&quot;, A2) + 1, SEARCHB(&quot;-&quot;, A2, SEARCHB(&quot;-&quot;, A2)+1) - SEARCHB(&quot;-&quot;, A2) - 1)
備考:                =MIDB(A2, SEARCHB(&quot;-&quot;, A2, SEARCHB(&quot;-&quot;, A2)+1) + 1, LENB(A2))</code></pre>



<p class="wp-block-paragraph">長く見えますが、考え方はシンプルです。「区切り位置をSEARCHBで求めて、その前後をMIDBで切る」というパターンの積み重ねなので、1行ずつ追うと読み解けますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">2段階検索で安全に位置を取る</span></h3>



<p class="wp-block-paragraph">区切り文字が必ず含まれるとは限らないデータでは、IFERRORで守りを入れておきましょう。</p>



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



<p class="wp-block-paragraph">ハイフンが見つからない場合は「文字列の末尾+1バイト目」を返すようにしておくと、MIDBに渡しても空文字が返るだけで、エラー連鎖を防げますよ。</p>



<h2 class="wp-block-heading"><span id="toc16">FIND系・SEARCH系関数との使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートには検索系の関数がいくつもあります。ここで全体像を整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc17">FIND・FINDB・SEARCH・SEARCHBの比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>単位</th><th>大小区別</th><th>ワイルドカード</th><th>典型用途</th></tr></thead><tbody><tr><td>FIND</td><td>文字数</td><td>あり</td><td>使えない</td><td>商品コード内の区切り位置（半角のみ）</td></tr><tr><td>FINDB</td><td>バイト数</td><td>あり</td><td>使えない</td><td>全角混在データの厳密な固定長解析</td></tr><tr><td>SEARCH</td><td>文字数</td><td>なし</td><td>使える</td><td>曖昧検索での文字位置特定</td></tr><tr><td>SEARCHB</td><td>バイト数</td><td>なし</td><td>使える</td><td>表記ゆれ許容でバイト位置を取りたい</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">厳密一致派のFINDB、曖昧検索派のSEARCHB、という覚え方が一番シンプルですよ。どちらもバイト位置を返す点は共通なので、MIDBやLEFTBと組み合わせて固定長データを扱う用途では、どちらを使っても出力の整合性は保たれます。</p>



<h3 class="wp-block-heading"><span id="toc18">曖昧検索・表記ゆれの判断ポイント</span></h3>



<p class="wp-block-paragraph">SEARCHBを選ぶ基準は、次の3点で判断できます。</p>



<ul class="wp-block-list"><li>出力先やデータ形式がバイト単位で扱われている（固定長ファイル、基幹システム連携）</li><li>大文字と小文字を区別したくない（ユーザー入力、表記ゆれのある商品名など）</li><li>ワイルドカードで柔軟なパターン検索がしたい</li></ul>



<p class="wp-block-paragraph">逆に、商品コードのように「大文字小文字を厳密に区別したい」「完全一致で検索したい」場面では、FINDBのほうが安全ですよ。</p>



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



<p class="wp-block-paragraph">SEARCHB関数でハマりやすいポイントを3つまとめました。エラーの原因と対策をセットで覚えておくと、現場で詰まりにくくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">&#8220;#VALUE!&#8221; エラー（検索文字列が見つからない）</span></h3>



<p class="wp-block-paragraph">一番よく遭遇するのが、検索文字列が対象文字列に含まれていないパターンです。たとえば <code>=SEARCHB("-", "ABCDE")</code> のようなケースですね。</p>



<p class="wp-block-paragraph">IFERRORでラップして、見つからない場合の代替値を決めておくのがおすすめです。</p>



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



<p class="wp-block-paragraph">これで、ハイフンが見つからない行は 0 として扱われ、後続の計算で判定しやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc21">&#8220;#VALUE!&#8221; エラー（開始位置が不正）</span></h3>



<p class="wp-block-paragraph">開始位置に 0 以下や、文字列の長さを超える値を指定すると同じく <code>#VALUE!</code> が返ります。SEARCHB のネスト（1つ目の結果に +1 して2つ目を探す、など）で1つ目が見つからないと、2つ目の開始位置が <code>#VALUE!</code> になり連鎖するパターンですね。</p>



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



<p class="wp-block-paragraph">入れ子のSEARCHBもIFERRORで守っておくと、見つからない行でもエラーが表示されなくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc22">ワイルドカードを文字として検索したい</span></h3>



<p class="wp-block-paragraph">ワイルドカード（<code>*</code> や <code>?</code>）そのものを検索したい場合、普通に指定すると「任意の文字列」と解釈されてしまいます。この場合はチルダ（<code>~</code>）を前に付けると、リテラル文字として扱われますよ。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;~?&quot;, &quot;質問は？ここをクリック&quot;)   → NG（半角ではない場合）
=SEARCHB(&quot;~?&quot;, &quot;Who? Me?&quot;)               → 4 （半角「?」を検索してヒット）</code></pre>



<p class="wp-block-paragraph">全角の <code>？</code> を検索したいときはチルダ不要でそのまま指定できます。<code>*</code> や <code>?</code> の半角記号を含むデータを扱うときだけ、チルダを意識すればOKですよ。</p>



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



<p class="wp-block-paragraph">SEARCHB関数と組み合わせて使う文字列操作系の関数も、あわせて押さえておくと作業がはかどりますよ。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/spreadsheet-search-function/">スプレッドシートのSEARCH関数の使い方</a>：バイト数ではなく文字数で位置を返す版です。SEARCHBとの単位の違いを確認したいときに。</li><li><a href="https://mashukabu.com/spreadsheet-findb-function/">スプレッドシートのFINDB関数の使い方</a>：大文字小文字を厳密に区別したい厳密一致派の関数です。SEARCHBとの使い分けに。</li><li><a href="https://mashukabu.com/spreadsheet-midb-function/">スプレッドシートのMIDB関数の使い方</a>：SEARCHBで求めたバイト位置から文字列を切り出すときの相棒です。</li><li><a href="https://mashukabu.com/spreadsheet-leftb-function/">スプレッドシートのLEFTB関数の使い方</a>：区切り位置の手前までをまとめて取り出したいときに便利です。</li></ul>



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



<p class="wp-block-paragraph">スプレッドシートのSEARCHB関数は、文字列の中で指定文字が何バイト目にあるかを返す、曖昧検索でバイト位置を取りたいときに便利な関数です。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=SEARCHB(検索文字列, 対象文字列, [開始位置])</code> の3引数。開始位置省略時は先頭から</li><li>全角=2バイト、半角=1バイトとしてカウントする</li><li>大文字と小文字を区別しない（&#8221;A&#8221; と &#8220;a&#8221; は同じ扱い）</li><li>ワイルドカード <code>*</code> と <code>?</code> が使える</li><li>SEARCHは文字数、SEARCHBはバイト数。MIDBやLEFTBに渡すならSEARCHB一択</li><li>FINDBとの違いは、大小区別の有無とワイルドカード可否</li><li>見つからないと #VALUE! になるので、IFERROR でラップして守る</li></ul>



<p class="wp-block-paragraph">まずは手元の区切り文字付きデータに、<code>=SEARCHB("-", A2)</code> のような形で当ててみてください。MIDBと組み合わせてフィールド分解すれば、表記ゆれのあるデータ整形の作業がぐっと短縮できますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-searchb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのRIGHTB関数の使い方｜右からバイト取得</title>
		<link>https://mashukabu.com/spreadsheet-rightb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-rightb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:11:06 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[LENB]]></category>
		<category><![CDATA[RIGHT]]></category>
		<category><![CDATA[RIGHTB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6067</guid>

					<description><![CDATA[スプレッドシートのRIGHTB関数の使い方を実例付きで解説します。文字列の末尾から指定したバイト数ぶんを取り出す関数で、全角2バイト・半角1バイトでカウントします。基本構文、RIGHT関数との違い、固定長ファイルの末尾フィールド抽出や拡張子判定など実務パターン、よくあるエラー対処まで丁寧にまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで顧客コードやファイル名を扱っていると、「全角半角まじりの文字列から末尾の◯バイトだけ取り出したい」という場面、ありませんか。基幹システムの出力ファイルで、末尾に決まったバイト数のステータスコードがくっついている、なんてケースもよくありますよね。</p>



<p class="wp-block-paragraph">RIGHT関数だと「文字数」で切るので、全角が混ざると末尾の狙った位置からズレてしまうんですよね。そんなときに頼れるのが、スプレッドシートのRIGHTB関数です。全角2バイト・半角1バイトでカウントしながら、右から必要なバイト数ぶんだけ取り出せますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのRIGHTB関数の構文から、RIGHT関数との違い、固定長ファイルの末尾フィールド抽出や拡張子判定など実務パターンまで紹介します。LENBと組み合わせた「末尾整形」のテンプレートも置いておきますね。</p>




  <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">スプレッドシートのRIGHTB関数とは？</a><ol><li><a href="#toc2" tabindex="0">関数の基本構文と引数</a></li><li><a href="#toc3" tabindex="0">RIGHT関数との違い（文字数 vs バイト数）</a></li></ol></li><li><a href="#toc4" tabindex="0">RIGHTB関数の基本的な使い方</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">実務で使えるRIGHTB関数の活用パターン</a><ol><li><a href="#toc8" tabindex="0">固定長ファイルの末尾フィールド切り出し</a></li><li><a href="#toc9" tabindex="0">ファイル名からの拡張子抽出（バイト単位）</a></li><li><a href="#toc10" tabindex="0">末尾チェックサムや区分コードの抽出</a></li></ol></li><li><a href="#toc11" tabindex="0">RIGHTBとLENBを組み合わせた末尾整形</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">LEFT系・RIGHT系関数との使い分け</a><ol><li><a href="#toc16" tabindex="0">LEFT・LEFTB・RIGHT・RIGHTB・MID・MIDBの比較</a></li><li><a href="#toc17" tabindex="0">バイト系関数を使うべき判断ポイント</a></li></ol></li><li><a href="#toc18" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc19" tabindex="0">&#8220;#VALUE!&#8221; エラー</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">Q. RIGHTBとRIGHTの違いを一言で教えてください</a></li><li><a href="#toc24" tabindex="0">Q. スプレッドシートのRIGHTB関数はExcelと同じですか？</a></li><li><a href="#toc25" tabindex="0">Q. RIGHTBで全角文字が途中で切れてしまいます</a></li><li><a href="#toc26" tabindex="0">Q. RIGHTB関数でエラーが出ます</a></li></ol></li><li><a href="#toc27" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのRIGHTB関数とは？</span></h2>



<p class="wp-block-paragraph">スプレッドシートのRIGHTB関数は、文字列の末尾から指定したバイト数ぶんの文字を取り出す文字列関数です。読み方は「ライト・ビー」で、RIGHT（右）と Byte（バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">全角文字は2バイト、半角文字は1バイトとしてカウントします。日本語と英数字が入り混じるファイル名や伝票データの末尾部分を、バイト単位で正確に抽出したいときに便利ですよ。</p>



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



<p class="wp-block-paragraph">基本構文はシンプルで、引数は2つだけです。</p>



<pre class="wp-block-code"><code>=RIGHTB(文字列, [バイト数])</code></pre>



<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>対象となるテキスト</td><td>省略不可</td></tr><tr><td>バイト数</td><td>取り出すバイト数（0以上の整数）</td><td>省略時は1（末尾1バイト）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">バイト数に小数を指定した場合は、整数部分に切り捨てられます。負の数を入れると <code>#VALUE!</code> エラーになるので、気をつけてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc3">RIGHT関数との違い（文字数 vs バイト数）</span></h3>



<p class="wp-block-paragraph">RIGHT関数とRIGHTB関数は、切り出す単位が違います。ここを押さえておくと、使い分けで迷いません。</p>



<ul class="wp-block-list"><li><strong>RIGHT</strong>: 末尾から「文字数」ぶんを取り出す。全角・半角を区別しない</li><li><strong>RIGHTB</strong>: 末尾から「バイト数」ぶんを取り出す。全角=2バイト、半角=1バイトで計算</li></ul>



<p class="wp-block-paragraph">たとえば「伝票A-100」という文字列で、右から4つ取り出したい場合はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td><code>=RIGHT("伝票A-100", 4)</code></td><td>A-100 の右4文字（-100）</td><td>末尾から4文字（全角半角を問わず）</td></tr><tr><td><code>=RIGHTB("伝票A-100", 4)</code></td><td>-100</td><td>末尾から4バイト（半角4文字=4バイト）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「末尾4バイトがステータスコード」のような固定長仕様のときは、RIGHTBの出番ですよ。</p>



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



<p class="wp-block-paragraph">それでは実際に使ってみましょう。末尾からバイト数でカウントする感覚を掴むと、結果がイメージしやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc5">全角・半角が混在する文字列での挙動</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><code>=RIGHTB("あいうえお", 4)</code></td><td>えお</td><td>末尾の全角2文字=4バイト</td></tr><tr><td><code>=RIGHTB("ABCDE", 3)</code></td><td>CDE</td><td>末尾の半角3文字=3バイト</td></tr><tr><td><code>=RIGHTB("関数Excel", 6)</code></td><td>Excel（+1バイト）</td><td>末尾の半角5+1バイト=6バイト</td></tr><tr><td><code>=RIGHTB("商品コード", 5)</code></td><td>コード</td><td>末尾の全角2文字=4バイト（5バイト目は全角の途中になるため切り捨て）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">注目してほしいのは最後の行です。バイト数が全角文字の途中で切れる場合、スプレッドシートでは<strong>そのバイトは切り捨てられます</strong>。文字の後ろ半分だけが残って文字化けする、といった心配は不要ですよ。</p>



<h3 class="wp-block-heading"><span id="toc6">引数「バイト数」の省略時の挙動</span></h3>



<p class="wp-block-paragraph">バイト数を省略すると、末尾の1バイトだけ取り出されます。</p>



<pre class="wp-block-code"><code>=RIGHTB(&quot;あいうえお&quot;)   → （空文字または末尾1バイト分の扱い）
=RIGHTB(&quot;ABCDE&quot;)        → E</code></pre>



<p class="wp-block-paragraph">全角終わりの文字列でバイト数を省略すると、1バイトだけだと全角文字の半分にあたるため、結果は空になります。省略は半角終わりのときしか実用的ではないので、基本は明示的に指定するのがおすすめですよ。</p>



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



<p class="wp-block-paragraph">RIGHTB関数が本領を発揮するのは、末尾に固定バイト数の情報がくっついているデータを扱う場面です。よく出てくる3パターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc8">固定長ファイルの末尾フィールド切り出し</span></h3>



<p class="wp-block-paragraph">基幹システムからダウンロードしたテキストで、「末尾8バイトが受付番号」「末尾4バイトがステータスコード」のような末尾固定長レイアウトはよくあります。RIGHTB関数なら、全角が混ざっていても末尾側からきっちりバイト単位で抜き出せますよ。</p>



<pre class="wp-block-code"><code>ステータスコード: =RIGHTB(A2, 4)
受付番号:        =RIGHTB(A2, 8)</code></pre>



<p class="wp-block-paragraph">RIGHTだと全角が混ざったときに末尾の切り出し位置がズレますが、RIGHTBならレイアウト定義書どおりの位置から取れます。</p>



<h3 class="wp-block-heading"><span id="toc9">ファイル名からの拡張子抽出（バイト単位）</span></h3>



<p class="wp-block-paragraph">ファイルパスリストを整理していて、「末尾4バイト（<code>.xlsx</code> など）を取り出したい」というケースにも使えます。半角ピリオド+半角3〜4文字の拡張子はバイト数でも文字数でも同じ結果ですが、日本語ファイル名が混ざるリストでは、RIGHTBのほうが安全ですよ。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, 5)</code></pre>



<p class="wp-block-paragraph">A列に「月次報告書.xlsx」のようなファイル名があれば、<code>.xlsx</code> がきれいに取り出せます。<code>.docx</code> や <code>.pdf</code> など長さが違う拡張子が混在するなら、後述の <code>FIND</code> を併用するパターンがおすすめですよ。</p>



<h3 class="wp-block-heading"><span id="toc10">末尾チェックサムや区分コードの抽出</span></h3>



<p class="wp-block-paragraph">伝票番号や会員コードの末尾1〜2バイトにチェックデジットや区分コードが埋め込まれているフォーマットは、業務系システムでよくあります。末尾だけ分離して別列で管理したいときにRIGHTBが効きますよ。</p>



<pre class="wp-block-code"><code>末尾1バイト:  =RIGHTB(A2, 1)
末尾2バイト:  =RIGHTB(A2, 2)
本体部分:     =LEFTB(A2, LENB(A2)-1)</code></pre>



<p class="wp-block-paragraph">LENB（文字列全体のバイト数を返す関数）と組み合わせると、末尾のコードと本体部分を一度に分離できます。マスター突合の前処理として使うと、照合作業の時短になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc11">RIGHTBとLENBを組み合わせた末尾整形</span></h2>



<p class="wp-block-paragraph">末尾のコード部分だけ抜き出したいだけでなく、「本体部分も同時に取りたい」「末尾固定桁ぶんを除外したい」というシーンも多いです。RIGHTBとLENBを組み合わせると、分離と整形を同時にこなせますよ。</p>



<h3 class="wp-block-heading"><span id="toc12">本体と末尾コードを分離するテンプレート</span></h3>



<p class="wp-block-paragraph">A列に文字列、B列に末尾コードのバイト数（たとえば2）を入れている想定です。C列に本体、D列に末尾コードを出しましょう。</p>



<pre class="wp-block-code"><code>本体:   =LEFTB(A2, LENB(A2)-B2)
末尾:   =RIGHTB(A2, B2)</code></pre>



<p class="wp-block-paragraph">LENB から B2 を引いた数字が、本体側のバイト数になります。これでコード体系が変わっても、B列の数字を変えるだけで対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc13">末尾固定桁の除外テンプレート</span></h3>



<p class="wp-block-paragraph">末尾に年度コード（4バイト）や区分（2バイト）が常にくっついているデータから、本体だけ取り出したいケースはこうなります。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, LENB(A2)-4)</code></pre>



<p class="wp-block-paragraph">末尾4バイトぶんを取り除いた本体部分が返ります。RIGHTBの逆算として使うパターンですが、データクレンジングの現場では頻出ですよ。</p>



<h3 class="wp-block-heading"><span id="toc14">コピペで使えるセット数式</span></h3>



<p class="wp-block-paragraph">よく使う組み合わせを一式テンプレートにしておきますね。A2にデータ、B2に末尾バイト数という前提です。</p>



<pre class="wp-block-code"><code>全体バイト数:   =LENB(A2)
本体バイト数:   =LENB(A2)-B2
本体部分:       =LEFTB(A2, LENB(A2)-B2)
末尾コード:     =RIGHTB(A2, B2)
末尾除外済み:   =LEFTB(A2, LENB(A2)-B2)</code></pre>



<p class="wp-block-paragraph">データ整形用のワークシートに丸ごと貼り付けて、A列と末尾バイト数を差し替えるだけで使えます。列挿入で必要な情報が一度に揃うので、前処理の時短につながりますよ。</p>



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



<p class="wp-block-paragraph">スプレッドシートには似た名前の文字列関数がいくつもあります。ここで全体像を整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc16">LEFT・LEFTB・RIGHT・RIGHTB・MID・MIDBの比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>切り出し位置</th><th>単位</th><th>典型用途</th></tr></thead><tbody><tr><td>LEFT</td><td>左から</td><td>文字数</td><td>商品コードの頭3桁抽出</td></tr><tr><td>LEFTB</td><td>左から</td><td>バイト数</td><td>基幹システム用の項目整形</td></tr><tr><td>RIGHT</td><td>右から</td><td>文字数</td><td>ファイル拡張子の抽出</td></tr><tr><td>RIGHTB</td><td>右から</td><td>バイト数</td><td>末尾の固定長フィールド切り出し</td></tr><tr><td>MID</td><td>任意位置から</td><td>文字数</td><td>郵便番号の後半3桁抽出</td></tr><tr><td>MIDB</td><td>任意位置から</td><td>バイト数</td><td>固定長ファイルの中間フィールド</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">左からの切り出しを扱いたいときは、<a href="https://mashukabu.com/spreadsheet-leftb-function/">スプレッドシートのLEFTB関数の使い方</a>もあわせて参考にしてみてくださいね。任意の中間位置から取り出したい場合は<a href="https://mashukabu.com/spreadsheet-midb-function/">スプレッドシートのMIDB関数の使い方</a>、バイト数の計算には<a href="https://mashukabu.com/spreadsheet-lenb-function/">スプレッドシートのLENB関数の使い方</a>も参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc17">バイト系関数を使うべき判断ポイント</span></h3>



<p class="wp-block-paragraph">バイト系関数（LEFTB/RIGHTB/MIDB/LENB）を選ぶ基準は、次の3点で判断できます。</p>



<ul class="wp-block-list"><li>出力元のシステムがバイト単位で桁数を指定している</li><li>全角半角が混在するデータを扱っている</li><li>固定長フォーマットのファイルを読み書きする必要がある</li></ul>



<p class="wp-block-paragraph">逆に、社内の集計シートやダッシュボードのように「文字数で区切れれば十分」という場面は、RIGHT系のほうがシンプルで読みやすいですよ。</p>



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



<p class="wp-block-paragraph">RIGHTB関数でハマりやすいポイントを3つまとめました。エラーの原因と対策をセットで覚えておくと、現場で詰まりにくくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc19">&#8220;#VALUE!&#8221; エラー</span></h3>



<p class="wp-block-paragraph">バイト数に負の数を指定したときに出ます。たとえば <code>=RIGHTB("ABCDE", -1)</code> のようなケースですね。<code>LENB(A2)-B2</code> のような計算式の結果がマイナスになっていた、というミスがよくあります。MAX関数で下限を 0 に固定するのがおすすめです。</p>



<pre class="wp-block-code"><code>=RIGHTB(A2, MAX(B2, 0))</code></pre>



<p class="wp-block-paragraph">これで、B2がマイナスになっても安全に 0 として扱えますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">想定より短い結果が返る</span></h3>



<p class="wp-block-paragraph">「10バイトのつもりで指定したのに9文字しか返ってこない」というときは、<strong>全角の途中で切れている</strong>ケースが多いです。先ほど解説したとおり、全角の途中にバイト境界が来ると、そのバイトぶんは切り捨てられます。</p>



<p class="wp-block-paragraph">末尾側でも全角の前半バイトで境界が来ると1バイトぶん失われるので、LENB（対象文字列の総バイト数を返す関数）と組み合わせて、切り捨てが発生していないかを確認しておきましょう。</p>



<pre class="wp-block-code"><code>=LENB(RIGHTB(A2, 10))   → 9 なら、10バイト目が全角の途中だった</code></pre>



<h3 class="wp-block-heading"><span id="toc21">結果が空になる</span></h3>



<p class="wp-block-paragraph"><code>=RIGHTB("あいうえお", 1)</code> のように、末尾が全角で1バイトだけ指定すると、結果が空（空文字）になります。「数式は合っているのに何も返ってこない」ときは、バイト数が全角1文字分（2バイト）に満たないかを確認してみてくださいね。</p>



<p class="wp-block-paragraph">最低でも 2 以上を指定するか、<code>=IF(LENB(A2)>=2, RIGHTB(A2, 2), A2)</code> のようにIFで判定すると安心です。</p>



<h2 class="wp-block-heading"><span id="toc22">よくある質問</span></h2>



<h3 class="wp-block-heading"><span id="toc23">Q. RIGHTBとRIGHTの違いを一言で教えてください</span></h3>



<p class="wp-block-paragraph">RIGHTは「文字数」で末尾を切り出し、RIGHTBは「バイト数」で切り出します。全角1文字をRIGHTは1文字、RIGHTBは2バイトとして数えます。全角が混在する固定長データや基幹システムの出力ファイルにはRIGHTB、通常のテキスト処理にはRIGHTがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc24">Q. スプレッドシートのRIGHTB関数はExcelと同じですか？</span></h3>



<p class="wp-block-paragraph">はい、引数・動作ともにExcelのRIGHTB関数と同じです。<code>=RIGHTB(文字列, バイト数)</code> の形で同様に動きますので、ExcelとGoogleスプレッドシートを行き来する業務でもそのまま使えます。</p>



<h3 class="wp-block-heading"><span id="toc25">Q. RIGHTBで全角文字が途中で切れてしまいます</span></h3>



<p class="wp-block-paragraph">バイト数が全角文字の途中に当たった場合、スプレッドシートはその文字を切り捨てます。たとえば末尾が全角文字で1バイトを指定すると、結果が空になります。バイト数を偶数にするか、LENBで全体バイト数を確認しながら調整してください。</p>



<h3 class="wp-block-heading"><span id="toc26">Q. RIGHTB関数でエラーが出ます</span></h3>



<p class="wp-block-paragraph"><code>#VALUE!</code> エラーはバイト数に負の数を指定したときに発生します。<code>=RIGHTB(A2, MAX(B2, 0))</code> のようにMAX関数でガードするか、バイト数に0以上の整数を指定してください。</p>



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



<p class="wp-block-paragraph">スプレッドシートのRIGHTB関数は、バイト数を基準に文字列の末尾を取り出せる、固定長データや末尾コード抽出にピッタリの関数です。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=RIGHTB(文字列, [バイト数])</code> の2引数。バイト数省略時は1バイト</li><li>全角=2バイト、半角=1バイトとしてカウントする</li><li>全角文字の途中でバイトが切れる場合、そのバイトは切り捨てられる</li><li>RIGHTは文字数、RIGHTBはバイト数。末尾固定長フィールドの切り出しはRIGHTB一択</li><li>LENBと組み合わせると、本体と末尾コードの分離が一発で決まる</li><li>#VALUE! は負のバイト数指定、結果が空になるのは全角終わりでバイト数が足りないパターン</li></ul>



<p class="wp-block-paragraph">まずは手元の伝票データやファイル名リストを、<code>=RIGHTB(A2, 4)</code> のような形で末尾から抽出してみてください。マスター突合やデータクレンジングの前処理が一段ラクになりますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-rightb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
