• ベストアンサー

エクセル 全角か半角かを見分ける関数

件名の通り 全角か半角かを見分ける関数はどう定義すれば よいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.4

> VBAで下記の関数を行っても全角文字数が拾えませんでした。基本的には同じ事をしてるのですが、VBAで > 全角文字数を調べる方法はないのでしょうか? > num = LenB(Cells(1, 1).Value) - Len(Cells(1,1).Value) ここら辺がUNICODEの問題です。 num = LenB(StrConv(Cells(1, 1).Value, vbFromUnicode)) - Len(Cells(1,1).Value) としてみてください。

その他の回答 (3)

noname#5033
noname#5033
回答No.3

見分けると言うか、全角を半角に半角を全角に変換する関数ならありますが。 全角文字を半角文字は、ASC関数、分類は文字列操作のところにあります。 また半角を全角はJIS関数です。分類は同じく文字列操作です。 JIS関数を利用しようして半角の数字を全角にすると文字列扱いにすると計算には利用できなくなってしまいますが。 この関数じゃ、だめ?でしょうか。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

文字列長を図る関数[Len]と[LenB]を使用してはどうでしょう? Lenは「文字数」を返し、LenBは「バイト数」を返します。 セルA1に文字列「123あ45」があるとして Len(A1)は値5を返しますがLenB(A1)は値6を返します。 全角文字は2バイトなのでこのようになります。 本当はUNICODEなど、やっかいな話があるはずですが、とりあえず結果が得られます。 LenB(A1)-Len(A1)で含まれる全角文字数が拾えますよ。

jones0901
質問者

補足

返答ありがとうございます。 エクセルのシート上で上記の関数使ってみたら全角文字数拾えました VBAで下記の関数を行っても全角文字数が拾えませんでした。基本的には同じ事をしてるのですが、VBAで 全角文字数を調べる方法はないのでしょうか? num = LenB(Cells(1, 1).Value) - Len(Cells(1,1).Value)

  • LinkZero
  • ベストアンサー率38% (5/13)
回答No.1

定義・・・どうすれば表現すればいいかということですか? A1が全角かどうかを調べた結果をB1に表示する =EXACT(A1,JIS(A1))。 全角ならTRUE、半角ならFALSEと表示されます。 ・EXACTで2つの文字列の比較をします。 ・JISは半角の英数カナ文字を全角にします A1が半角の場合は、A1を全角にしたJIS(A1)と違うのでFALSE A1が全角の場合は、A1を全角にしたJIS(A1)と同じなのでTRUE となるというわけです。 ほかにやりかたがあると思いますが、わたしが思いついたのはこれです。

関連するQ&A