プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

定義・・・どうすれば表現すればいいかということですか?



A1が全角かどうかを調べた結果をB1に表示する
=EXACT(A1,JIS(A1))。
全角ならTRUE、半角ならFALSEと表示されます。

・EXACTで2つの文字列の比較をします。
・JISは半角の英数カナ文字を全角にします
A1が半角の場合は、A1を全角にしたJIS(A1)と違うのでFALSE
A1が全角の場合は、A1を全角にしたJIS(A1)と同じなのでTRUE
となるというわけです。

ほかにやりかたがあると思いますが、わたしが思いついたのはこれです。
    • good
    • 0

文字列長を図る関数[Len]と[LenB]を使用してはどうでしょう?



Lenは「文字数」を返し、LenBは「バイト数」を返します。

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

LenB(A1)-Len(A1)で含まれる全角文字数が拾えますよ。

この回答への補足

返答ありがとうございます。
エクセルのシート上で上記の関数使ってみたら全角文字数拾えました

VBAで下記の関数を行っても全角文字数が拾えませんでした。基本的には同じ事をしてるのですが、VBAで
全角文字数を調べる方法はないのでしょうか?

num = LenB(Cells(1, 1).Value) - Len(Cells(1,1).Value)

補足日時:2003/01/26 03:03
    • good
    • 0

見分けると言うか、全角を半角に半角を全角に変換する関数ならありますが。


全角文字を半角文字は、ASC関数、分類は文字列操作のところにあります。

また半角を全角はJIS関数です。分類は同じく文字列操作です。
JIS関数を利用しようして半角の数字を全角にすると文字列扱いにすると計算には利用できなくなってしまいますが。

この関数じゃ、だめ?でしょうか。
    • good
    • 0

> 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)
としてみてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!