見出し画像

【ファイル付き】コピペで使えるExcelマクロ!Excelでの全角・半角変換を一括で行うマクロ

Excelで日本語や英数字を扱っていると、人によって全角と半角が混ざってしまうことはよくあります。これを手作業で統一するのはとても大変です。
今回ご紹介するマクロを使えば、
・全角スペース → 半角
・全角数字 → 半角
・全角ハイフン → 半角
・全角ローマ字 → 半角 半角カタカナ → 全角カタカナ
・半角() → 全角()
に一括変換できます。
ぜひ業務効率化にお役立てください。

Excelマクロの基本的な使い方は、下の記事を参考にしてください


1. マクロの概要

このマクロでは、アクティブなシート(現在開いているシート)の使用されているセル範囲を対象に、ボタンを押すことで

  • 半角カタカナを全角カタカナに変換

  • 全角英数字・スペース・ハイフンは半角に

  • 半角の()は最終的に全角の()に

といった一連の文字変換を行います。
処理の流れとしては、次のように「一旦すべて半角 → すべて全角 → 必要な文字だけ再度半角に」と段階的に変換しています。
変換する内容を変えてほしい、カスタムしてほしいという要望があればコメント欄までお願いします。
※余裕があれば対応します。

変換前の画像

変換後の画像

ファイルに記載のデータはダミーデータです。
架空のデータになりますので、電話をする等の行為はお控えください。

2. コードの説明

以下が実際に使用するコードです。
コードをどうやって貼り付けて使用していいかわからない方は、この記事の上部に、Excelマクロの基本操作の記事のリンクを貼っているためそちらを参照してください。

Option Explicit

'--------------------------------------------
' アクティブシートの使用範囲を一括変換するメインマクロ
'--------------------------------------------
Public Sub ConvertCharactersInActiveSheet()
    Dim TargetRange As Range        ' アクティブシートの使用範囲を格納
    Dim TargetCell As Range         ' 使用範囲内をループしながら処理するセル

    ' アクティブシートの使用範囲を取得
    Set TargetRange = ActiveSheet.UsedRange

    ' 使用範囲内の各セルをループ
    For Each TargetCell In TargetRange
        ' セルが空でない場合のみ実行
        If Not IsEmpty(TargetCell) Then
            ' セルの値を文字列変換し、その結果をセルに反映
            TargetCell.Value = ConvertCharacters(CStr(TargetCell.Value))
        End If
    Next TargetCell

    MsgBox "変換が完了しました。", vbInformation
End Sub

'--------------------------------------------
' 指定の変換ルールで文字列を加工する関数
'--------------------------------------------
Private Function ConvertCharacters(ByVal OriginalText As String) As String
    Dim ConvertedText As String     ' 作業用文字列
    Dim CharacterIndex As Long      ' 置換用のループカウンタ

    '-------------------------------------------------------------------------
    ' 1) まず、すべて半角に変換 (vbNarrow)
    '    → 全角英数字・全角スペース・全角ハイフン・全角カタカナ などが半角化
    '    → ひらがなは標準で全角しかなく「半角ひらがな」は存在しないためそのまま
    '-------------------------------------------------------------------------
   行為 ConvertedText = StrConv(OriginalText, vbNarrow)
    '-------------------------------------------------------------------------
    ' 2) すべて全角に変換 (vbWide)
    '    → この時点で、(1)で半角になった英数字/スペース/カタカナ/括弧などが再度全角へ
    '    → ひらがなはそもそも全角なので変化なし
    '-------------------------------------------------------------------------
    ConvertedText = StrConv(ConvertedText, vbWide)

    '-------------------------------------------------------------------------
    ' 3) 英数字・スペース・ハイフンは再度「半角」へ戻す
    '    ※ 括弧 (U+FF08, U+FF09) は置換しないので、最終的に全角「()」のまま残る
    '-------------------------------------------------------------------------

    ' 全角数字(U+FF10?FF19) → 半角数字
    For CharacterIndex = 0 To 9
        ConvertedText = Replace(ConvertedText, _
                                ChrW(&HFF10 + CharacterIndex), _
                                Chr(Asc("0") + CharacterIndex))
    Next CharacterIndex

    ' 全角アルファベット(大文字U+FF21?FF3A / 小文字U+FF41?FF5A) → 半角
    For CharacterIndex = 0 To 25
        ' 大文字
        ConvertedText = Replace(ConvertedText, _
                                ChrW(&HFF21 + CharacterIndex), _
                                Chr(Asc("A") + CharacterIndex))
        ' 小文字
        ConvertedText = Replace(ConvertedText, _
                                ChrW(&HFF41 + CharacterIndex), _
                                Chr(Asc("a") + CharacterIndex))
    Next CharacterIndex

    ' 全角ハイフン(U+FF0D) → 半角ハイフン
    ConvertedText = Replace(ConvertedText, ChrW(&HFF0D), "-")

    ' 全角スペース(U+3000) → 半角スペース
    ConvertedText = Replace(ConvertedText, ChrW(&H3000), " ")

    '-------------------------------------------------------------------------
    ' 結果:
    ' - ひらがな: 変換なし(そのまま)
    ' - 半角カタカナ: (1)でいったん半角に→(2)で全角に統一され最終的に全角カタカナ
    ' - 半角()   : (2)により全角()
    ' - 全角英数字/スペース/ハイフン: (1)→(2)後に (3) で再び半角に
    '-------------------------------------------------------------------------

    ConvertCharacters = ConvertedText
End Function


3. 使い方

  1. VBAエディタを開く

    • Excelのメニューから「開発」タブを開き、[Visual Basic]ボタンをクリックするか、ショートカットで Alt + F11 を押してVBAエディタを起動します。

  2. 標準モジュールを挿入してコードを貼り付ける

    • メニューの「挿入」から「標準モジュール」を選択します。

    • 新しくできたモジュールに、以下のコード全文を貼り付けます。

  3. マクロを実行する

    • Excelに戻り、「開発」タブ → [マクロ]をクリックし、ConvertCharactersInActiveSheet を実行します。

    • もしくは、シート上にボタン(フォームコントロールなど)を作成して、このマクロを割り当てれば、ボタン一発で実行できます。

4. ファイルの配布

実際のファイルも置いておきます。これをダウンロードして使用することも可能です。

ファイルに記載のデータはダミーデータです。架空のデータになりますので、電話をする等の行為はお控えください。

5. まとめ

Excelで混ざりがちな全角と半角の不統一問題は、業務上の見栄えやデータ連携の不具合につながることがあります。
今回紹介したマクロを使えば、資料やデータの整合性が格段に上がります。

この記事で紹介したマクロをさらにカスタマイズしたい場合や、エラーが発生する場合は、お気軽にコメントをお寄せください!

※本記事で紹介しているマクロやファイルの使用に伴い発生したいかなるトラブルや損害についても、当方では一切の責任を負いかねます。すべて自己責任のもとでご利用ください。

いいなと思ったら応援しよう!