【Excel】文字列の先頭から指定バイト数を取得する方法(LEFTB関数)

ExcelのLEFTB関数の使い方について具体例を交えて説明します。

書式

LEFTB(文字列, [バイト数])

※ []内の引数は任意の項目です。

関数と変数の説明

文字列の先頭から指定されたバイト数分の文字を返します。

  • 文字列(必須項目):取り出す文字を含む文字列を指定します。
  • バイト数(任意項目):左から何バイト切り出すかを指定します。0を指定すると何も返ってきません(空が返る)。マイナスの値を指定すると、「#VALUE!」を返します。
日本語は1文字2バイトです。「晴れ」の場合、2文字×2バイト=4バイトとなります。その時にバイト数3を指定すると1文字と半分の文字となり、半分の文字の部分はスペース1個分が入ってきます。その結果、「晴 」が返ります(赤い部分はスペースです)。この結果は一般的に期待値ではないと思います。ですので、基本的には日本語が含まれる場合はLEFT関数を使うと覚えておきましょう

使用例

以下が使用例になります。

A B C
1 対象文字列
2 マイクロソフト(Microsoft)
3
4 取得したい内容 出力結果 計算式
5 1.先頭から1バイトを取得する(変数省略時)   =LEFTB(A2)
6 2.先頭から1バイトを取得する(変数指定あり)   =LEFTB(A2,1)
7 3.先頭から2バイトを取得する =LEFTB(A2,2)
8 4.先頭から3バイトを取得する   =LEFTB(A2,3)
9 5.先頭から4バイトを取得する マイ =LEFTB(A2,4)
10 6.先頭から16バイトを取得する マイクロソフト(M =LEFTB(A2,16)
11 7.先頭から100バイトを取得する マイクロソフト(Microsoft) =LEFTB(A2,100)
12 8.取得するバイト数が0の場合 =LEFTB(A2,0)
13 9.取得するバイト数がマイナスの場合 #VALUE! =LEFTB(A2,-1)

「1.先頭から1バイトを取得する(変数省略時)」のケースはバイト数変数を省略したときの出力結果です。バイト数が省略されたときはバイト数は1で計算されます。しかし、対象文字列が「マイクロソフト(Microsoft)」で最初の一文字が「マ」となります。「マ」は2バイト文字なので、その半分を取得しようということになります。その場合はスペース(赤い部分)が返ってきます。また、「2.先頭から1バイトを取得する(変数指定あり)」と同じ結果になります。

「3.先頭から2バイトを取得する」から「5.先頭から4バイトを取得する」までは日本語(2バイト文字)の場合に1バイトがどう扱われるか分かりやすく取得するバイト数を1バイトづつ増やしていった場合の例になります。赤い部分はスペースを表しています。

「6.先頭から16バイトを取得する」は半角文字が含まれている場合の例です。半角文字は1文字1バイトで計算します。「マイクロソフト(Microsoft)」の「マイクロソフト」は日本語の全角文字、1文字2バイトです。7文字×2バイト=14バイトとなります。それ以降の「(Microsoft)」は半角文字で1バイト文字になります。「マイクロソフト」が14バイトなので、そこから残り2バイト(2文字)の「(M」まで対象となり、「マイクロソフト(M」が返ってきます。

「7.先頭から100バイト文字取得する」のケースでは対象となる文字列が25バイトしかない場合に先頭からバイト数100を取得をしています。対象となる文字列のバイト数 < 取得するバイト数の場合です。その時は特に何のエラーも返さず、対象となる文字列すべてが返ってきます。

「8.取得するバイト数が0の場合」は何も返ってきません(空が返る)。

「9.取得するバイト数がマイナスの場合」のケースは誤って文字数がマイナスの値の場合です。その場合は「#VALUE!」が返ってきます。

類似関数

コメント

タイトルとURLをコピーしました