LEFTB関数とは
LEFTB関数は、指定した文字列から、指定したバイト数分だけ左からかぞえて表示する事ができる関数です。
公式説明では下記のようになってます。
なので、全角のAは2、半角のAは1としてカウントされるという事です。
例えば、半角と全角が混じった、アアという文字列の場合、最初のアのみ取得したい場合は1バイト、次のアまで取得したい場合は3バイトを指定する必要があります。
そもそも1バイト文字と2バイト文字ってなんなの?という点が気になる方は、こちらも合わせて読んでみて下さい。
LEFTB関数の使い方
式:=LEFTB(文字列,バイト数)
まず文字列を指定して、次に取得したいバイト数を指定します。
バイト数は省略可能ではありますが、省略した場合は1とみなされるだけなので、省略して使う事はほとんどないでしょう。
文字列は、直接文字列を入力するというより、=LEFTB(A1)のように、セルを参照させて使う事が多いです。
LEFTB関数を使ってみる
実際にLEFTB関数を使ってみましょう。
住所が入力されたセルの内、20バイト分を取得してみます。
このように、指定した文字列を左から20バイト分だけ取得してくれます。
中途半端な分はどうなる?
中途半端な分とは何を言ってるのかというと、アという2バイト文字に対して、1バイトを指定した場合、はたしてアは取得されるのかという事です。
さっそく実験してみましょう。
このように、指定バイトを満たせてない分は切り落とされます。(正確には少し違うのですが、この後で解説します)
また、バイト数に小数を指定した場合は、切り上げも四捨五入もされず、小数以下切り捨てとなりますので、LEFTB(A1,1.9)と入力した場合は1バイト分の文字のみが取得されます。
なので整数以外を入力しても、エラーにはならないが、意味は無いという事になります。
さて先ほど、指定バイトを満たせてない分は切り落とされます。と書きましたが、正確には半角スペースに置き換えられています。
どういう事が実験してみましょう。
まず、最後が2バイト文字で、7バイト分の文字列を用意します。
それに対して、=LEFTB(セル,6)というように、半端なところまでをLEFTB関数で取得します。
そこへ次は、LENB関数を使ってバイト数を調べてみると、取得できているのは5バイト分の文字列なのに、この文字列は6バイトだという結果が返ってきます。
原因を調べるために、=LEFTB(セル,6)の結果をコピーし、別のセルに値貼り付けしてみると・・・
なんと文字列の一番後ろに、半角スペースが作り出されていました。
このせいで、見た目は5バイトなのに、実体は6バイトになっていたというわけです。
だからといって困る事はほとんどありませんが。
実用例
エクセルでデータを整理して、CSV形式で保存し、別のシステムに取込む時などに重宝します。
LEFTB関数を使ってみるの項目にあるように、取込先のシステムでは住所項目は20バイトだと指定されてる場合に、入りきらない分をカットしたい時によく使います。
他にも、氏名であったり、店舗名であったり、とにかく取込先のシステムが許容できないバイト数の文字列を整理する時に便利ですね。
特に氏名は、日本のシステムでは氏名の項目にあまりデータ長を確保していないシステムが多く、外国の方の名前が入りきらないケースも少なくありません。
その場合、後で細かく調整はするとして、とにかくいったんデータ取込だけはしてしまいたい!という時、このLEFTB関数で思い切って後ろ部分を切り落として、一度取込んでしまうという方法があります。
まとめ
実用例のように、何かのシステムに取込むデータを整理する際に、非常に役立つ関数です。
バイト数ではなく、単純に指定した文字数分だけを取得したい場合は、後ろにBのつかないLEFT関数をお試しください。
コメント