Excel で全角・半角を一括変換する 3 つの方法(ASC、JIS、Power Query)
「住所録の電話番号が全角・半角混在で揃っていない」「フリガナ列のカタカナが半角・全角でばらばら」など、Excel のデータで全角・半角が混ざるのは日本でよくある悩みです。本記事では実用的な 3〜4 の解決方法と、それぞれのトレードオフを整理します。
全角・半角とは何か(最初に整理)
- 全角(zenkaku):1 文字が 2 バイト幅相当の文字。日本語のひらがな・カタカナ・漢字、
A1!など - 半角(hankaku):1 文字が 1 バイト幅相当の文字。ASCII、半角カナ
アイウ
文字数のカウントで LEN と LENB の値が違うのはこのため:
=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 の置換機能でも可能。
例:「電話番号の −(全角ハイフン)を -(半角)に」だけしたい場合:
Ctrl + Hで置換ダイアログ- 「検索する文字列」に
−(全角)を入力 - 「置換後の文字列」に
-(半角)を入力 - 「すべて置換」
罠:Excel の置換は「半角と全角を区別」のオプションがあるので、必要に応じてチェックを入れる必要があります(オプションは「オプション」ボタンで展開)。
方法 3:Power Query
大量データや、列ごとに違う変換ルールを当てたい場合は Power Query が便利。
- データタブ → 「テーブルまたは範囲から」
- Power Query エディターで対象列を選択
- 変換タブ → 「フォーマット」 → 「半角に変換」「全角に変換」
// 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-4567 と 123−4567 で混在」
=ASC() で一括半角化が定石。住所のような検索キーになるカラムは半角に統一しておくと、SQL の LIKE 等でヒット率が上がります。
まとめ
- 手軽:
=ASC()/=JIS()の関数 - 特定文字だけ:検索と置換(
Ctrl + H) - 大量・複雑:Power Query
- 再利用したい:VBA マクロ
Excel 外で同様の変換を試したい場合(CSV をテキスト化したものなど)には、本サイトの全角半角変換ツールに貼り付けると Excel と同じ結果が得られます。事前確認や CSV インポート前のテストに使えます。