くまおやぢの雑記帳

50代のオッサンです。気になることを気ままに綴っていきます。最近ではダルマに似てるって言われてます。

Excelで全角、半角を一括変換するマクロを作ってみました

共有ファイルあるある

仕事で使う共有ファイルの場合、いろんな人がいじります。いろいろルールを設けているのですが、性格もスキルも十人十色。また、引継ぎがうまくいってなかったり、伝え方が間違っていたり、受け取り方も人それぞれでなかなかうまくいかない。というより、スキルが低過ぎるのと、スキルアップしようとする意識が低い、要はやる気に欠けていると言ったほうが正解かもしれません。シートの不具合を見つけるたび、いちいち修正しなくちゃならない。忙しい時だとかなりイライラします。

特にイラっとするケース

代表的なイラっとするケースが以下の4つです。今回は1の全角と半角のごちゃ混ぜについて。

  1. 全角と半角がごちゃ混ぜ
  2. 環境依存文字が含まれている
  3. 余計なスペースが文頭、文末隠れてる
  4. セル内改行をしてる

一番許せないのが、会社名とかでアルファベット表記の場合に全角・半角の混在や電話番号、郵便番号、住所の番地等の数字においても全角・半角が混在してる場合。ルールでは【数字、記号は半角で統一する】となってるのに、なぜ全角が存在するんでしょうか?とても理解に苦しみますが、いちいち犯人探しをして指導するのも時間の無駄なので、見つけては修正しています。

関数を使う場合

今までは関数で対応していました。というより、関数しか使えなかっただけですが…

全角→半角(ASC関数)

全角から半角へ変換する場合の関数は、ASC関数を使います。 空白列でASC関数で変換して、元の列へコピペすればOKです。

半角→全角(JIS関数)

半角から全角へ変換する場合は、JIS関数を使います。 こちらも空白列でJIS関数で変換、元の列へコピペでOK。

マクロで一括変換

関数でも問題ないのですが、列が増えてくると結構面倒です。最近VBAをかじり始めたので、それならマクロで一括変換できた方がいいじゃん。てなわけでマクロを作ってみました。アドイン登録しておけば、範囲を選択 → Alt → テンキーで一括変換できるので時間短縮できるし、何しろ仕事できそうに見えるだろうということで。

全角→半角

変換したいセル範囲を指定し、以下のコードを実行します。

'選択した範囲を半角変換
Dim A As Range
    For Each A In Selection
        A = StrConv(A, vbNarrow)
    Next A
End Sub
全角→半角、ただし ~ (チルダ)は全角のまま

要望があったので追加しました。変換したいセル範囲を指定し、以下のコードを実行します。

一旦半角になった ~(チルダ)を Replace で戻しています。

'選択した範囲を半角変換
Dim A As Range
    For Each A In Selection
        A = StrConv(A, vbNarrow)
        A = Replace(A, "~","~")
    Next A
End Sub
半角→全角

変換したいセル範囲を指定し、以下のコードを実行します。

'選択した範囲を全角変換
Dim A As Range
    For Each A In Selection
        A = StrConv(A, vbWide)
    Next A
End Sub




【Excel VBA◆素人自作マクロ】全角を半角に、半角を全角に変換するマクロ

手でやらなくてもいい作業は、どんどんパソコンでやりましょう。もしよかったらコピペして使ってみてください。はい、これでまた仕事はかどる楽できる。徹底的に手抜きしましょう。