半角と全角が混ざったエクセルデータを自動変換![Excel VBA]

半角と全角が混ざったエクセルデータを変換しよう エクセル

本記事では半角と全角が混ざったエクセルデータにお困りの方へ向けて、
エクセル関数のASC関数とJIS関数の使い方を解説しています。
後半ではVBAコードも記述しておりますので、変換の自動化、業務改善に役立ちます。

スポンサーリンク

半角と全角が混じったエクセルデータを直すには?

入力担当者の違いやシステムが途中で変わったために、
半角と全角が混ざったエクセルデータにお困りではありませんか?

私の勤め先でも例外ではなく、例えば以下のようなデータがありました。

半角と全角がバラバラだから、うまく検索できていない
図1 VLOOKUP関数がエラー

半角と全角がバラバラのまま作業を行うと上記のように、
参照元のデータが半角なのに引用元は全角なのでVLOOKUP関数がエラーを起こしたり、
オートフィルターが思うように機能しなかったり・・・。

この問題を修正するために、
1セルずつ手入力で半角から全角へ、全角から半角へ変換なんて時間が勿体ないですよね。

関数でまとめて変換してしまいしょう!
ASC関数とJIS関数を使いこなして業務改善しましょう。

ASC関数とJIS関数を使いこなして変換しよう!

ASC関数、JIS関数について。

ASC関数 = 全角文字を半角文字に変換する
 使い方 =ASC(変換したい文字列、セル) 例) =ASC(A1)

JIS関数 = 半角文字を全角文字に変換する
 使い方 =JIS(変換したい文字列、セル) 例) =JIS(A1)

例えば先ほどの図1の場合、A列のデータをすべて半角にしたいですよね?
ASC関数を使ってみましょう!

ASC関数の入力方法
図2 D2セルに「=ASC」を入力

変換したい表にASC関数を入れるための列を追加しましょう。今回はD列を使用します。
あとからオートフィルしたいので、変換したい文字列と同じ行にすると尚良いです。
それではD2セルに「=ASC(A2)」を入力しましょう。

A2の全角文字が半角文字に変換されました
図3 A2の全角文字が半角文字に変換されました

A2セルの全角文字ABCDを半角文字に変換した文字列がD2セルに入力されました。
あとはD13までオートフィルしたらOKです。D2からD13までコピーしてA2から値貼り付けすると、

A列をすべて半角文字に変換できたのでエラーがなくなりました
図4 A列をすべて半角文字に変換できたのでエラーがなくなりました

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で自動化までまとめました。

業務では変換したほうが効率あがるシチュエーションが頻出しますので、
使いこなせるように覚えておきましょう!

不明点や疑問点があれば、ぜひお問い合わせください。

おわり

タイトルとURLをコピーしました