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

<channel>
	<title>バイト &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/%e3%83%90%e3%82%a4%e3%83%88/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 15:16:38 +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>ExcelのSEARCHB関数の使い方｜バイト位置を大文字小文字区別なしで検索</title>
		<link>https://mashukabu.com/excel-searchb-function/</link>
					<comments>https://mashukabu.com/excel-searchb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:28 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[SEARCHB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6511</guid>

					<description><![CDATA[ExcelのSEARCHB関数の使い方を解説します。バイト数で文字位置を検索する仕組み、大文字小文字を区別しない特徴、ワイルドカード活用法、FINDB・SEARCHとの違い、LEFTB・MIDBとの組み合わせ例まで紹介します。]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">ExcelのSEARCHB関数の使い方｜バイト位置を大文字小文字区別なしで検索</h1>



<p class="wp-block-paragraph">ExcelのSEARCHB関数は、文字列の中から特定の文字を検索して「バイト位置」を返す関数です。半角は1バイト、全角は2バイトとしてカウントしますよ。SEARCH関数と似ていますが、戻り値の単位がバイト数になる点が異なります。</p>



<p class="wp-block-paragraph">SEARCHB関数の最大の特徴は2つです。1つ目は大文字と小文字を区別しないこと。2つ目はワイルドカード（<code>*</code> <code>?</code>）が使えること。表記ゆれのあるデータや、あいまい検索が必要な場面で活躍してくれますよ。</p>



<p class="wp-block-paragraph">この記事ではSEARCHB関数の構文と基本的な使い方を解説します。FINDB関数との違いやワイルドカード活用例、実務でのパターンも紹介しますね。Excel初〜中級者向けの内容ですよ。</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><li><a href="#toc1" tabindex="0">ExcelのSEARCHB関数とは？</a></li><li><a href="#toc2" tabindex="0">SEARCHB関数の構文と引数</a></li><li><a href="#toc3" tabindex="0">SEARCHB関数の基本的な使い方</a><ol><li><a href="#toc4" tabindex="0">パターン1: 半角のみの文字列</a></li><li><a href="#toc5" tabindex="0">パターン2: 全角のみの文字列</a></li><li><a href="#toc6" tabindex="0">パターン3: 半角と全角が混在する文字列</a></li></ol></li><li><a href="#toc7" tabindex="0">SEARCHB関数でワイルドカードを使う</a></li><li><a href="#toc8" tabindex="0">SEARCH関数・FINDB関数との違い</a><ol><li><a href="#toc9" tabindex="0">SEARCH関数との違い（文字数 vs バイト数）</a></li><li><a href="#toc10" tabindex="0">FINDB関数との違い（大小区別とワイルドカード）</a></li></ol></li><li><a href="#toc11" tabindex="0">SEARCHB関数の実務活用例</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><li><a href="#toc15" tabindex="0">例4: エラーを防ぐためのIFERROR組み合わせ</a></li></ol></li><li><a href="#toc16" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc17" tabindex="0">DBCS設定による挙動の注意点</a></li><li><a href="#toc18" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">SEARCHB関数は、指定した文字列が検索対象の中で最初に現れる位置を、バイト数で返してくれる関数です。読み方は「サーチ・ビー」で、SEARCH（検索）とByte（バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">半角は1バイト、全角は2バイトとしてカウントされます。たとえば<code>abc東京</code>という文字列で「京」を検索してみましょう。SEARCH関数は「5文字目」と返し、SEARCHB関数は「6バイト目」と返します。半角3文字（3バイト）+ 全角1文字（2バイト）の次なので、6バイト目になるわけです。</p>



<p class="wp-block-paragraph">SEARCHB関数の特徴は、大文字と小文字を区別しないこと、そしてワイルドカードが使えることです。「Apple」の中から「a」を検索してもヒットしますし、<code>?-*</code>のようなあいまい指定もできますよ。</p>



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



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



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



<p class="wp-block-paragraph">引数は3つあり、最後の「開始位置」だけ省略できます。</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">戻り値は、検索文字列が最初に現れる位置をバイト数で返します。1始まり（最初のバイトは1）です。見つからない場合は<code>#VALUE!</code>エラーになりますよ。</p>



<p class="wp-block-paragraph">なおSEARCHB関数は大文字と小文字を区別しません。「A」と「a」は同じ文字として扱われます。区別したい場合は、後述するFINDB関数を使ってくださいね。</p>



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



<p class="wp-block-paragraph">実際に3つのパターンでSEARCHB関数を使ってみましょう。</p>



<h3 class="wp-block-heading"><span id="toc4">パターン1: 半角のみの文字列</span></h3>



<p class="wp-block-paragraph">A1セルに<code>apple-orange</code>が入っているとします。</p>



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



<p class="wp-block-paragraph">結果は<code>6</code>になります。半角文字はすべて1バイトなので、6文字目=6バイト目という単純な結果ですね。</p>



<p class="wp-block-paragraph">ここで大文字小文字区別なしの特徴を試してみましょう。</p>



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



<p class="wp-block-paragraph">結果は<code>1</code>になります。対象は小文字の<code>apple</code>ですが、SEARCHB関数は大小を区別しないのでヒットしますよ。</p>



<h3 class="wp-block-heading"><span id="toc5">パターン2: 全角のみの文字列</span></h3>



<p class="wp-block-paragraph">A1セルに<code>東京都新宿区</code>が入っているとします。</p>



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



<p class="wp-block-paragraph">結果は<code>7</code>になります。全角文字は1文字あたり2バイトなので、「東京都」までで6バイト、「新」が7バイト目から始まる計算ですね。SEARCH関数なら「4」を返します。</p>



<h3 class="wp-block-heading"><span id="toc6">パターン3: 半角と全角が混在する文字列</span></h3>



<p class="wp-block-paragraph">A1セルに<code>ABC-赤色</code>が入っているとします。</p>



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



<p class="wp-block-paragraph">結果は<code>5</code>になります。半角の<code>ABC-</code>が4バイト、続く「赤」が5バイト目から始まるためです。</p>



<p class="wp-block-paragraph">ここでも大小区別なしの強みが活きます。</p>



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



<p class="wp-block-paragraph">結果は<code>1</code>になります。対象は大文字の<code>ABC</code>ですが、小文字で指定してもヒットしてくれますよ。表記ゆれのあるデータで便利な特徴です。</p>



<h2 class="wp-block-heading"><span id="toc7">SEARCHB関数でワイルドカードを使う</span></h2>



<p class="wp-block-paragraph">SEARCHB関数のもう1つの強みが、ワイルドカードによるあいまい検索です。FINDB関数では使えない機能なので、ぜひ押さえておきたいですね。</p>



<figure class="wp-block-table"><table><thead><tr><th>ワイルドカード</th><th>意味</th></tr></thead><tbody><tr><td><code>?</code></td><td>任意の1文字</td></tr><tr><td><code>*</code></td><td>任意の文字列（0文字以上）</td></tr><tr><td><code>~?</code> <code>~*</code></td><td>リテラルの<code>?</code>や<code>*</code>を検索</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">A1セルに<code>Order-A1-2025</code>が入っているとして、いくつか試してみましょう。</p>



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



<p class="wp-block-paragraph">結果は<code>7</code>になります。「A」+任意の1文字+「-」というパターンが7バイト目から始まることを示しています。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;Order-*-2025&quot;, A1)</code></pre>



<p class="wp-block-paragraph">結果は<code>1</code>になります。「Order-」と「-2025」の間に何文字あってもマッチします。型番や注文番号のフォーマット検証に応用できますよ。</p>



<p class="wp-block-paragraph">リテラルの<code>?</code>を検索したいときは<code>~?</code>と書きます。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;~?&quot;, &quot;本当?偽物?&quot;)</code></pre>



<p class="wp-block-paragraph">結果は<code>5</code>になります。チルダ（<code>~</code>）でエスケープすることで、ワイルドカードではなく文字としての<code>?</code>を検索できますよ。</p>



<h2 class="wp-block-heading"><span id="toc8">SEARCH関数・FINDB関数との違い</span></h2>



<p class="wp-block-paragraph">SEARCHB関数は、SEARCH関数とFINDB関数の両方と比較されます。それぞれの違いを表で整理しておきましょう。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>SEARCH関数</th><th>SEARCHB関数</th></tr></thead><tbody><tr><td>カウント方式</td><td>文字数（半角・全角ともに1）</td><td>バイト数（半角=1, 全角=2）</td></tr><tr><td>戻り値</td><td>文字位置</td><td>バイト位置</td></tr><tr><td>大文字小文字区別</td><td>なし</td><td>なし</td></tr><tr><td>ワイルドカード</td><td>対応</td><td>対応</td></tr><tr><td>主な用途</td><td>一般的な文字位置検索</td><td>LEFTB・MIDBと連携した抽出</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">具体例で比較してみます。<code>abc東京</code>という文字列で「京」を検索した場合の結果はこうなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>結果</th><th>理由</th></tr></thead><tbody><tr><td><code>=SEARCH("京", "abc東京")</code></td><td>5</td><td>abcが3文字、東が4文字目、京が5文字目</td></tr><tr><td><code>=SEARCHB("京", "abc東京")</code></td><td>6</td><td>abcが3バイト、東が4〜5バイト、京が6バイト目から</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">LEFTB・MIDB・RIGHTB といったバイト系関数と組み合わせるなら、必ずSEARCHB関数を使ってください。SEARCH関数の結果をバイト系関数に渡すと、全角文字でズレが発生しますよ。SEARCH関数について詳しくは <a href="https://mashukabu.com/excel-function-howto-use-search/">2026-04-04-excel-function-howto-use-search</a> を参考にしてください。</p>



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



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



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FINDB関数</th><th>SEARCHB関数</th></tr></thead><tbody><tr><td>大文字小文字区別</td><td>あり</td><td>なし</td></tr><tr><td>ワイルドカード</td><td>非対応</td><td>対応（<code>*</code>, <code>?</code>）</td></tr><tr><td>用途</td><td>厳密一致の検索</td><td>あいまい検索・表記ゆれ対応</td></tr><tr><td>エラー条件</td><td>厳密一致しないと #VALUE!</td><td>大小無視で見つかればヒット</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば<code>Apple</code>という文字列で小文字の「a」を検索する場合を考えてみましょう。FINDB関数は対象に小文字「a」が存在しないため<code>#VALUE!</code>エラーを返します。一方のSEARCHB関数は大文字小文字を区別しないので<code>1</code>を返してくれますよ。</p>



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



