Excel VBAで文字種(アルファベットかどうか)を判定したい


ひらがな、カタカナはLikeで、数値はisnumericで判定できることはわかりました。
残るは記号、漢字、アルファベットだと思うのですが、
この中でアルファベットかどうかをを判定したい場合にはどのような処理を行えば良いのでしょうか?
また記号、漢字、アルファベットの判定方法があるのであれば教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2018/06/12 14:10:05

回答3件)

id:smithy250 No.1

回答回数45ベストアンサー獲得回数11

文字列の先頭だけでよければCODEという関数があります

id:Z1000S No.3

回答回数39ベストアンサー獲得回数27

まず、IsNumeric 関数は、数値かどうかの判定ではありませんが、そこは大丈夫でしょうか?

式が数値として評価されるかどうかを示すブール値を返します。

IsNumeric 関数

例えば、
IsNumeric("&H10") 16進表記
IsNumeric("1E4")  指数表記
などは、Trueを返します。

数字だけの文字列かどうかであれば
Not 文字列 Like "*[!0-9]*"
で判定できます。
0から9以外の文字が含まれているかを判定し、それを"Not"で否定することで数字だけか判断しています。
ただし、長さ0の文字列でもTrueが返るので、合わせて判定する必要があります。

1桁の数字であれば、
文字 Like [0-9]
でOK

必要であれば、全角も含めて
Not 文字列 Like "*[!0-90-9]*"
または
文字 Like [0-90-9]
として判定もできます。

!については、

[ !charlist ] 引数 charlist に含まれない任意の 1 文字

Like 演算子

アルファベットも同様に
Not 文字列 Like "*[!a-zA-Z]*"
で(長さ0判定も必要)

単一文字であれば、
文字 Like [a-zA-Z]
でOK

漢字の判定は、正規表現を使ってUnicodeの範囲指定かなぁ?

VBAで正規表現を使う (1/3):CodeZine(コードジン)
Unicodeで「漢字」の正規表現 – ものかの

記号はどの程度の範囲かわからないのではっきりは言えませんけど、
Asc関数で判定できなければ、やっぱり正規表現でUnicode判定?

Asc 関数
id:keijun5145

isnumericは1文字ずつfor文で回してすべてtrueが返ってきたら数値と判断するというロジックです。

アルファベットもlikeが使用可能なんですね。
空白セルかどうかの判定を合わせることで判定が可能な旨承知いたしました。


早速やってみようと思います。
ありがとうございます。

2018/06/06 05:57:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません