Excel で全角・半角を一括変換する 3 つの方法(ASC、JIS、Power Query)

約5分

「住所録の電話番号が全角・半角混在で揃っていない」「フリガナ列のカタカナが半角・全角でばらばら」など、Excel のデータで全角・半角が混ざるのは日本でよくある悩みです。本記事では実用的な 3〜4 の解決方法と、それぞれのトレードオフを整理します。

全角・半角とは何か(最初に整理)

  • 全角(zenkaku):1 文字が 2 バイト幅相当の文字。日本語のひらがな・カタカナ・漢字、 など
  • 半角(hankaku):1 文字が 1 バイト幅相当の文字。ASCII、半角カナ

文字数のカウントで LENLENB の値が違うのはこのため:

=LEN("ABC") → 3
=LENB("ABC") → 3(ASCII なので同じ)
=LEN("ABC") → 3
=LENB("ABC") → 6(全角は 2 バイト換算)

方法 1:ASC 関数 / JIS 関数

最もシンプルで Excel の標準機能。

関数動作
=ASC(A1)A1 の 全角を半角に変換(半角カナにも変換される)
=JIS(A1)A1 の 半角を全角に変換

例:

A1: ABC123 アイウ
=ASC(A1) → ABC123 アイウ  (全角英数は半角に、半角カナはそのまま)
=JIS(A1) → ABC123 アイウ  (半角英数は全角に、半角カナは全角カナに)

:ASC は全角カナを半角カナに変換するため、「カタカナだけは全角のまま、英数字だけ半角にしたい」場合に困ります。その場合は次の組み合わせ:

=JIS(ASC(A1))  → 一旦すべて半角に → 一旦すべて全角に(英数も含めて)

これでは「全角英数 + 全角カナ」になります。「半角英数 + 全角カナ」にしたい場合は VBA か Power Query が必要。

方法 2:検索と置換(Ctrl + H)

特定の文字だけを置換するなら、Ctrl + H の置換機能でも可能。

例:「電話番号の (全角ハイフン)を -(半角)に」だけしたい場合:

  1. Ctrl + H で置換ダイアログ
  2. 「検索する文字列」に (全角)を入力
  3. 「置換後の文字列」に -(半角)を入力
  4. 「すべて置換」

:Excel の置換は「半角と全角を区別」のオプションがあるので、必要に応じてチェックを入れる必要があります(オプションは「オプション」ボタンで展開)。

方法 3:Power Query

大量データや、列ごとに違う変換ルールを当てたい場合は Power Query が便利。

  1. データタブ → 「テーブルまたは範囲から」
  2. Power Query エディターで対象列を選択
  3. 変換タブ → 「フォーマット」 → 「半角に変換」「全角に変換」
// Power Query M 言語のコード例
= Table.TransformColumns(変換前, {"電話番号", Text.Lower}, null)

カスタムロジックも書けるため、「数字だけ半角、カタカナは全角」のような複合ルールも実装可能。

方法 4:VBA マクロ

Excel VBA では StrConv 関数で柔軟に変換できる:

Sub ConvertHankaku()
    Dim cell As Range
    For Each cell In Selection
        ' 数字とアルファベットだけ半角に、カタカナは全角に
        cell.Value = StrConv(cell.Value, vbNarrow)  ' 全部半角に
        cell.Value = StrConv(cell.Value, vbWide)    ' 全部全角に
        ' StrConv の引数:vbNarrow=半角、vbWide=全角、vbKatakana=カタカナへ、vbHiragana=ひらがなへ
    Next cell
End Sub

vbNarrow + vbKatakana を組み合わせれば「英数字は半角、カタカナは全角」が実現できます:

cell.Value = StrConv(StrConv(cell.Value, vbNarrow), vbKatakana)

実用の選び方

場面推奨
1 列をシンプルに半角/全角統一したい=ASC() / =JIS()
特定文字だけ置換検索と置換
複数列・大量データ・複合ルールPower Query
繰り返し作業を自動化したいVBA マクロ

よくあるハマりどころ

1. 「変換しても見た目が変わらない」

ASC / JIS は英数字記号と一部のカナにのみ作用します。漢字は元々全角しか存在しないので変換できません。「漢字 の半角」は存在しない。

2. 「電話番号が 0901234567 ではなく 9.01E+09 になる」

これは全角半角の問題ではなく、Excel が数値として解釈しているため。事前にセル書式を「文字列」に変更してから貼り付けるか、'09012345678 のように先頭にシングルクォートを付ける。

3. 「半角カナが文字化けする(CSV 出力時)」

CSV を Shift_JIS で出力した場合、半角カナは保持されます。UTF-8 で出力すると半角カナは UTF-8 のマルチバイト文字として正しく扱われます。受け側のシステムがどちらを期待しているかで使い分け。

4. 「住所録の郵便番号が 123-4567123−4567 で混在」

=ASC() で一括半角化が定石。住所のような検索キーになるカラムは半角に統一しておくと、SQL の LIKE 等でヒット率が上がります。

まとめ

  • 手軽=ASC() / =JIS() の関数
  • 特定文字だけ:検索と置換(Ctrl + H
  • 大量・複雑:Power Query
  • 再利用したい:VBA マクロ

Excel 外で同様の変換を試したい場合(CSV をテキスト化したものなど)には、本サイトの全角半角変換ツールに貼り付けると Excel と同じ結果が得られます。事前確認や CSV インポート前のテストに使えます。