<ul class="wp-block-list"><li><strong>厳密一致でバイト位置を取りたい</strong>: FINDB関数を使う</li><li><strong>大小無視やあいまい検索でバイト位置を取りたい</strong>: SEARCHB関数を使う</li></ul>



<p class="wp-block-paragraph">FINDB関数について詳しくは <a href="https://mashukabu.com/excel-findb-function/">2026-05-04-excel-findb-function</a> を参考にしてください。</p>



<h2 class="wp-block-heading"><span id="toc11">SEARCHB関数の実務活用例</span></h2>



<p class="wp-block-paragraph">SEARCHB関数は単体で使うより、バイト系関数と組み合わせるのが基本です。LEFTB・MIDB・RIGHTBとセットで使うことが多いですよ。よく使うパターンを4つ紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc12">例1: 全角文字の前の半角部分を取り出す</span></h3>



<p class="wp-block-paragraph">A1セルに<code>abc123東京支店</code>が入っているとします。全角文字「東」より前の半角部分を抽出するには、次の数式を使います。</p>



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



<p class="wp-block-paragraph">結果は<code>abc123</code>になります。「東」のバイト位置（7）から1を引いた6バイト分を左から取り出す、という考え方ですね。LEFTB関数について詳しくは <a href="https://mashukabu.com/excel-leftb-function/">2026-05-03-excel-leftb-function</a> を参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc13">例2: 区切り文字でデータを分割する</span></h3>



<p class="wp-block-paragraph">A1セルに<code>商品-abc-001</code>が入っているとき、最初のハイフンより後ろの部分を取り出します。</p>



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



<p class="wp-block-paragraph">結果は<code>abc-001</code>になります。ハイフンのバイト位置（5）の次（6）から、十分な長さ（100バイト）を切り出します。MIDB関数について詳しくは <a href="https://mashukabu.com/excel-function-howto-use-midb/">2023-01-03-excel-function-howto-use-midb</a> を参考にしてください。</p>



<h3 class="wp-block-heading"><span id="toc14">例3: ワイルドカードで型番を抽出する</span></h3>



<p class="wp-block-paragraph">A1セルに<code>Order#A1-2025</code>が入っているとして、「A」+任意1文字+「-」のパターン以降を取り出します。</p>



<pre class="wp-block-code"><code>=MIDB(A1, SEARCHB(&quot;A?-&quot;, A1), 100)</code></pre>



<p class="wp-block-paragraph">結果は<code>A1-2025</code>になります。固定の文字列で検索できないあいまいなフォーマットでも、ワイルドカードでマッチさせて切り出せますよ。FINDB関数ではできないSEARCHB関数ならではの活用例です。</p>



<h3 class="wp-block-heading"><span id="toc15">例4: エラーを防ぐためのIFERROR組み合わせ</span></h3>



<p class="wp-block-paragraph">検索文字が見つからないと<code>#VALUE!</code>エラーになります。条件分岐に組み込むときは、IFERROR関数（エラー時に代替値を返す関数）でラップしておくと安心ですよ。</p>



<pre class="wp-block-code"><code>=IFERROR(SEARCHB(&quot;対象文字&quot;, A1), 0)</code></pre>



<p class="wp-block-paragraph">検索文字が見つからない場合に<code>0</code>を返すようにしています。後続の数式でエラーを連鎖させない工夫ですね。</p>



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



<p class="wp-block-paragraph">SEARCHB関数で発生しやすいエラーを整理しておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>エラー</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code></td><td>検索文字列が対象内に見つからない</td><td>IFERRORでラップするか、検索文字列を見直す</td></tr><tr><td><code>#VALUE!</code></td><td>開始位置が 0 以下</td><td>開始位置を1以上に修正</td></tr><tr><td><code>#VALUE!</code></td><td>開始位置が対象のバイト数を超える</td><td>LENB関数で対象のバイト数を確認</td></tr><tr><td><code>#VALUE!</code></td><td>開始位置が全角文字の2バイト目を指している</td><td>開始位置を1バイト前後にずらす</td></tr><tr><td><code>#NAME?</code></td><td>関数名のスペル間違い</td><td><code>SEARCHB</code>の綴りを確認</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に4つ目の「全角文字の2バイト目を指定している」は気づきにくいケースです。たとえば<code>東京</code>に対して<code>=SEARCHB("京", "東京", 2)</code>とした場合を考えてみましょう。開始位置の2バイト目は「東」の2バイト目を指しているため、エラーになります。開始位置は基本的に1か、半角文字の境界に揃えるのが安全ですよ。</p>



<p class="wp-block-paragraph">対象のバイト数を事前に確認したいときは、LENB関数が便利です。詳しくは <a href="https://mashukabu.com/excel-function-howto-use-lenb/">2026-04-04-excel-function-howto-use-lenb</a> を参考にしてください。</p>



<h2 class="wp-block-heading"><span id="toc17">DBCS設定による挙動の注意点</span></h2>



<p class="wp-block-paragraph">SEARCHB関数のバイト換算が動作するのは、Excelの言語設定が特定の言語になっているときだけです。具体的には「日本語」「中国語（簡体字／繁体字）」「韓国語」の場合に限られます。これらはダブルバイト文字セット（DBCS）対応言語と呼ばれますよ。</p>



<p class="wp-block-paragraph">英語環境などDBCS非対応言語では、SEARCHB関数はSEARCH関数と同じ挙動になります。全文字を1バイトとしてカウントする状態ですね。海外拠点とExcelファイルをやり取りする場合は、念のため言語設定を確認しておくと安心です。</p>



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



<p class="wp-block-paragraph">ExcelのSEARCHB関数は、半角と全角が混在する文字列を「バイト数」で位置検索できる関数です。大文字小文字を区別せず、ワイルドカードも使える柔軟な検索関数ですよ。3つの関連関数と整理しておきましょう。</p>



<ul class="wp-block-list"><li><strong>SEARCHB関数</strong>: バイト位置を返す。大小区別なし・ワイルドカード対応。あいまい検索向き</li><li><strong>SEARCH関数</strong>: 文字位置を返す。大小区別なし・ワイルドカード対応。一般的な文字検索向き</li><li><strong>FINDB関数</strong>: バイト位置を返す。大小区別あり・ワイルドカード非対応。厳密一致向き</li></ul>



<p class="wp-block-paragraph">商品コード・型番・住所など「半角と全角が混在するデータ」を扱う場面で、SEARCHB関数を思い出してみてくださいね。ワイルドカードを使ったあいまい検索や、表記ゆれのあるデータの解析に強みを発揮しますよ。エラーが出やすい場面ではIFERROR関数でラップしておくと、業務でも安心して使えます。</p>



