- ベストアンサー
質問:エクセルでアルファベットじゃない値を条件分岐する方法
- エクセル2010を使用している場合、A列に入力された値の先頭文字がアルファベットでない場合に条件分岐する方法を教えてください。
- 現在のコードは、26個のIFステートメントを使用して1文字目がアルファベットでない値をチェックしていますが、これを簡潔に書く方法はありませんか?
- 条件分岐を行う際に、アルファベット以外の文字で始まる値をチェックする方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
失礼 #2 です。 A-z だと [\^]_ が含まれてしまいますので "[!a-zA-Z]*" に訂正してください。
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようにしてもよいでしょう。 Sub もし() Dim MyRow As Long For MyRow = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Asc(UCase(Range("A" & MyRow))) < 60 Or Asc(UCase(Range("A" & MyRow))) > 90 Then MsgBox "1文字目がアルファベットで始まっていません!" End If Next MyRow End Sub アルファベットを全角文字にして文字コードを判断しています。
お礼
皆さんとは違う方法ですね。 いろんな回答ありがとうございます。
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() dim r as long for r = 1 to range("A65536").end(xlup).row if not left(cells(r, "A"), 1) like "[a-z,A-Z]" then msgbox cells(r, "A") & " is not match" end if next r end sub みたいな。
お礼
like "[a-z,A-Z]" でも可能なのですね。
- nicotinism
- ベストアンサー率70% (1019/1452)
半角のアルファベットの大文字小文字のチェックなら Sub もしもし() Dim MyRow As Long For MyRow = 1 To Cells(Rows.Count, "A").End(xlUp).Row If Range("a" & MyRow).Value Like "[!A-z]*" Then MsgBox MyRow & " の1文字目が『半角』アルファベットで始まっていません!" End If Next MyRow End Sub とか。 小文字だけで良いなら、"[!A-z]*" → "[!a-z]*"
お礼
Like "[!A-z]*" これでうまくできました。ありがとうございます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
Asc 関数を使った不等式で If 文を書いてみてください。Asc の意味は、VBE でどこかに asc とタイプし、F1 キーを押してヘルプを見てください。なお「A」と「a」は異なるコードとなります。
お礼
asc関数を使えばいいのですね。 大文字小文字も考慮して考えてみます。
お礼
[!a-zA-Z]* にした方がいいのですか。そうします。