エクセルで全角を半角に変換したいときはないでしょうか。
けど、そんな中で悩むことは、
・Excelのセルにある文字で英数字のみ全角から半角に変換したいする方法がわからない
ですよね。
今回はそんなお悩みを解決する
・英数字のみ全角から半角に変換する方法
についてまとめます!
もくじ
エクセルで全角を半角に変換する方法
基本となるエクセルで全角を半角に変換する方法について説明します。
サンプルデータを用意
Excelのシートに以下のような全角文字列のデータをA1セルから入力しましょう。
全角文字列 | 変換後 |
ABCDE | |
12345 | |
0.12345 | |
@+*?<>_ | |
カキクケコ | |
カキクケコABC123 |
このデータには、全角英数字と全角記号、全角カタカナが含まれています。
ASC関数の使用
全角文字列を半角に変換するには、ASC関数を使用します。
2 バイト文字セット (DBCS) 言語の場合、全角 (2 バイト) 文字を半角 (1 バイト) 文字に変更します。
書式:
ASC(文字列)
ASC 関数の書式には、次の引数があります。
文字列:
必ず指定します。
文字列または変換する文字列を含むセルの参照を指定します。 文字列に全角文字が含まれない場合は、文字列は変換されません。
使用例:
=ASC(“EXCEL”)
参考:https://support.microsoft.com/ja-jp/office/asc-%E9%96%A2%E6%95%B0-0b6abf1c-c663-4004-a964-ebc00b723266
数式を入力
B2セルに以下の数式を入れましょう。
=ASC(A2)
半角に変換された値が表示されましたね!
この数式を7行目までドラッグしましょう。
はい、すべての文字列が半角に変換されましたね!
エクセルで全角を半角に一括で変換する方法
次は一括で全角を半角に変換する方法について説明します。
同じくASC関数を使いますが、今回は一つのセルではなく、範囲指定をして、
その範囲にある全角文字列を半角に一括変換をしていきます。
数式を入力
B2セルに以下の数式を入れましょう。
=ASC(A2:A7)
はい、一瞬で複数の全角文字列を半角に変換できましたね!
英数字のみ全角から半角に変換する方法
英数字のみ全角を半角に変換する方法について説明をします。
これまでASC関数を使い全角文字列を半角に変換してきましたが、ASC関数は英数字とそれ以外の全角文字混合でも強制的に半角文字に変換してしまうため、
例えば英数字だけ半角に変換するということはできません。
そのため、英数字のみを半角に変換するためには、VBAを使用するか、他の関数と組み合わせて実現する必要があります。
今回はVBAの方で英数字のみ全角から半角に変換するオリジナル関数を実装し、
シート内でオリジナル関数を使用して英数字のみ全角から半角に変換していきたいと思います。
VBAでオリジナル関数を実装する
VBAでオリジナル関数を実装していきましょう。
サンプルコードは以下の通りです。
Function hankaku(str As String) As String
Dim i As Integer
For i = 1 To Len(str)
If AscW(Mid(str, i, 1)) >= &HFF10 And AscW(Mid(str, i, 1)) <= &HFF19 Then
hankaku = hankaku & Chr(AscW(Mid(str, i, 1)) - &HFEE0)
ElseIf AscW(Mid(str, i, 1)) >= &HFF21 And AscW(Mid(str, i, 1)) <= &HFF3A Then
hankaku = hankaku & Chr(AscW(Mid(str, i, 1)) - &HFEE0)
ElseIf AscW(Mid(str, i, 1)) >= &HFF41 And AscW(Mid(str, i, 1)) <= &HFF5A Then
hankaku = hankaku & Chr(AscW(Mid(str, i, 1)) - &HFEE0)
Else
hankaku = hankaku & Mid(str, i, 1)
End If
Next i
End Function
VBAの実装
VBAの実装手順は以下の通りです。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
数式を入力
B2セルに以下の数式を入れましょう。
=hankaku(A2)
この数式を7行目までドラッグしましょう。
はい、全角の記号やカタカナを除いた英数字のみが半角に変換されましたね!
VBAの説明
VBAコードの各部分について詳しく説明します。
Function hankaku(str As String) As String
hankakuという名前の関数を宣言しています。
この関数は、String型の引数strを取り、変換後のString型の値を返します。
For i = 1 To Len(str)
このループは、1から文字列strの長さ(Len(str)で取得)まで、文字列内の各文字に対して処理を行います。Len関数は文字列の文字数を返します。
If AscW(Mid(str, i, 1)) >= &HFF10 And AscW(Mid(str, i, 1)) <= &HFF19 Then
Mid(str, i, 1)は文字列strからi番目の文字を取り出します。
AscW関数はその文字のUnicodeコードポイントを返します。
この行では、取り出した文字が全角の数字(0から9)であるかを判定しています。
hankaku = hankaku & Chr(AscW(Mid(str, i, 1)) - &HFEE0)
条件に合致する場合、全角文字のコードポイントから&HFEE0を引くことで、対応する半角文字のコードポイントを得ます。
Chr関数はこのコードポイントに対応する文字を返し、その文字を結果の文字列に追加します。
ElseIf AscW(Mid(str, i, 1)) >= &HFF21 And AscW(Mid(str, i, 1)) <= &HFF3A Then
全角の大文字英字(AからZ)を判定しています。
ElseIf AscW(Mid(str, i, 1)) >= &HFF41 And AscW(Mid(str, i, 1)) <= &HFF5A Then
全角の小文字英字(aからz)を判定しています。
それぞれの判定に合致する場合も、対応する半角文字に変換するためにコードポイントを調整しています。
Else
hankaku = hankaku & Mid(str, i, 1)
End If
英数字以外の文字(全角や半角のカタカナ、漢字、ひらがななど)は変換せずにそのまま結果の文字列に追加されます。
さいごに
いかがでしょうか。
今回は、
関数を使わないで全角を半角にする方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す