Funactional Mathematicianのブログ

数学(含む、統計学)で考えていることや、PC(特にMac)のTipsについてのメモの集合です。本blogに書かれている内容は、記事を書いた時点での僕の知識や調査によるものです。そのため、僕の不勉強による間違いや勘違いなどが書かれていることもあり得ます。記事の内容の真偽について、ご自身できちんと確かめて下さいますようよろしくお願いいたします。また、不適切な表現や間違えについては、ご指摘頂けると助かります。 (なお、記事の内容は、所属機関を代表するものではなく、僕個人の見解です。)

Excelで全角文字を含むかどうかを判定する

Excelのセル内に入力されている文字に全角文字が含まれるかどうかを判定するには、LENB関数とLEN関数を用いればできることを知りました。

  • LENB関数は、文字列のバイト数を返す関数です。全角文字1文字は2バイト、半角文字1文字は1バイトですので、LENB(文字)=4、LENB(letter)=6となります。
  • LEN関数は、文字列の文字数を返す関数です。全角文字でも半角文字でも1文字を1個とカウントします。そのため、LENB(文字)=2、LENB(letter)=6となります。

さて、全角文字が対象の文字列に含まれるかを判定する方法としては、全角文字の場合LENB関数とLEN関数の戻り値が異なるが、半角文字であればLENB関数とLEN関数の戻り値が同じであることを利用することで実装可能です。 すなわち、LEMB(対象文字列)とLEM(対象文字列)での戻り値を比較し、一致すればすべて半角文字で全角文字は含まれていない、一致しなければ全角文字を少なくとも1つ含むと判断できます。 たとえば、「全角fukumu」と「zenkakufukumu」を例にしてみますと、

  • LENB(全角fukumu) = 10, LEN(全角fukumu)=8となるので、「LENB(全角fukumu)!=LEN(全角fukumu)」です。(ここで記号「!=」は、「等しくない」を表します。)
  • LENB(zenkakufukumu) = 12, LEN(全角fukumu)=12となるので、「LENB(全角fukumu)==LEN(全角fukumu)」です。(ここで記号「==」は、「等しい」を表します。)

このことを応用して、例えばセルB5に記載されている文字列について、全角文字を含んでいるかを判定したい場合には

  • IF(LENB(B5)<>LEN(B5),"TRUE","FALSE")

のようにIF文を使う判定可能です。

このやり方はある1つの方法であって、他にも色々な方法があるかと思います。