エクセルのド定番処理の「全角統一マクロ」(半角、かな全角対応)

エクセル Excel

全角と半角とカナをお手軽に変換

エクセルで地味に必要なデータ修正が全角・半角の統一です。
はじめから自分で作っていれば、自然と統一されていると思いますがネットやファイルから文章をコピペしていると知らぬ間に全角と半角が混じっているエクセル文書ができあがります。
前任者から引き継いだエクセルファイルなら尚更です。平成、昭和と時代を遡るにつれてカタカナ文字の半角率と欧文の全角率が高まっていきます。(たぶん)

半角と全角を統一する方法

半角と全角が混在したエクセルのデータを統一する方法はいくつかあります。

  1. 手コンバート
    あなたの目で見つけ、手で打ち替える人力コンバート。
    最も手軽ですが確実性、処理速度は個人によって差があります。量が増えるほど精度・速度が落ち込みます。
  2. 文字変換サイト
    ブラウザを使ってネットで変換。
    サイトによっては細かいパラメータ設定ができるので手軽にできる反面、ブラウザとエクセルを行ったり来たりと何度もコピペする手間があります。重要機密な文書を怪しげなサイトにコピペするものよくない!?
  3. Wordで変換
    文字種の変換を使えば柔軟な変換ができます。
    Wordが必要なこと、操作に慣れが必要なこと、結局は大量のコピペとなるので現実的にこの方法は選びません。
  4. エクセルの関数
    エクセルらしいのが関数(JISとASC)を使った変換です。
    文字セルを直接、変換できないのでわざわざ関数用のセルを準備する手間があります。
    変換結果に安心して迂闊に元セルを消しちゃうとデータが丸ごと消えている…。悲劇の未来が見えます。関数の結果を忘れずにコピペしましょう。
  5. エクセルのマクロ
    柔軟かつ画一的なコンバート処理をおこなってくれるのがマクロ。
    汎用性を持たせることでどのシートでも文書の量に関係なく簡単に高速で変換できるのでマクロで処理するのが一番いいに決まっています。
    がしかし!どうすればいいのかわかんないしめんどそう。それがマクロの一番悪いところ。

この中で、難易度を度外視すると一番、よさそうな方法はエクセルマクロ。
マクロで処理をすることでブラインドタッチのデキル派遣さんから頼りない管理職まで誰が使っても品質に差がでません。

みんなのためにマクロを使えるアナタがちょっとだけ苦労しましょう。

いきなり結果発表!こんなことができる。

マクロを使えば文字の変換は簡単です。
英字・カタカナを 全角全部   全部半角  カタカナは全角 と変換します。

複数の行を選択してもまとめて変換、一部の記号も全半角になります。
たったこれだけでも便利になります。

 

マクロの仕様

選択しているセルの文字をぜーんぶ全角、ぜーんぶ半角にするマクロ、カナだけ全角にするマクロの3本立て。カナだけ全角にする方法は正規表現を使っています。

マクロのコード

そのままコピペでも動作すると思います。
エラー処理などはありませんのでアレンジしてください。

Sub 全角()
    Dim c As Range
    For Each c In Intersect(Selection, ActiveSheet.UsedRange)
      
    If c.Value <> "" Then
        If IsNumeric(c.Value) Then
           c.NumberFormatLocal = "@"
        End If
        c.Value = StrConv(c.Value, vbWide)
    End If
    Next
End Sub

Sub 半角()
    Dim c As Range
    Dim i As Long, j As Integer

    For Each c In Intersect(Selection, ActiveSheet.UsedRange)
    If c.Value <> "" Then
      c.Value = StrConv(c.Value, vbNarrow)
    End If
    Next
End Sub

Sub カナ全()
    Dim reg As Object
    Dim Cell As Range
    Dim Str As String
    Dim Match As Object

    Set reg = CreateObject("VBScript.RegExp")
    reg.Pattern = "[。-゜]+"
    reg.Global = True
    
    For Each Cell In Intersect(Selection, ActiveSheet.UsedRange)

        Str = Cell.Value
        If Str <> "" Then
            Str = StrConv(Str, vbNarrow)

            For Each Match In reg.Execute(Str)
                Str = Replace(Str, Match, StrConv(Match, vbWide), , 1)
            Next
            Cell.Value = Str

        End If
    Next

End Sub

使い方

変換したい範囲を選択してマクロを実行すると対象の文字をコンバートしてくれます。
複数セルの選択や列、シートまるごとも文字コンバート可能です。
数万セルの文字量になると処理に多少時間がかかりますのでしばらくお待ちください。

ショートカットやリボンに割り付けると簡単操作になるのでおすすめです。

ショートカットを定義

スムーズな操作にはショートカットに定義しておくのがおすすめです。
以下のように定義しています。

Private Sub Workbook_Open()
Application.OnKey "+^{F7}", "全角"
Application.OnKey "+^{F8}", "半角"
Application.OnKey "+^{F9}", "カナ全"
End Sub

え!?マクロ無理!というあなたへ

そのまま使うことができるエクセルブックをご用意しています。
note で公開していますので興味がありましたらご覧になってください。
コーヒー1杯、ご馳走してください。

エクセルのド定番処理、「全角統一マクロ」|おしゃれエクセル|wporep|note
エクセルでこんなこと頼まれたことはありませんか? ネットやファイルからコピペしていると全角と半角が混じっているエクセル文書ができあがります。 在るはずの文字列を検索しても出てこない!? よくみたら全角だった。 なんてこともすくなくありません。 そんなごちゃまぜのエクセルがあなたの元に送られてきて ...

 

エクセル 2019(最新 永続版)オンライン版 Win10/mac対応
マイクロソフト

MacとWinで両方使える2ライセンス。
WinのファイルをMacのエクセルでも使えてとても便利。
マクロも動いてとても快適!

Microsoft 365 Personal(最新 1年版)オンラインコード版
マイクロソフト

エクセル以外にもオフィスアプリが必要なかたは、丸ごと詰まったMicrosoft 365