ASC関数と[ふりがな]機能とPHONETIC関数を合わせて利用することで、そこそこの手間でカタカナは全角、英数は半角という状態にできることをご紹介しました。
一発で英数字だけ半角にしたいのならば、VBA(Visual Basic for Applications)でユーザー定義関数を作成しましょう。
「英数字だけ半角にしたい」という要望をよく聞いてみると、実は記号類も半角にしてカタカナだけ全角にしたいという要望だったりするので、ここではカタカナだけを全角にして、他の半角が存在する文字はアルファベットも数字も記号類もすべて半角にするユーザー定義関数をご紹介します。
Function AscEx(strOrg As String) As String
Dim strRet As String
Dim intLoop As Integer
Dim strChar As String
strRet = ""
For intLoop = 1 To Len(strOrg)
strChar = Mid(strOrg, intLoop, 1)
If (strChar >= "ァ" And strChar <= "ヶ") Then
strRet = strRet & strChar
Else
strRet = strRet & StrConv(strChar, vbNarrow)
End If
Next intLoop
AscEx = strRet
引数・strOrgに指定された文字列を1文字目から順番に取り出して
strChar = Mid(strOrg, intLoop, 1)
その取り出した1文字がカタカナかを調べ、もしカタカナならそのまま
If (strChar >= "ァ" And strChar <= "ヶ") Then
strRet = strRet & strChar
そうでなければ半角にする
Else
strRet = strRet & StrConv(strChar, vbNarrow)
という処理を、
For intLoop = 1 To Len(strOrg)
Next intLoop
ぐるぐる繰り返しています。
もし本当に「英数字」だけを半角にしたいのなら、If文部分を
If (strChar >= "0" And strChar <= "9") _
Or (strChar >= "A" And strChar <= "Z") _
Or (strChar >= "a" And strChar <= "z") Then
strRet = strRet & StrConv(strChar, vbNarrow)
Else
strRet = strRet & strChar
End If
などのようにすればいいでしょう。
▼サンプルファイル(003336.xls 56KByte)ダウンロード
サンプルファイルでは、上記のAscEx関数と、英数字だけ半角にする関数をAscEx2としてを作成してありますのでご確認ください。
Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » 英数字だけ半角にする