<p class="wp-block-paragraph">関連する関数の一覧は <a href="https://mashukabu.com/excel-function-alphabetical-order/">2022-02-13-excel-function-alphabetical-order</a> や <a href="https://mashukabu.com/excel-function-list-by-function/">2022-02-19-excel-function-list-by-function</a> にまとめてあります。あわせてチェックしてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-searchb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのREPLACEB関数の使い方｜位置指定バイト置換</title>
		<link>https://mashukabu.com/excel-replaceb-function/</link>
					<comments>https://mashukabu.com/excel-replaceb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:24 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[REPLACEB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6509</guid>

					<description><![CDATA[ExcelのREPLACEB関数の使い方を解説。バイト数で位置指定する文字置換関数で、半角と全角が混在するデータでもREPLACEとは違う精密な置換が可能です。REPLACEとの違い、FINDB・SEARCHBとの組み合わせも実例付きで紹介。]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">ExcelのREPLACEB関数の使い方｜位置指定バイト置換</h1>



<p class="wp-block-paragraph">REPLACEB関数は、文字列の指定位置から指定バイト数分の文字を、別の文字列で置き換える関数です。半角と全角が混在するデータで「正しい位置」を指定するときに、文字数ではなくバイト数で動くため重宝します。</p>



<p class="wp-block-paragraph">「REPLACE関数で半角カナ混在データを置換したら、位置がずれた」という経験はありませんか。本記事では、REPLACEB関数の構文・使い方・REPLACE関数との違いを実例付きで解説します。FINDB・SEARCHB関数と組み合わせた実用パターンも紹介します。</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><li><a href="#toc1" tabindex="0">ExcelのREPLACEB関数とは？（読み方・基本機能）</a><ol><li><a href="#toc2" tabindex="0">REPLACEB関数の読み方と語源</a></li><li><a href="#toc3" tabindex="0">REPLACEB関数で何ができるか</a></li></ol></li><li><a href="#toc4" tabindex="0">REPLACEB関数の構文と引数</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">REPLACEB関数の使い方（基本例）</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">REPLACE関数とREPLACEB関数の違い</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">FINDB・SEARCHBと組み合わせた実用例</a><ol><li><a href="#toc15" tabindex="0">例1: 区切り文字を全角に統一</a></li><li><a href="#toc16" tabindex="0">例2: ワイルドカード検索からの置換</a></li><li><a href="#toc17" tabindex="0">例3: 個人情報のマスキング</a></li></ol></li><li><a href="#toc18" tabindex="0">REPLACEB関数のよくあるエラーと対処法</a></li><li><a href="#toc19" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ExcelのREPLACEB関数とは？（読み方・基本機能）</span></h2>



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



<p class="wp-block-paragraph">REPLACEB関数（読み方：リプレイス・ビー）は、文字列の一部をバイト数指定で別の文字列に置き換える関数です。関数名は「REPLACE（置換）+ B（Byte：バイト）」に由来します。</p>



<p class="wp-block-paragraph">Excelには文字数で操作する系統（REPLACE/LEFT/MID等）が用意されています。それとは別に、バイト数で操作する「Bシリーズ」（REPLACEB/LEFTB/MIDB等）もあります。本関数はその「Bシリーズ」の置換版です。</p>



<h3 class="wp-block-heading"><span id="toc3">REPLACEB関数で何ができるか</span></h3>



<p class="wp-block-paragraph">REPLACEB関数の主な用途は次のとおりです。</p>



<ul class="wp-block-list"><li>半角・全角が混在する文字列の一部置換</li><li>半角カタカナを含むデータでの位置指定置換</li><li>商品コード・顧客IDなど固定バイト長フィールドの一部書き換え</li><li>個人情報のマスキング処理（電話番号の中央4桁を <code>****</code> にする等）</li><li>外部システム連携時のフィールド長調整</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p><strong>REPLACEとREPLACEBはどちらを使う？</strong><br>すべて半角だけ、またはすべて全角だけのデータならREPLACEで十分です。半角と全角が混在する、特に半角カナを含むデータではREPLACEBが必要になります。</p></blockquote>



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



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



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



<h3 class="wp-block-heading"><span id="toc6">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>役割</th><th>必須</th><th>値の例</th></tr></thead><tbody><tr><td>文字列</td><td>置換対象の元の文字列</td><td>必須</td><td>&#8220;Excel関数&#8221;</td></tr><tr><td>開始位置</td><td>置き換えを開始するバイト位置（1始まり）</td><td>必須</td><td>1</td></tr><tr><td>バイト数</td><td>置き換える長さ（バイト数）</td><td>必須</td><td>5</td></tr><tr><td>置換文字列</td><td>置き換え後の新しい文字列</td><td>必須</td><td>&#8220;Word&#8221;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">戻り値は置き換え後の文字列（テキスト型）です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>開始位置は「文字数ではなくバイト数」で数えます。日本語環境のExcelでは、半角=1バイト、全角=2バイト、半角カナ=1バイトとして処理されます。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc7">REPLACEB関数の使い方（基本例）</span></h2>



<h3 class="wp-block-heading"><span id="toc8">例1: 半角文字列の途中を置換</span></h3>



<p class="wp-block-paragraph">半角文字列だけのデータでは、文字数とバイト数が一致するためREPLACEと同じ感覚で使えます。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;Excel関数の使い方&quot;, 1, 5, &quot;Word&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <code>"Word関数の使い方"</code> です。先頭5バイト分（&#8221;Excel&#8221;）を <code>"Word"</code> に置き換えています。</p>



<h3 class="wp-block-heading"><span id="toc9">例2: 全角文字列の途中を置換</span></h3>



<p class="wp-block-paragraph">全角文字は1文字=2バイトです。「商品マスタ」の先頭2文字（&#8221;商品&#8221;）を置き換えるなら、バイト数=4を指定します。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;商品マスタ表&quot;, 1, 4, &quot;顧客&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <code>"顧客マスタ表"</code> です。バイト数=4で全角2文字分を指定している点がポイントです。</p>



<h3 class="wp-block-heading"><span id="toc10">例3: 半角カナを含む文字列の置換</span></h3>



<p class="wp-block-paragraph">半角カナ「ｵｵﾀ」は3バイト（1文字1バイト）です。「ｵｵﾀ ﾀﾛｳ様」の先頭3バイト分を置換するなら次のように書きます。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;ｵｵﾀ ﾀﾛｳ様&quot;, 1, 3, &quot;鈴木&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <code>"鈴木 ﾀﾛｳ様"</code> です。半角カナをREPLACE関数で扱うときは「文字数で3」と指定します。REPLACEB関数では「バイト数で3」と指定し、たまたま同じ数値になりますが考え方は別物です。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>半角カナはShift_JISでは1バイトとしてカウントされます。「半角だから1バイト」と覚えておくと迷いません。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc11">REPLACE関数とREPLACEB関数の違い</span></h2>



<h3 class="wp-block-heading"><span id="toc12">バイト数早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>文字種</th><th>例</th><th>バイト数</th></tr></thead><tbody><tr><td>半角英数字</td><td>A, 1, #</td><td>1バイト</td></tr><tr><td>半角カタカナ</td><td>ｱ, ｲ, ｳ</td><td>1バイト</td></tr><tr><td>半角スペース</td><td>（空白）</td><td>1バイト</td></tr><tr><td>全角ひらがな</td><td>あ, い, う</td><td>2バイト</td></tr><tr><td>全角カタカナ</td><td>ア, イ, ウ</td><td>2バイト</td></tr><tr><td>全角漢字</td><td>漢, 字</td><td>2バイト</td></tr><tr><td>全角英数字</td><td>Ａ, １</td><td>2バイト</td></tr><tr><td>全角スペース</td><td>&nbsp;</td><td>2バイト</td></tr></tbody></table></figure>



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



<p class="wp-block-paragraph">REPLACEとREPLACEBの動作を、同じ文字列で比較してみます。元データを <code>"ｱｲｳ漢字"</code> とし、4文字目（または対応するバイト位置）の「漢」を「国」に置き換える例です。</p>



<pre class="wp-block-code"><code>=REPLACE(&quot;ｱｲｳ漢字&quot;, 4, 1, &quot;国&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <code>"ｱｲｳ国字"</code> です。文字数で「4文字目から1文字」を置換しています。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;ｱｲｳ漢字&quot;, 4, 2, &quot;国&quot;)</code></pre>



<p class="wp-block-paragraph">結果は同じく <code>"ｱｲｳ国字"</code> です。バイト数では「4バイト目（半角カナ3バイト+1）から2バイト分」を指定します。</p>



<p class="wp-block-paragraph">判断基準は次のとおりです。</p>



<ul class="wp-block-list"><li>データがすべて半角、またはすべて全角 → <strong>REPLACE関数で十分</strong></li><li>半角と全角が混在 → <strong>REPLACEB関数が安全</strong></li><li>半角カナを含む → <strong>REPLACEB関数が確実</strong></li><li>外部システムからバイト数で指示が来る → <strong>REPLACEB関数一択</strong></li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>迷ったらLENB関数で文字列の総バイト数を確認してから設計するとミスが減ります。LENBはREPLACEBと同じバイト基準で動作します。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc14">FINDB・SEARCHBと組み合わせた実用例</span></h2>



<p class="wp-block-paragraph">REPLACEB関数の真価は、置換位置を動的に求めるFINDB関数・SEARCHB関数と組み合わせたときに発揮されます。</p>



<h3 class="wp-block-heading"><span id="toc15">例1: 区切り文字を全角に統一</span></h3>



<p class="wp-block-paragraph">A1セルに <code>"東京都-新宿区"</code> が入っている前提で、最初のハイフン <code>"-"</code> を全角の <code>"／"</code> に置き換えます。</p>



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



<p class="wp-block-paragraph">結果は <code>"東京都／新宿区"</code> です。FINDB関数が <code>"-"</code> のバイト位置を返し、REPLACEB関数がそこから1バイト分を置換します。</p>



<p class="wp-block-paragraph">FINDB関数の詳細は<a href="https://mashukabu.com/excel-findb-function/">ExcelのFINDB関数の使い方</a>を参照してください。</p>



<h3 class="wp-block-heading"><span id="toc16">例2: ワイルドカード検索からの置換</span></h3>



<p class="wp-block-paragraph">ワイルドカードを使いたい場合はSEARCHB関数を組み合わせます。例として、A1の「数字+ハイフン」を全角ハイフンに置換します。</p>



<pre class="wp-block-code"><code>=REPLACEB(A1, SEARCHB(&quot;?-&quot;, A1), 2, &quot;－&quot;)</code></pre>



<p class="wp-block-paragraph">A1が <code>"商品1-A"</code> なら、SEARCHB関数が <code>"1-"</code> の開始位置を返します。REPLACEB関数が2バイト分を <code>"－"</code> に置換します。</p>



<p class="wp-block-paragraph">SEARCHB関数の詳細は<a href="https://mashukabu.com/excel-searchb-function/">ExcelのSEARCHB関数の使い方</a>を参照してください。</p>



<h3 class="wp-block-heading"><span id="toc17">例3: 個人情報のマスキング</span></h3>



<p class="wp-block-paragraph">電話番号の中央部分を <code>"****"</code> でマスクするパターンです。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;080-1234-5678&quot;, 5, 4, &quot;****&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <code>"080-****-5678"</code> です。固定位置の置換なのでFINDB関数は不要ですが、可変位置なら組み合わせると便利です。</p>



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



<figure class="wp-block-table"><table><thead><tr><th>エラー・症状</th><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td><code>#VALUE!</code> エラー</td><td>開始位置が0以下、バイト数が負の値</td><td>引数を1以上の整数に修正</td></tr><tr><td>文字化け（不完全な文字）</td><td>全角文字のバイト境界以外を開始位置に指定</td><td>LENB関数で境界を確認し、開始位置を全角文字の先頭に合わせる</td></tr><tr><td>位置ずれ</td><td>半角カナ混在データでREPLACEを使った</td><td>REPLACEBに切り替え、バイト数で指定し直す</td></tr><tr><td>結果が空白だらけ</td><td>全角文字のバイト数指定が不完全</td><td>バイト数を全角文字の倍数（2,4,6&#8230;）にそろえる</td></tr><tr><td>末尾に余分な文字が付く</td><td>開始位置が文字列のバイト長を超えた</td><td>末尾追加の動作。意図しない場合はLENBで長さを確認</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>全角文字の途中（バイト境界以外）から置換を始めると、不完全な文字が半角スペースで埋められて表示されます。バイト位置を扱うときはLENB関数とFINDB関数で位置を確認するクセをつけると安全です。</p></blockquote>



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



<p class="wp-block-paragraph">REPLACEB関数は、文字列の指定位置から指定バイト数分の文字を別の文字列に置き換える関数です。半角と全角が混在するデータ、特に半角カナを含むデータで「位置ずれ」を防ぐために役立ちます。</p>



<p class="wp-block-paragraph">本記事のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>構文は <code>=REPLACEB(文字列, 開始位置, バイト数, 置換文字列)</code></li><li>半角=1バイト、全角=2バイト、半角カナ=1バイトで計算する</li><li>すべて半角や全角のデータならREPLACEで十分。混在ならREPLACEB</li><li>FINDB・SEARCHB関数と組み合わせると動的な位置指定置換ができる</li><li>全角文字のバイト境界以外を開始位置にすると文字化けするので注意</li></ul>



<p class="wp-block-paragraph">文字数指定のREPLACEと、バイト数指定のREPLACEBを使い分けてみてください。業務データのクレンジングや一括変換が格段に楽になります。FINDB・SEARCHB関数と組み合わせた応用パターンもぜひ取り入れてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-replaceb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExcelのFINDB関数の使い方｜半角・全角の文字位置をバイト数で検索</title>
		<link>https://mashukabu.com/excel-findb-function/</link>
					<comments>https://mashukabu.com/excel-findb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 05 May 2026 12:45:20 +0000</pubDate>
				<category><![CDATA[Excel関数]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[FINDB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6507</guid>

					<description><![CDATA[ExcelのFINDB関数の使い方を解説します。バイト数で文字位置を検索する仕組み、FIND関数との違い、半角・全角混在文字列の処理、LEFTB・MIDBとの組み合わせ例までわかりやすく紹介します。]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">ExcelのFINDB関数の使い方｜半角・全角の文字位置をバイト数で検索</h1>



<p class="wp-block-paragraph">ExcelのFINDB関数は、文字列の中から特定の文字を検索して「バイト位置」を返す関数です。半角を1バイト、全角を2バイトとしてカウントします。日本語のように半角と全角が混在する文字列を扱うときに便利ですよ。</p>



<p class="wp-block-paragraph">似た関数にFIND関数がありますが、こちらは「文字位置」を返します。一方のFINDBは「バイト位置」を返す点が大きな違いです。商品コードや固定長フォーマットのデータを扱うとき、FINDBが活躍する場面もありますよ。</p>



<p class="wp-block-paragraph">この記事ではFINDB関数の構文・基本的な使い方・FIND関数との違い・実務での活用例まで解説します。初〜中級者向けの内容ですよ。</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><li><a href="#toc1" tabindex="0">ExcelのFINDB関数とは？</a></li><li><a href="#toc2" tabindex="0">FINDB関数の構文と引数</a></li><li><a href="#toc3" tabindex="0">FINDB関数の基本的な使い方</a><ol><li><a href="#toc4" tabindex="0">パターン1: 半角のみの文字列</a></li><li><a href="#toc5" tabindex="0">パターン2: 全角のみの文字列</a></li><li><a href="#toc6" tabindex="0">パターン3: 半角と全角が混在する文字列</a></li></ol></li><li><a href="#toc7" tabindex="0">FIND関数とFINDB関数の違い</a></li><li><a href="#toc8" tabindex="0">SEARCHB関数との違い</a></li><li><a href="#toc9" tabindex="0">実務での活用例</a><ol><li><a href="#toc10" tabindex="0">例1: 全角文字の前の半角部分を取り出す</a></li><li><a href="#toc11" tabindex="0">例2: 区切り文字でデータを分割する</a></li><li><a href="#toc12" tabindex="0">例3: エラーを防ぐためのIFERROR組み合わせ</a></li></ol></li><li><a href="#toc13" tabindex="0">よくあるエラーと対処法</a></li><li><a href="#toc14" tabindex="0">DBCS設定による挙動の注意点</a></li><li><a href="#toc15" tabindex="0">関連記事</a></li><li><a href="#toc16" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">FINDB関数は、指定した文字列が検索対象の中で最初に現れる位置を、バイト数で返してくれる関数です。半角は1バイト、全角は2バイトとしてカウントされます。</p>



<p class="wp-block-paragraph">たとえば<code>abcあいう</code>という文字列で「あ」を検索してみましょう。FIND関数は「4文字目」と返し、FINDB関数も「4バイト目」と返します。ここまでは同じですよね。でも「い」を検索すると結果が変わります。FIND関数は「5文字目」、FINDB関数は「6バイト目」を返します。半角3文字（3バイト）+ 全角1文字（2バイト）の次なので、6バイト目になるわけです。</p>



<p class="wp-block-paragraph">このバイト換算が、商品コードや住所など「半角と全角が混在するデータ」を扱うときに役立ちます。</p>



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



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



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



<p class="wp-block-paragraph">引数は3つあり、最後の「開始位置」だけ省略できます。</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">戻り値は、検索文字列が最初に現れる位置をバイト数で返します。1始まり（最初のバイトは1）です。見つからない場合は<code>#VALUE!</code>エラーになりますよ。</p>



<p class="wp-block-paragraph">なお、FINDB関数は大文字と小文字を区別します。「A」と「a」は別の文字として扱われるので注意してください。大文字小文字を区別したくない場合は、後述するSEARCHB関数を使います。</p>



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



<p class="wp-block-paragraph">実際に3つのパターンでFINDB関数を使ってみましょう。</p>



<h3 class="wp-block-heading"><span id="toc4">パターン1: 半角のみの文字列</span></h3>



<p class="wp-block-paragraph">A1セルに<code>apple-orange</code>が入っているとします。</p>



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



<p class="wp-block-paragraph">結果は<code>6</code>になります。半角文字はすべて1バイトなので、6文字目=6バイト目という単純な結果です。この場合はFIND関数を使っても同じ結果になります。</p>



<h3 class="wp-block-heading"><span id="toc5">パターン2: 全角のみの文字列</span></h3>



<p class="wp-block-paragraph">A1セルに<code>東京都新宿区</code>が入っているとします。</p>



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



<p class="wp-block-paragraph">結果は<code>7</code>になります。全角文字は1文字あたり2バイトなので、「東京都」までで6バイト、「新」が7バイト目から始まる計算ですね。FIND関数なら「4」を返します。</p>



<h3 class="wp-block-heading"><span id="toc6">パターン3: 半角と全角が混在する文字列</span></h3>



<p class="wp-block-paragraph">A1セルに<code>ABC-赤色</code>が入っているとします。</p>



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



<p class="wp-block-paragraph">結果は<code>5</code>になります。半角の<code>ABC-</code>が4バイト、続く「赤」が5バイト目から始まるためです。FIND関数なら「5」を返しますが、これは偶然の一致で、半角の数が増えると差が出てきます。</p>



<h2 class="wp-block-heading"><span id="toc7">FIND関数とFINDB関数の違い</span></h2>



<p class="wp-block-paragraph">ここで、FIND関数とFINDB関数の違いを整理しましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FIND関数</th><th>FINDB関数</th></tr></thead><tbody><tr><td>カウント方式</td><td>文字数（半角・全角ともに1）</td><td>バイト数（半角=1, 全角=2）</td></tr><tr><td>戻り値の単位</td><td>文字位置</td><td>バイト位置</td></tr><tr><td>大文字小文字区別</td><td>あり</td><td>あり</td></tr><tr><td>ワイルドカード</td><td>非対応</td><td>非対応</td></tr><tr><td>主な用途</td><td>一般的な文字位置検索</td><td>固定長データ・バイト単位の処理</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">具体例で比較してみます。<code>abc東京</code>という文字列で「京」を検索した場合の結果を見てみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>結果</th><th>理由</th></tr></thead><tbody><tr><td><code>=FIND("京", "abc東京")</code></td><td>5</td><td>abcが3文字、東が4文字目、京が5文字目</td></tr><tr><td><code>=FINDB("京", "abc東京")</code></td><td>6</td><td>abcが3バイト、東が4〜5バイト、京が6バイト目から</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">このように、全角文字が含まれると結果が変わります。「文字位置」が必要な場合はFIND、「バイト位置」が必要な場合はFINDBという使い分けですね。</p>



<h2 class="wp-block-heading"><span id="toc8">SEARCHB関数との違い</span></h2>



<p class="wp-block-paragraph">FINDB関数と似た関数にSEARCHB関数があります。違いは「大文字小文字を区別するかどうか」と「ワイルドカードに対応するか」の2点です。</p>



<figure class="wp-block-table"><table><thead><tr><th>比較項目</th><th>FINDB関数</th><th>SEARCHB関数</th></tr></thead><tbody><tr><td>大文字小文字区別</td><td>あり</td><td>なし</td></tr><tr><td>ワイルドカード</td><td>非対応</td><td>対応（<code>*</code>, <code>?</code>）</td></tr><tr><td>用途</td><td>厳密一致の検索</td><td>あいまい検索</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">たとえば<code>Apple</code>という文字列で小文字の「a」を検索する場合を考えてみます。FINDB関数は対象に小文字「a」が存在しないため<code>#VALUE!</code>エラーを返します。一方のSEARCHB関数は大文字小文字を区別しないので<code>1</code>を返します。ワイルドカード検索が必要な場合や、大文字小文字を気にせず検索したい場合はSEARCHBを選んでくださいね。</p>



<h2 class="wp-block-heading"><span id="toc9">実務での活用例</span></h2>



<p class="wp-block-paragraph">FINDB関数は単体ではなく、LEFTB・MIDB・RIGHTBといったバイト系関数と組み合わせて使うことが多いです。よく使うパターンを3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc10">例1: 全角文字の前の半角部分を取り出す</span></h3>



<p class="wp-block-paragraph">A1セルに<code>ABC123東京支店</code>が入っているとします。全角文字「東」より前の半角部分を抽出するには、次の数式を使います。</p>



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



<p class="wp-block-paragraph">結果は<code>ABC123</code>になります。「東」のバイト位置（7）から1を引いた6バイト分を左から取り出す、という考え方です。</p>



<h3 class="wp-block-heading"><span id="toc11">例2: 区切り文字でデータを分割する</span></h3>



<p class="wp-block-paragraph">A1セルに<code>商品-ABC-001</code>が入っているとき、最初のハイフンより後ろの部分を取り出します。</p>



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



<p class="wp-block-paragraph">結果は<code>ABC-001</code>になります。ハイフンのバイト位置（5）の次（6）から、十分な長さ（100バイト）を切り出します。MIDBは指定したバイト数を超える分は切り捨てるので、長めの数値を指定して問題ありません。</p>



<h3 class="wp-block-heading"><span id="toc12">例3: エラーを防ぐためのIFERROR組み合わせ</span></h3>



<p class="wp-block-paragraph">検索文字が見つからないと<code>#VALUE!</code>エラーになります。そのため、IFERROR関数（エラー時に代替値を返す関数）でラップしておくと安心ですよ。</p>



<pre class="wp-block-code"><code>=IFERROR(FINDB(&quot;対象文字&quot;, A1), 0)</code></pre>



<p class="wp-block-paragraph">検索文字が見つからない場合に<code>0</code>を返すようにしています。条件分岐に組み込むときは、こうしてエラーを潰しておきましょう。</p>



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



<p class="wp-block-paragraph">FINDB関数で発生しやすいエラーは<code>#VALUE!</code>の1種類です。原因と対処法を整理しておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>原因</th><th>対処法</th></tr></thead><tbody><tr><td>検索文字列が対象内に見つからない</td><td>IFERRORでエラー回避するか、検索文字列のスペルを確認</td></tr><tr><td>開始位置が 0 以下</td><td>開始位置を1以上に修正</td></tr><tr><td>開始位置が対象のバイト数を超えている</td><td>LENB関数（文字列のバイト数を返す関数）で対象のバイト数を確認</td></tr><tr><td>開始位置が全角文字の2バイト目を指している</td><td>開始位置を1バイト前後にずらす</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">特に4つ目の「全角文字の2バイト目を指定している」は気づきにくいケースです。たとえば<code>東京</code>に対して<code>=FINDB("京", "東京", 2)</code>とした場合を考えてみましょう。開始位置の2バイト目は「東」の2バイト目を指しているため、エラーになります。開始位置は基本的に1か、半角文字の境界に揃えるのが安全ですよ。</p>



<h2 class="wp-block-heading"><span id="toc14">DBCS設定による挙動の注意点</span></h2>



<p class="wp-block-paragraph">FINDB関数のバイト換算が動作するのは、Excelの言語設定が特定の言語になっているときだけです。具体的には「日本語」「中国語（簡体字／繁体字）」「韓国語」の場合に限られます。これらはダブルバイト文字セット（DBCS）対応言語と呼ばれます。</p>



<p class="wp-block-paragraph">英語環境などDBCS非対応言語では、FINDB関数はFIND関数と同じ挙動になります。全文字を1バイトとしてカウントする状態です。海外拠点とExcelファイルをやり取りする場合は、念のため言語設定を確認しておくと安心ですね。</p>



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



<p class="wp-block-paragraph">FINDB関数とあわせて使うと便利な、バイト系の関連関数も解説しています。</p>



<ul class="wp-block-list"><li><a href="https://mashukabu.com/excel-searchb-function/">ExcelのSEARCHB関数の使い方</a>：大文字小文字を区別せず、ワイルドカードにも対応したバイト位置検索ができます。</li><li><a href="https://mashukabu.com/excel-leftb-function/">ExcelのLEFTB関数の使い方</a>：FINDBで求めた位置を使って、文字列の左側からバイト数で取り出せます。</li><li><a href="https://mashukabu.com/excel-rightb-function/">ExcelのRIGHTB関数の使い方</a>：文字列の右側からバイト数で取り出したいときに役立ちます。</li></ul>



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



<p class="wp-block-paragraph">ExcelのFINDB関数は、半角と全角が混在する文字列を「バイト数」で位置検索する関数です。FIND関数との違いを整理しておきましょう。</p>



<ul class="wp-block-list"><li><strong>FINDB関数</strong>: バイト位置を返す（半角=1, 全角=2）。固定長データや業務システム連携で活躍</li><li><strong>FIND関数</strong>: 文字位置を返す。一般的な文字検索ならこちら</li><li><strong>SEARCHB関数</strong>: 大文字小文字を区別せず、ワイルドカード対応のバイト検索</li><li><strong>LEFTB・MIDB・RIGHTB</strong>: バイト数で文字を取り出す関数。FINDBとセットで使うと強力</li></ul>



<p class="wp-block-paragraph">商品コード・型番・住所など「半角と全角が混在するデータ」を扱う場面で、FINDB関数を思い出してみてくださいね。エラーが出やすい場合はIFERROR関数でラップしておくと、業務でも安心して使えますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-findb-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-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートの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-5" checked><label class="toc-title" for="toc-checkbox-5">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートの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-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">スプレッドシートの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-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">スプレッドシートの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-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">スプレッドシートの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>
		<item>
		<title>スプレッドシートのFINDB関数の使い方｜バイト位置（大小区別）</title>
		<link>https://mashukabu.com/spreadsheet-findb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-findb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:11:03 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[FIND]]></category>
		<category><![CDATA[FINDB]]></category>
		<category><![CDATA[MIDB]]></category>
		<category><![CDATA[SEARCHB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6065</guid>

					<description><![CDATA[スプレッドシートのFINDB関数の使い方を実例付きで解説します。文字列の中で指定文字が何バイト目にあるかを返す関数で、全角2バイト・半角1バイトでカウントし大文字・小文字を区別します。基本構文、FIND/SEARCHBとの違い、MIDBとの組み合わせで固定長データを動的に切り出す実務パターン、よくあるエラー対処まで丁寧にまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで全角半角混在のデータを整形していると、「特定の記号が先頭から何バイト目にあるか知りたい」という場面、ありませんか。固定長データで区切り文字の位置を特定して、そこから前後にフィールドを分解したい、なんてケースもよくありますよね。</p>



<p class="wp-block-paragraph">FIND関数だと「文字数」でしか位置を返してくれないので、全角が混ざるとMIDBに渡すバイト位置としては使えないんですよね。そんなときにピッタリ使えるのが、スプレッドシートのFINDB関数です。全角2バイト・半角1バイトでカウントしながら、指定した文字が何バイト目に出現するかをサクッと返してくれますよ。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのFINDB関数の構文から、FIND関数やSEARCHB関数との違い、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">スプレッドシートのFINDB関数とは？</a><ol><li><a href="#toc2" tabindex="0">関数の基本構文と引数</a></li><li><a href="#toc3" tabindex="0">FIND関数との違い（文字数 vs バイト数）</a></li><li><a href="#toc4" tabindex="0">FINDBとSEARCHBの違い（大小区別の有無）</a></li></ol></li><li><a href="#toc5" tabindex="0">FINDB関数の基本的な使い方</a><ol><li><a href="#toc6" tabindex="0">全角・半角が混在する文字列での挙動</a></li><li><a href="#toc7" tabindex="0">引数「開始位置」の使い方</a></li></ol></li><li><a href="#toc8" tabindex="0">実務で使えるFINDB関数の活用パターン</a><ol><li><a href="#toc9" tabindex="0">区切り文字で動的にフィールドを切り出す</a></li><li><a href="#toc10" tabindex="0">固定長ファイルの可変長フィールドを処理する</a></li><li><a href="#toc11" tabindex="0">特定キーワードの出現位置でデータ仕分け</a></li></ol></li><li><a href="#toc12" tabindex="0">FINDBとMIDBを組み合わせたフィールド分解</a><ol><li><a href="#toc13" tabindex="0">区切り文字ベースのフィールド分解テンプレート</a></li><li><a href="#toc14" tabindex="0">2段階検索で安全に位置を取る</a></li></ol></li><li><a href="#toc15" tabindex="0">FIND系・SEARCH系関数との使い分け</a><ol><li><a href="#toc16" tabindex="0">FIND・FINDB・SEARCH・SEARCHBの比較</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">&#8220;#VALUE!&#8221; エラー（開始位置が不正）</a></li><li><a href="#toc21" tabindex="0">期待した位置と違う値が返る</a></li></ol></li><li><a href="#toc22" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

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



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



<p class="wp-block-paragraph">全角文字は2バイト、半角文字は1バイトとしてカウントします。大文字と小文字を区別するのがポイントで、&#8221;A&#8221; と &#8220;a&#8221; は別物として扱われますよ。</p>



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



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



<pre class="wp-block-code"><code>=FINDB(検索文字列, 対象文字列, [開始位置])</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">FIND関数との違い（文字数 vs バイト数）</span></h3>



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



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



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



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td><code>=FIND("-", "商品A-100")</code></td><td>4</td><td>先頭から4文字目（商・品・A・-）</td></tr><tr><td><code>=FINDB("-", "商品A-100")</code></td><td>6</td><td>先頭から6バイト目（商2+品2+A1+-=6バイト目スタート）</td></tr></tbody></table></figure>



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



<h3 class="wp-block-heading"><span id="toc4">FINDBとSEARCHBの違い（大小区別の有無）</span></h3>



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



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



<p class="wp-block-paragraph">商品コードのように「A と a は別物として扱いたい」「ワイルドカードじゃなくきっちり文字列一致で探したい」場合はFINDB、あいまい検索でいい場合はSEARCHBを選ぶ、という整理ですよ。</p>



<h2 class="wp-block-heading"><span id="toc5">FINDB関数の基本的な使い方</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>=FINDB("う", "あいうえお")</code></td><td>5</td><td>「う」は先頭から5バイト目（あ2+い2+う=5バイト目スタート）</td></tr><tr><td><code>=FINDB("C", "ABCDE")</code></td><td>3</td><td>半角3文字目=3バイト目</td></tr><tr><td><code>=FINDB("関", "Excel関数")</code></td><td>6</td><td>半角5バイト+「関」で6バイト目スタート</td></tr><tr><td><code>=FINDB("a", "ABCabc")</code></td><td>4</td><td>小文字「a」は4バイト目（大文字とは区別）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">4行目に注目してください。FINDBは大文字小文字を区別するので、&#8221;A&#8221; で検索すると1、&#8221;a&#8221; で検索すると4が返ってきます。ここが曖昧検索のSEARCHBとは違うところですよ。</p>



<h3 class="wp-block-heading"><span id="toc7">引数「開始位置」の使い方</span></h3>



<p class="wp-block-paragraph">開始位置を指定すると、その位置から右側だけを検索対象にできます。同じ文字が複数回出てくる文字列で「2番目の位置」を調べたいときに便利ですよ。</p>



<pre class="wp-block-code"><code>=FINDB(&quot;-&quot;, &quot;A-100-XYZ&quot;)            → 2  （1番目のハイフン）
=FINDB(&quot;-&quot;, &quot;A-100-XYZ&quot;, 3)         → 6  （3バイト目以降で探した1番目）</code></pre>



<p class="wp-block-paragraph">1番目のハイフン位置をFINDBで求めて、その次のバイトから2番目を探す、という入れ子にすると、動的に区切り位置を追えます。</p>



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



<p class="wp-block-paragraph">A2にデータを入れておけば、「2番目のハイフンは何バイト目か」が求められますよ。</p>



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



<p class="wp-block-paragraph">FINDB関数が本領を発揮するのは、固定長ファイルの動的解析や区切り文字ベースのフィールド分解です。よく出てくる3パターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc9">区切り文字で動的にフィールドを切り出す</span></h3>



<p class="wp-block-paragraph">全角半角が混ざった「氏名＠メールアドレス」形式のデータから、＠の前後を切り分けたいときに使えます。</p>



<pre class="wp-block-code"><code>氏名部分:         =LEFTB(A2, FINDB(&quot;@&quot;, A2) - 1)
メール部分:       =MIDB(A2, FINDB(&quot;@&quot;, A2) + 1, LENB(A2))</code></pre>



<p class="wp-block-paragraph">FINDBで＠の位置をバイトで特定して、LEFTBで前半、MIDBで後半を切り出す流れです。全角の氏名が混ざっていても、バイト基準で揃うので崩れませんよ。</p>



<h3 class="wp-block-heading"><span id="toc10">固定長ファイルの可変長フィールドを処理する</span></h3>



<p class="wp-block-paragraph">古い基幹システムの出力で、「固定長だけど末尾にタブや特殊記号で区切られた可変長フィールドがある」ケースもあります。FINDBで区切り記号のバイト位置を調べて、そこまでをLEFTBで取り出すとラクですよ。</p>



<pre class="wp-block-code"><code>=LEFTB(A2, FINDB(CHAR(9), A2) - 1)</code></pre>



<p class="wp-block-paragraph">CHAR(9) はタブ文字です。タブ区切りまでのバイト数を取り出して、先頭からその位置までを抽出しています。区切り位置が行ごとに違っても、式は1本で対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc11">特定キーワードの出現位置でデータ仕分け</span></h3>



<p class="wp-block-paragraph">商品説明文の中で特定のキーワード（例: 「限定」「特価」など）が出現するかどうか、出現位置が何バイト目か、で仕分けをしたい場合にも使えます。</p>



<pre class="wp-block-code"><code>=IF(IFERROR(FINDB(&quot;限定&quot;, A2), 0) &gt; 0, &quot;限定商品&quot;, &quot;通常商品&quot;)</code></pre>



<p class="wp-block-paragraph">IFERROR でラップして、見つからない場合の <code>#VALUE!</code> を 0 に置き換えています。これで「限定」を含む行だけフラグを立てる処理が、1列の数式で完結しますよ。</p>



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



<p class="wp-block-paragraph">区切り文字で動的に可変長フィールドを切り出すときは、FINDBとMIDBの組み合わせが定番です。コピペで使えるテンプレートをまとめておきますね。</p>



<h3 class="wp-block-heading"><span id="toc13">区切り文字ベースのフィールド分解テンプレート</span></h3>



<p class="wp-block-paragraph">A列に「コード-名前-備考」形式のデータが入っている想定です。ハイフンでフィールドを3つに分けましょう。</p>



<pre class="wp-block-code"><code>1番目のハイフン位置: =FINDB(&quot;-&quot;, A2)
2番目のハイフン位置: =FINDB(&quot;-&quot;, A2, FINDB(&quot;-&quot;, A2) + 1)
コード:              =LEFTB(A2, FINDB(&quot;-&quot;, A2) - 1)
名前:                =MIDB(A2, FINDB(&quot;-&quot;, A2) + 1, FINDB(&quot;-&quot;, A2, FINDB(&quot;-&quot;, A2)+1) - FINDB(&quot;-&quot;, A2) - 1)
備考:                =MIDB(A2, FINDB(&quot;-&quot;, A2, FINDB(&quot;-&quot;, A2)+1) + 1, LENB(A2))</code></pre>



<p class="wp-block-paragraph">長く見えますが、考え方はシンプルです。「区切り位置をFINDBで求めて、その前後をMIDBで切る」というパターンの積み重ねなので、1行ずつ追うと読み解けますよ。</p>



<h3 class="wp-block-heading"><span id="toc14">2段階検索で安全に位置を取る</span></h3>



<p class="wp-block-paragraph">区切り文字が必ず含まれるとは限らないデータでは、IFERRORで守りを入れておきましょう。</p>



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



<p class="wp-block-paragraph">ハイフンが見つからない場合は「文字列の末尾+1バイト目」を返すようにしておくと、MIDBに渡しても空文字が返るだけで、エラー連鎖を防げますよ。</p>



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



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



<h3 class="wp-block-heading"><span id="toc16">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">ExcelのFINDB関数との挙動比較をしたいときは、<a href="https://mashukabu.com/excel-findb-function/">ExcelのFINDB関数の使い方</a>も参考になりますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">バイト系・大小区別の判断ポイント</span></h3>



<p class="wp-block-paragraph">FINDBを選ぶ基準は、次の3点で判断できます。</p>



<ul class="wp-block-list"><li>出力先やデータ形式がバイト単位で扱われている（固定長ファイル、基幹システム連携）</li><li>大文字と小文字を厳密に区別したい（商品コード、パスワード文字列など）</li><li>ワイルドカードは不要で、完全一致の検索で十分</li></ul>



<p class="wp-block-paragraph">逆に、社内の集計シートで「大文字小文字は気にしない、位置さえわかればOK」という場面は、SEARCHやSEARCHBのほうが扱いやすいですよ。</p>



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



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



<h3 class="wp-block-heading"><span id="toc19">&#8220;#VALUE!&#8221; エラー（検索文字列が見つからない）</span></h3>



<p class="wp-block-paragraph">一番よく遭遇するのが、検索文字列が対象文字列に含まれていないパターンです。たとえば <code>=FINDB("-", "ABCDE")</code> のようなケースですね。</p>



<p class="wp-block-paragraph">IFERRORでラップして、見つからない場合の代替値を決めておくのがおすすめです。</p>



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



<p class="wp-block-paragraph">これで、ハイフンが見つからない行は 0 として扱われ、後続の計算で判定しやすくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc20">&#8220;#VALUE!&#8221; エラー（開始位置が不正）</span></h3>



<p class="wp-block-paragraph">開始位置に 0 以下や、文字列の長さを超える値を指定すると同じく <code>#VALUE!</code> が返ります。FINDB のネスト（1つ目の結果に +1 して2つ目を探す、など）で1つ目が見つからないと、2つ目の開始位置が <code>#VALUE!</code> になり連鎖するパターンですね。</p>



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



<p class="wp-block-paragraph">入れ子のFINDBもIFERRORで守っておくと、見つからない行でもエラーが表示されなくなりますよ。</p>



<h3 class="wp-block-heading"><span id="toc21">期待した位置と違う値が返る</span></h3>



<p class="wp-block-paragraph">大小区別で &#8220;A&#8221; を探したつもりが &#8220;a&#8221; ばかりのデータだった、という場合は結果が <code>#VALUE!</code> になります。逆に大小区別が不要なら、SEARCHBを使えば解決しますよ。</p>



<pre class="wp-block-code"><code>=SEARCHB(&quot;a&quot;, A2)   → 大文字でも小文字でもヒットする</code></pre>



<p class="wp-block-paragraph">また、FINDとFINDBを取り違えて「バイト位置が欲しいのに文字位置が返ってきた」というケースもよくあります。MIDBやLEFTBに渡す前提なら、必ずFINDBで統一してくださいね。</p>



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



<p class="wp-block-paragraph">スプレッドシートのFINDB関数は、文字列の中で指定文字が何バイト目にあるかを返す、固定長データ解析や区切り文字ベースのフィールド分解にピッタリの関数です。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=FINDB(検索文字列, 対象文字列, [開始位置])</code> の3引数。開始位置省略時は先頭から</li><li>全角=2バイト、半角=1バイトとしてカウントする</li><li>大文字と小文字を区別する（&#8221;A&#8221; と &#8220;a&#8221; は別物）</li><li>FINDは文字数、FINDBはバイト数。MIDBやLEFTBに渡すならFINDB一択</li><li>SEARCHBとの違いは、大小区別の有無とワイルドカード可否</li><li>見つからないと #VALUE! になるので、IFERROR でラップして守る</li></ul>



<p class="wp-block-paragraph">まずは手元の区切り文字付きデータに、<code>=FINDB("-", A2)</code> のような形で当ててみてください。MIDBと組み合わせてフィールド分解すれば、固定長データ整形の作業がぐっと短縮できますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-findb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>スプレッドシートのREPLACEB関数の使い方｜バイト位置指定置換</title>
		<link>https://mashukabu.com/spreadsheet-replaceb-function/</link>
					<comments>https://mashukabu.com/spreadsheet-replaceb-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Sun, 19 Apr 2026 14:10:53 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[FINDB]]></category>
		<category><![CDATA[REPLACEB]]></category>
		<category><![CDATA[SEARCHB]]></category>
		<category><![CDATA[バイト]]></category>
		<category><![CDATA[文字列操作]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6063</guid>

					<description><![CDATA[スプレッドシートのREPLACEB関数の使い方を実例付きで解説します。文字列の指定バイト位置から指定バイト数分を別の文字列に置き換える関数で、全角2バイト・半角1バイトでカウントします。基本構文、REPLACE関数との違い、SEARCHBやFINDBと組み合わせた動的な置換パターン、全角文字の途中で切れたときの挙動、よくあるエラー対処まで丁寧にまとめました。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">スプレッドシートで全角半角が混ざったデータを扱っていて、「特定のバイト位置から数バイトだけをまとめて別の文字列に差し替えたい」という場面、ありませんか。固定長ファイルや基幹システム連携のデータでは、「何バイト目から何バイト分」という単位でフィールドが決まっていることが多いんですよね。</p>



<p class="wp-block-paragraph">REPLACE関数でも置換はできますが、こちらは文字数ベースなので、全角半角混在のデータでは位置がずれてしまうことがあります。そんなときに使えるのが、スプレッドシートのREPLACEB関数ですよ。全角2バイト・半角1バイトでカウントしながら、指定した位置から指定バイト数分をバッサリ置き換えてくれます。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのREPLACEB関数の構文から、REPLACE関数との違い、SEARCHBやFINDBと組み合わせた動的な置換パターン、全角文字の途中で切れたときの挙動、よくあるエラー対処まで紹介します。コピペで使えるテンプレートも置いておきますね。</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">スプレッドシートのREPLACEB関数とは？</a><ol><li><a href="#toc2" tabindex="0">関数の基本構文と引数</a></li><li><a href="#toc3" tabindex="0">REPLACE関数との違い（文字数 vs バイト数）</a></li><li><a href="#toc4" tabindex="0">REPLACEBとSUBSTITUTEの違い</a></li></ol></li><li><a href="#toc5" tabindex="0">REPLACEB関数の基本的な使い方</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">実務で使えるREPLACEB関数の活用パターン</a><ol><li><a href="#toc10" tabindex="0">固定長データの特定フィールドを書き換える</a></li><li><a href="#toc11" tabindex="0">SEARCHBで位置を取って動的に置換する</a></li><li><a href="#toc12" tabindex="0">マスク処理（個人情報の一部伏字化）</a></li></ol></li><li><a href="#toc13" tabindex="0">SEARCHB・FINDBと組み合わせた動的置換テンプレート</a><ol><li><a href="#toc14" tabindex="0">区切り文字で分けた最初のフィールドを置換</a></li><li><a href="#toc15" tabindex="0">2番目のフィールドだけを置換</a></li><li><a href="#toc16" tabindex="0">末尾のフィールドだけを置換</a></li><li><a href="#toc17" tabindex="0">厳密一致で置換したいときはFINDB</a></li></ol></li><li><a href="#toc18" tabindex="0">REPLACE系・SUBSTITUTE系関数との使い分け</a><ol><li><a href="#toc19" tabindex="0">REPLACE・REPLACEB・SUBSTITUTEの比較</a></li><li><a href="#toc20" tabindex="0">REPLACEBを選ぶべき場面</a></li></ol></li><li><a href="#toc21" tabindex="0">よくあるエラーと対処法</a><ol><li><a href="#toc22" tabindex="0">&#8220;#VALUE!&#8221; エラー（開始位置が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">まとめ</a></li></ol>
    </div>
  </div>

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



<p class="wp-block-paragraph">スプレッドシートのREPLACEB関数は、文字列の指定したバイト位置から指定バイト数分を、別の文字列に置き換える関数です。読み方は「リプレース・ビー」で、REPLACE（置換）と Byte（バイト）を組み合わせた名前ですよ。</p>



<p class="wp-block-paragraph">全角文字は2バイト、半角文字は1バイトとしてカウントします。特徴は、置換する範囲をバイト数で指定することと、置換後の文字列の長さは元の範囲と違ってもOKなところです。「3バイト分を消して空文字にする」「2バイト分を5バイトに膨らませる」みたいな操作も自由自在ですよ。</p>



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



<p class="wp-block-paragraph">基本構文はこちらです。引数は4つで、全て省略不可です。</p>



<pre class="wp-block-code"><code>=REPLACEB(対象文字列, 開始位置, バイト数, 置換文字列)</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>置換する範囲のバイト数</td><td>0以上の整数</td></tr><tr><td>置換文字列</td><td>置き換えたい新しい文字列</td><td>空文字 <code>""</code> もOK</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">バイト数に 0 を指定すると、その位置に「挿入」する動きになります。削除したい場合は置換文字列を <code>""</code> にすればOKです。開始位置や バイト数が小数の場合は整数部分に切り捨てられますよ。</p>



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



<p class="wp-block-paragraph">REPLACE関数とREPLACEB関数の違いは、位置とサイズの単位です。ここを押さえておくと、使い分けで迷いません。</p>



<ul class="wp-block-list"><li><strong>REPLACE</strong>: 「何文字目から何文字分」を置換する。全角半角を区別しない</li><li><strong>REPLACEB</strong>: 「何バイト目から何バイト分」を置換する。全角=2バイト、半角=1バイトで計算</li></ul>



<p class="wp-block-paragraph">たとえば「商品A-100」という文字列で、先頭から3文字目から2文字分を置き換えた場合と、3バイト目から2バイト分を置き換えた場合で結果がこう変わります。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>解説</th></tr></thead><tbody><tr><td><code>=REPLACE("商品A-100", 3, 2, "XX")</code></td><td>商品XX100</td><td>3文字目「A」と4文字目「-」を&#8221;XX&#8221;に置換</td></tr><tr><td><code>=REPLACEB("商品A-100", 3, 2, "XX")</code></td><td>商XX-100</td><td>3バイト目「品」（2バイト）を&#8221;XX&#8221;に置換</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">単位が違うだけで置換される範囲も大きく変わりますよね。バイト単位のデータ（固定長CSV・基幹システム連携など）を扱うときはREPLACEB、文字数ベースで考えたいときはREPLACEを選びましょう。</p>



<h3 class="wp-block-heading"><span id="toc4">REPLACEBとSUBSTITUTEの違い</span></h3>



<p class="wp-block-paragraph">似たような置換系関数にSUBSTITUTE関数があります。こちらも文字列の置換ですが、役割は真逆と言ってもいいくらい違います。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>指定方法</th><th>典型用途</th></tr></thead><tbody><tr><td>REPLACEB</td><td>バイト位置＋バイト数で範囲指定</td><td>固定長データの特定フィールドを書き換え</td></tr><tr><td>SUBSTITUTE</td><td>「この文字列を」「この文字列に」と内容指定</td><td>全角スペースを半角に一括変換、表記ゆれ統一</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「位置がわかっているならREPLACEB、内容がわかっているならSUBSTITUTE」と覚えておくと迷いません。位置も内容も動的に決まる場合は、SEARCHBで位置を取ってからREPLACEBに渡す組み合わせが効きますよ。</p>



<h2 class="wp-block-heading"><span id="toc5">REPLACEB関数の基本的な使い方</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>=REPLACEB("あいうえお", 3, 2, "ン")</code></td><td>あンえお</td><td>3バイト目から2バイト（「い」）を「ン」に置換</td></tr><tr><td><code>=REPLACEB("ABCDE", 2, 3, "xyz")</code></td><td>AxyzE</td><td>2バイト目から3バイト分（BCD）を&#8221;xyz&#8221;に置換</td></tr><tr><td><code>=REPLACEB("Excel関数", 6, 2, "表")</code></td><td>Excel表数</td><td>6バイト目から2バイト分（「関」）を「表」に置換</td></tr><tr><td><code>=REPLACEB("ABC", 2, 1, "XX")</code></td><td>AXXC</td><td>2バイト目から1バイト分（B）を&#8221;XX&#8221;に置換（長さが変わってもOK）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">4行目がポイントですよ。置換前が1バイトで置換後が2バイトでも、問題なく動きます。置換後の文字列の長さは自由なので、「詰める」「膨らませる」操作もこの関数1本でできるんですね。</p>



<h3 class="wp-block-heading"><span id="toc7">文字列の挿入と削除</span></h3>



<p class="wp-block-paragraph">置換文字列を空文字 <code>""</code> にすると、指定範囲を削除できます。バイト数に 0 を指定すると、その位置に置換文字列を挿入する動きになりますよ。</p>



<pre class="wp-block-code"><code>削除:  =REPLACEB(&quot;商品A-100&quot;, 5, 2, &quot;&quot;)    → 商品-100
                                              （5バイト目から2バイト「A-」削除 → あれ？「A-」は3バイト目からなので要注意）</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><code>=REPLACEB("ABCDE", 3, 2, "")</code></td><td>ABE</td><td>3バイト目から2バイト（CD）を削除</td></tr><tr><td><code>=REPLACEB("ABCDE", 3, 0, "XYZ")</code></td><td>ABXYZCDE</td><td>3バイト目に&#8221;XYZ&#8221;を挿入（何も削除しない）</td></tr><tr><td><code>=REPLACEB("ABCDE", 6, 0, "!")</code></td><td>ABCDE!</td><td>末尾の次のバイト位置に追記</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">末尾に追記するときは、開始位置を「対象文字列のバイト長+1」にしてバイト数を 0 にするのが定番ですよ。<code>LENB(A2)+1</code> と組み合わせると動的に追記できます。</p>



<h3 class="wp-block-heading"><span id="toc8">全角文字の途中で切れた場合の挙動</span></h3>



<p class="wp-block-paragraph">REPLACEBで一番ハマるポイントがここです。全角文字は2バイト分を占有していますが、REPLACEBは「1バイト目だけ置換する」という指定もできてしまいます。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;あいうえお&quot;, 2, 1, &quot;X&quot;)    → ?Xいうえお（環境によっては文字化け）
=REPLACEB(&quot;あいうえお&quot;, 1, 1, &quot;X&quot;)    → X?いうえお（同上）</code></pre>



<p class="wp-block-paragraph">全角文字の片バイトだけを置換すると、残された半分が不正な文字コードになってしまいます。スプレッドシート上では <code>?</code> や空白、あるいは文字化けした記号として表示されることが多いですよ。</p>



<p class="wp-block-paragraph">全角文字を扱うときは、開始位置とバイト数の両方を偶数側に合わせて、境界を跨がないように設計するのが安全です。LENB と文字の構成が把握できるデータなら問題ありませんが、可変の入力を相手にする場合はSEARCHBで位置を取ってから渡すのがおすすめですよ。</p>



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



<p class="wp-block-paragraph">REPLACEB関数が活躍するのは、固定長フォーマットや、バイト単位でフィールドが決まっているデータの処理です。よく出てくる3パターンを紹介しますね。</p>



<h3 class="wp-block-heading"><span id="toc10">固定長データの特定フィールドを書き換える</span></h3>



<p class="wp-block-paragraph">基幹システムから出力される固定長データで、「先頭10バイトがコード、次の20バイトが名称、次の5バイトが区分」みたいな構造のとき、特定フィールドだけを書き換えたい場面があります。</p>



<pre class="wp-block-code"><code>区分を書き換え:  =REPLACEB(A2, 31, 5, &quot;B0001&quot;)</code></pre>



<p class="wp-block-paragraph">31バイト目から5バイト分（区分フィールド）を「B0001」に差し替えます。位置とサイズがデータ仕様で確定しているので、REPLACEBはこの用途にぴったりですよ。</p>



<h3 class="wp-block-heading"><span id="toc11">SEARCHBで位置を取って動的に置換する</span></h3>



<p class="wp-block-paragraph">区切り記号の位置が行ごとに変わるデータでは、SEARCHBで区切り位置を動的に取得して、REPLACEBに渡します。「コード-名前」形式のデータで、コード部分だけを別の値に書き換えるイメージですね。</p>



<pre class="wp-block-code"><code>=REPLACEB(A2, 1, SEARCHB(&quot;-&quot;, A2) - 1, &quot;NEW&quot;)</code></pre>



<p class="wp-block-paragraph">SEARCHBで最初のハイフン位置を取り、その1バイト前までを「NEW」に置換します。コード部分の長さが行ごとに違っても、同じ式でまとめて処理できますよ。</p>



<p class="wp-block-paragraph">関連: <a href="https://mashukabu.com/spreadsheet-searchb-function/">スプレッドシートのSEARCHB関数の使い方</a> でSEARCHBの詳しい挙動を押さえておくと、このパターンの理解がぐっと早くなります。</p>



<h3 class="wp-block-heading"><span id="toc12">マスク処理（個人情報の一部伏字化）</span></h3>



<p class="wp-block-paragraph">個人情報の一部を伏字にして共有したいとき、バイト位置指定のマスク処理に使えます。たとえば電話番号の中央4バイトを <code>****</code> に置き換える、というパターンですね。</p>



<pre class="wp-block-code"><code>=REPLACEB(&quot;090-1234-5678&quot;, 5, 4, &quot;****&quot;)</code></pre>



<p class="wp-block-paragraph">結果は <code>090-****-5678</code> になります。ハイフン位置が固定のデータなら、位置とバイト数を決め打ちで使うのが一番シンプルですよ。</p>



<p class="wp-block-paragraph">入力が揺れるデータ（ハイフンありなし混在など）では、SEARCHBで位置を取ってからREPLACEBに渡す安全パターンに切り替えましょう。</p>



<h2 class="wp-block-heading"><span id="toc13">SEARCHB・FINDBと組み合わせた動的置換テンプレート</span></h2>



<p class="wp-block-paragraph">区切り文字ベースで可変長フィールドを書き換えるときは、SEARCHBやFINDBで位置を取得してからREPLACEBに渡す組み合わせが便利です。コピペで使えるテンプレートをまとめておきますね。</p>



<h3 class="wp-block-heading"><span id="toc14">区切り文字で分けた最初のフィールドを置換</span></h3>



<p class="wp-block-paragraph">A列に「コード-名前」形式のデータが入っている想定です。コード部分を丸ごと別の値に書き換えましょう。</p>



<pre class="wp-block-code"><code>=REPLACEB(A2, 1, SEARCHB(&quot;-&quot;, A2) - 1, &quot;NEWCODE&quot;)</code></pre>



<p class="wp-block-paragraph">SEARCHBで1番目のハイフン位置を取り、先頭からその1バイト前までを「NEWCODE」に置換します。コード部分の長さが行ごとに違っても対応できますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">2番目のフィールドだけを置換</span></h3>



<p class="wp-block-paragraph">「コード-名前-備考」形式で、真ん中の名前フィールドだけを置換するパターンです。1番目と2番目のハイフン位置を両方取ります。</p>



<pre class="wp-block-code"><code>=LET(
  p1, SEARCHB(&quot;-&quot;, A2),
  p2, SEARCHB(&quot;-&quot;, A2, p1 + 1),
  REPLACEB(A2, p1 + 1, p2 - p1 - 1, &quot;NEWNAME&quot;)
)</code></pre>



<p class="wp-block-paragraph">LET関数で中間変数に名前を付けると、式がぐっと読みやすくなります。LETが使えない環境では、ネストして書くことになりますが、動作は同じですよ。</p>



<h3 class="wp-block-heading"><span id="toc16">末尾のフィールドだけを置換</span></h3>



<p class="wp-block-paragraph">末尾のフィールドを置換するときは、最後の区切り位置から末尾までを対象にします。末尾位置は <code>LENB(A2)</code> で取れるので、バイト数は <code>LENB(A2) - p2</code> で求められますね。</p>



<pre class="wp-block-code"><code>=LET(
  p1, SEARCHB(&quot;-&quot;, A2),
  p2, SEARCHB(&quot;-&quot;, A2, p1 + 1),
  REPLACEB(A2, p2 + 1, LENB(A2) - p2, &quot;NEW_REMARK&quot;)
)</code></pre>



<p class="wp-block-paragraph">この3パターンを覚えておけば、区切り文字付きデータの任意フィールドを柔軟に書き換えられますよ。</p>



<h3 class="wp-block-heading"><span id="toc17">厳密一致で置換したいときはFINDB</span></h3>



<p class="wp-block-paragraph">区切り文字の大文字小文字を厳密に区別したい場合は、SEARCHBをFINDBに置き換えるだけでOKです。商品コード内の英字で「A」と「a」を別物として扱いたい場面ですね。</p>



<pre class="wp-block-code"><code>=REPLACEB(A2, 1, FINDB(&quot;-&quot;, A2) - 1, &quot;NEWCODE&quot;)</code></pre>



<p class="wp-block-paragraph">曖昧検索ならSEARCHB、厳密検索ならFINDB、というシンプルな使い分けで済みますよ。</p>



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



<p class="wp-block-paragraph">スプレッドシートには置換系の関数がいくつかあります。ここで全体像を整理しておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc19">REPLACE・REPLACEB・SUBSTITUTEの比較</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>指定方法</th><th>単位</th><th>典型用途</th></tr></thead><tbody><tr><td>REPLACE</td><td>位置＋サイズ</td><td>文字数</td><td>文字数ベースでの範囲置換</td></tr><tr><td>REPLACEB</td><td>位置＋サイズ</td><td>バイト数</td><td>固定長フォーマットのフィールド書き換え</td></tr><tr><td>SUBSTITUTE</td><td>検索文字列→置換文字列</td><td>—</td><td>内容ベースの一括置換・表記ゆれ統一</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「位置がわかっているか、内容がわかっているか」で第1段階の選択をして、位置指定ならバイト単位か文字単位かで第2段階を決める、という流れが一番迷いませんよ。</p>



<h3 class="wp-block-heading"><span id="toc20">REPLACEBを選ぶべき場面</span></h3>



<p class="wp-block-paragraph">REPLACEBを選ぶ基準は、次の3点で判断できます。</p>



<ul class="wp-block-list"><li>データ仕様がバイト単位で定義されている（固定長ファイル・基幹システム連携）</li><li>全角半角混在のデータで、バイト位置を基準に処理する必要がある</li><li>SEARCHBやFINDBで取得した位置情報をそのまま渡したい</li></ul>



<p class="wp-block-paragraph">逆に、「◯◯という文字列を△△に置き換える」という内容ベースの処理ではSUBSTITUTEのほうが直感的です。REPLACEBは「何バイト目から何バイト分」という機械的な指定が決まっている場面に向いていますよ。</p>



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



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



<h3 class="wp-block-heading"><span id="toc22">&#8220;#VALUE!&#8221; エラー（開始位置が0以下）</span></h3>



<p class="wp-block-paragraph">開始位置に 0 や負の数、または数値に変換できない値を指定すると <code>#VALUE!</code> が返ります。SEARCHBのネストで1つ目が見つからずに <code>#VALUE!</code> になり、その結果を開始位置に渡すパターンで連鎖することが多いですね。</p>



<pre class="wp-block-code"><code>=IFERROR(REPLACEB(A2, IFERROR(SEARCHB(&quot;-&quot;, A2), 1), 3, &quot;XXX&quot;), A2)</code></pre>



<p class="wp-block-paragraph">見つからない行ではSEARCHB側を 1 にフォールバックし、それでもエラーが出たら元の文字列をそのまま返す、という二段構えで守れますよ。</p>



<h3 class="wp-block-heading"><span id="toc23">全角文字の途中で切れて文字化けする</span></h3>



<p class="wp-block-paragraph">先ほど触れた通り、全角文字の片バイトだけを置換すると残りのバイトが不正な文字コードになります。<code>?</code> や空白、または文字化け記号として表示されることが多いです。</p>



<p class="wp-block-paragraph">対策としては、開始位置とバイト数の組み合わせが全角文字の境界を跨がないように設計することですね。データが全角だけ、あるいは半角だけで構成されている場合は心配不要ですが、混在データを扱うときは LENB と LEN の差からどこに全角があるかを事前に把握しておくと安全ですよ。</p>



<h3 class="wp-block-heading"><span id="toc24">置換後の文字列が想定より長く/短くなる</span></h3>



<p class="wp-block-paragraph">REPLACEBは置換後の長さが元の範囲と違ってもエラーにはなりません。ただ、固定長データを扱っている場合は「フィールドサイズを維持したい」という要件があるはずですよね。</p>



<pre class="wp-block-code"><code>=REPLACEB(A2, 31, 5, LEFT(&quot;B1&quot; &amp; REPT(&quot; &quot;, 5), 5))</code></pre>



<p class="wp-block-paragraph">置換文字列側で LEFT や REPT を使って、指定バイト数にきっちり合わせるのが定番です。5バイト分の右パディングが必要なら &#8220;B1&#8221; に半角スペースを足して LEFT で先頭5文字を取る、といった具合ですよ。</p>



<p class="wp-block-paragraph">全角半角混在の固定長なら LEFTB でバイト単位のパディングに切り替えてくださいね。</p>



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



<p class="wp-block-paragraph">スプレッドシートのREPLACEB関数は、文字列の指定バイト位置から指定バイト数分を別の文字列に置き換える、バイト単位の範囲置換に便利な関数です。最後に要点を整理しておきましょう。</p>



<ul class="wp-block-list"><li>構文は <code>=REPLACEB(対象文字列, 開始位置, バイト数, 置換文字列)</code> の4引数。全て省略不可</li><li>全角=2バイト、半角=1バイトとしてカウントする</li><li>バイト数 0 で挿入、置換文字列 <code>""</code> で削除</li><li>置換後の文字列の長さは元の範囲と違ってもOK</li><li>REPLACEは文字数、REPLACEBはバイト数。固定長データにはREPLACEB一択</li><li>内容ベースの置換ならSUBSTITUTE、位置ベースならREPLACEBで使い分け</li><li>全角の途中で切ると文字化けするので、境界を跨がない設計が安全</li><li>SEARCHBやFINDBと組み合わせると、可変長データでも動的に置換できる</li></ul>



<p class="wp-block-paragraph">まずは手元の固定長データに、<code>=REPLACEB(A2, 31, 5, "NEWVAL")</code> のような形で当ててみてください。SEARCHBとセットで使えるようになると、可変長の区切り文字データでもフィールド単位の書き換えが気持ちよく回せますよ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-replaceb-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
