Excelでデータを扱っていると、
「全角英数字を半角にしたい」
「全角カタカナを半角カタカナに直したい」
「フォームや名簿のデータをきれいに整えたい」
と感じる場面が多いです。
そこでこの記事では、VBAを使って簡単に全角文字を半角文字に変換する方法を、初心者にもわかりやすく説明します。
Excel VBAで全角を半角に変換する基本方法
まず、結論からお伝えします。
全角から半角への変換は、「StrConv関数」を使えば簡単にできます。
StrConv関数とは?
StrConv(ストリングコンバート)は、文字列を変換するための関数です。
たとえば、
- 小文字→大文字
- ひらがな→カタカナ
- 全角→半角
など、さまざまな変換ができます。
今回使うのはこの中の「vbNarrow」というオプションです。
「vbNarrow」は、文字を半角に変換するための指定になります。
基本の書き方
StrConv(変換したい文字列, vbNarrow)
たったこれだけです。
これを知っておくだけで、全角→半角の変換ができます。
サンプルコード:セルの値を半角に変換するマクロ
では、実際に使えるサンプルコードを紹介します。
例:選択したセルの全角文字を半角に変換する
Sub 全角を半角に変換する()
Dim cell As Range
' 選択している範囲をループ
For Each cell In Selection
' セルが空でなければ処理
If Not IsEmpty(cell.Value) Then
' セルの値を半角に変換
cell.Value = StrConv(cell.Value, vbNarrow)
End If
Next cell
MsgBox "変換が完了しました!"
End Sub
使い方
1.Excelを開いて、Alt + F11キーでVBAエディタを起動します。
2.「挿入」→「標準モジュール」を選び、上のコードを貼り付けます。
3.Excelに戻り、半角に変換したいセルを選択します。
4.Alt + F8キーで「全角を半角に変換する」を実行します。
これで、選択したセル内の文字列がすべて半角に変わります。
注意点:StrConvでは変換されないものもある
ここで注意が必要です。
StrConvを使っても、すべての全角文字が完全に変換できるわけではありません。
たとえば、
- 漢字
- ひらがな
などは、半角にはなりません。
(もともと半角に対応していないためです)
また、全角スペースは半角スペースに変換されないので注意しましょう。
この場合は、置換機能を組み合わせる必要があります。
応用編:全角スペースも半角スペースに変換したい場合
は、全角スペース(” ”)を半角スペース(” “)に変えたい場合はどうするか?これも簡単です。Replace関数を組み合わせるだけです。
スペースも含めた変換マクロ
Sub 全角を半角に変換(スペース対応版)
Dim cell As Range
For Each cell In Selection
If Not IsEmpty(cell.Value) Then
Dim temp As String
temp = StrConv(cell.Value, vbNarrow)
temp = Replace(temp, " ", " ") ' 全角スペースを半角スペースに置換
cell.Value = temp
End If
Next cell
MsgBox "全角スペースも含めた変換が完了しました!"
End Sub
これで、全角英数字・カタカナだけでなく、全角スペースまで一括で半角に変換できます。
なぜ全角半角の統一が重要なのか?
データ処理の現場では、「全角と半角が混ざっている」と大きな問題になります。
たとえば、
- 重複チェックが正しくできない
- ソートや検索でヒットしない
- データベースに登録できない
など。
見た目が似ていても、コンピューターは「全角A」と「半角A」を別物と認識します。
だから、データをきれいにするためには半角統一がとても大切なんですね。
特に、
- 名簿管理
- 顧客データベース
- 商品リスト
などでは、必ず全角半角の統一を意識しましょう。
シート全体を対象にする場合
For Each cell In ActiveSheet.UsedRange
このように書き換えると、アクティブなシートのすべてのデータが対象になります。
特定の列だけ対象にする場合
例えば、A列だけを対象にしたいなら、こうします。
For Each cell In Range("A:A")
また、範囲を絞るなら、
For Each cell In Range("A2:A100")
とすれば、A2からA100までだけ変換できます。
まとめ
この記事では、「Excel VBAで全角文字を半角に変換する方法」を詳しく説明しました。
- StrConv(文字列, vbNarrow)で半角変換できる
- スペースも置換すれば完璧
- データ統一のために非常に重要
- セル選択、シート全体、列指定など自由にカスタマイズできる
最初は難しそうに見えても、やってみると意外と簡単です。
一度マクロを作っておけば、今後のデータ処理がとても楽になります。