本記事では半角と全角が混ざったエクセルデータにお困りの方へ向けて、
エクセル関数のASC関数とJIS関数の使い方を解説しています。
後半ではVBAコードも記述しておりますので、変換の自動化、業務改善に役立ちます。
半角と全角が混じったエクセルデータを直すには?
入力担当者の違いやシステムが途中で変わったために、
半角と全角が混ざったエクセルデータにお困りではありませんか?
私の勤め先でも例外ではなく、例えば以下のようなデータがありました。
半角と全角がバラバラのまま作業を行うと上記のように、
参照元のデータが半角なのに引用元は全角なのでVLOOKUP関数がエラーを起こしたり、
オートフィルターが思うように機能しなかったり・・・。
この問題を修正するために、
1セルずつ手入力で半角から全角へ、全角から半角へ変換なんて時間が勿体ないですよね。
関数でまとめて変換してしまいしょう!
ASC関数とJIS関数を使いこなして業務改善しましょう。
ASC関数とJIS関数を使いこなして変換しよう!
ASC関数、JIS関数について。
ASC関数 = 全角文字を半角文字に変換する
使い方 =ASC(変換したい文字列、セル) 例) =ASC(A1)
JIS関数 = 半角文字を全角文字に変換する
使い方 =JIS(変換したい文字列、セル) 例) =JIS(A1)
例えば先ほどの図1の場合、A列のデータをすべて半角にしたいですよね?
ASC関数を使ってみましょう!
変換したい表にASC関数を入れるための列を追加しましょう。今回はD列を使用します。
あとからオートフィルしたいので、変換したい文字列と同じ行にすると尚良いです。
それではD2セルに「=ASC(A2)」を入力しましょう。
A2セルの全角文字ABCDを半角文字に変換した文字列がD2セルに入力されました。
あとはD13までオートフィルしたらOKです。D2からD13までコピーしてA2から値貼り付けすると、
A列がすべて半角文字に変換できたので、図1で生じていたVLOOKUPのエラーがなくなり、
正常に動作しております。
逆にA列を全角文字に統一したい場合は、ASCの部分をJISに変更して同じ処理をしてください!
VBAで自動化しよう!
もし業務で変換する頻度が多いのであれば、VBAで自動化しましょう。
VBAを使えば1ボタンで指定の列を一気に変換可能です。
関数をVBAで使うには、「WorksheetFunction」を使えばいいですね。
全角から半角に変換するASC関数をVBAで書くと以下のようになります。
Sub asc()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 1).Value = WorksheetFunction.asc(Cells(i, 1).Value)
Next
End Sub
赤太字の1を変換したい列番号に変更してください。
列番号の数え方
A列が1、B列が2、C列が3…のようにA列基準で右に進むたびに1ずつ増えます。
半角から全角へ変換するJIS関数の場合は以下のようになります。
Sub dbcs()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 1).Value = WorksheetFunction.dbcs(Cells(i, 1).Value)
Next
End Sub
こちらも赤太字の1を変換したい列番号に変更してください。
ちなみに上記コードをよく見るとDBCS関数を使っています。
DBCS関数は英語環境でのJIS関数です。ちょっとややこしいですが、日本語環境のエクセルでは
DBCS関数は使えません。あくまでもVBAのみで使えます。
ですので、以下のようにVBAでJIS関数を動かそうとすると、
Sub jis() ‘※動きません!
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 1).Value = WorksheetFunction.jis(Cells(i, 1).Value)
Next
End Sub
エラーが出て使えませんのでお気をつけください。
おわりに
本記事ではASC関数とJIS関数の説明と使い方、VBAで自動化までまとめました。
業務では変換したほうが効率あがるシチュエーションが頻出しますので、
使いこなせるように覚えておきましょう!
不明点や疑問点があれば、ぜひお問い合わせください。
おわり