Excelで半角・全角を変換する方法|ASC・JIS関数とカタカナだけ全角に戻す裏技

Excel

「Excelに入力したデータ、全角と半角がバラバラで困る…」

住所録や商品コード、フリガナを扱うとき、全角と半角が混在していると見た目が悪いだけでなく、検索・並べ替え・照合がうまくいきません。

この記事では、ExcelのASC関数・JIS関数を使った変換方法を、「カタカナが半角になってしまう問題」の対処法まで含めて解説します。


スポンサーリンク

まず結論:ASC関数とJIS関数の対応表

ASC関数JIS関数
変換方向全角 → 半角半角 → 全角
数字
アルファベット
カタカナ○(半角カナになる)○(全角カナになる)
スペース
記号対応する文字があるものだけ○対応する文字があるものだけ○
ひらがな×(対象外)×(対象外)
漢字×(対象外)×(対象外)

ポイントは、カタカナも変換対象に含まれることです。

Microsoftの公式ドキュメントでも、JIS関数について「日本語では、文字列内の半角(1バイト)の英数カナ文字を全角(2バイト)の文字に変換します」と説明されています(Microsoft サポート「JIS 関数」)。

ここを知らずにASC関数を使うと、「数字を半角にしたかっただけなのに、フリガナまで半角カナになってしまった」という事故が起きます。対処法は後半で解説します。


ASC関数:全角を半角に変換する

基本の書き方

=ASC(A1)

A1セルの全角文字が半角に変換されます。

変換例

変換前変換後
12345671234567
ABCDABCD
123-4567123-4567
ヤマダ タロウヤマダ タロウ
東京都サンプル区1丁目東京都サンプル区1丁目

4行目に注目してください。カタカナも半角カナに変換されます。全角スペースも半角スペースになります。

一方、漢字とひらがなには半角の対応文字が存在しないため、そのまま残ります。

使える環境の注意点

ASC関数・JIS関数は、日本語などDBCS(2バイト文字セット)言語向けの関数です。英語UIのExcelでは、JIS関数の代わりにDBCS関数が用意されています(Microsoft サポート「DBCS 関数」)。

ただし公式ドキュメントには「この関数の名前および変換する文字は、使用する言語の設定によって異なります」と書かれています。日本語環境で使う限り両者の結果は一致しますが、東アジア言語サポートが有効でない環境では、変換対象の文字自体が存在せず何も起こらないことがあります。

なお、日本語UIのExcelで =DBCS(A1) と入力すると #NAME? エラーになります。名前が違うだけ、と覚えておけば十分です。


JIS関数:半角を全角に変換する

基本の書き方

=JIS(A1)

変換例

変換前変換後
12345671234567
ABCDABCD
123-4567123-4567
ヤマダ タロウヤマダ タロウ
(株)(株)

半角カナで登録された取引先名やフリガナを、全角カナに統一したいときに使います。括弧「( )」のように、対応する全角文字がある記号も変換されます。

なお、半角カナの濁点・半濁点は「カ」+「゙」の2文字で構成されていますが、全角化すると「ガ」1文字に統合されます。文字数(LEN関数の結果)が変わるので、桁数チェックを併用している場合は注意してください。


「対応する文字がないものは変換されない」という原則

ASC関数は「全角文字をすべて半角にする」わけではありません。Microsoftの公式ドキュメントにあるとおり、変換されるのは英数カナ文字と、対応する半角文字を持つ記号だけです。

漢字・ひらがなはもちろん、記号のなかにも半角の対応文字を持たないものが存在します。

とくに注意したいのが、ハイフンやダッシュに見える記号です。見た目がほとんど同じでも、文字としては別物であることがあり、ASC関数を通しても変換されずに残る場合があります。

「ASC関数を使ったのに、一部の電話番号だけ揃わない」というときは、この可能性を疑ってください。

確認方法

対象のセルで次の式を実行し、変換されたかどうかを1文字ずつ確認できます。

=UNICODE(MID(A1,3,1))

同じに見える記号でも、返ってくる数値が違えば別の文字です。違いが判明したら、後述のSUBSTITUTE関数で個別に置き換えます。


変換結果をデータとして確定させる手順

関数はあくまで「別セルに結果を表示する」だけです。元のデータを置き換えるには、値の貼り付けが必要です。

手順

  1. 変換したいデータの隣の列に =ASC(A1)(または =JIS(A1))を入力
  2. 数式を下までコピー(Ctrl + Shift + ↓ → Ctrl + D)
  3. 数式を入力した列全体をコピー(Ctrl + C)
  4. 元の列を選択し、右クリック →「形式を選択して貼り付け」→「値」
  5. 作業用の列を削除

手順4を飛ばして作業列を削除すると、元データが #REF! エラーになります。

値貼り付けのショートカット

Microsoft 365(バージョン2308以降)では、Ctrl + Shift + V で値の貼り付けが一発でできます。2023年8月に追加された比較的新しいショートカットです。

Excel 2019 / 2021 や古いバージョンでは反応しないため、その場合は従来の Ctrl + Alt + V → V → Enter を使ってください。


【本命】英数字は半角、カタカナは全角に統一する

実務で本当に必要になるのは、多くの場合「全部半角」でも「全部全角」でもなく、英数字は半角・カタカナは全角という状態です。

ASC関数だけでは、フリガナまで半角カナになってしまいます。そこでASC関数とPHONETIC関数を組み合わせます

PHONETIC関数を使う理由

PHONETIC関数は本来「ふりがなを取り出す」関数です。

ここで利用するのは、ふりがな情報を持たない文字列を渡すと、その文字列をそのまま返すという挙動です。しかもその際、カタカナは「ふりがなの設定」で指定された文字種(既定は全角カタカナ)で出力されます。

この性質を使って、半角カナだけを全角に戻します。

手順

Step 1|ASC関数で全部半角にする

=ASC(B2)

この時点で、英数字も記号もカタカナも、すべて半角になります。

Step 2|結果を「値」として貼り付ける

この工程は省略できません。 数式のままではPHONETIC関数が正しく動作しないため、必ず一度セルに値として着地させてください。

Step 3|PHONETIC関数でカタカナだけ全角に戻す

=PHONETIC(C2)

英数字・記号は半角のまま、カタカナだけが全角に戻ります。

変換の流れ(例)

元データ: 〒123-4567 サンプル市中央1-2-3 テストビル2F
    ↓ ASC関数
        〒123-4567 サンプル市中央1-2-3 テストビル2F
    ↓ 値として貼り付け → PHONETIC関数
最終形: 〒123-4567 サンプル市中央1-2-3 テストビル2F

全角に戻らないときは「ふりがなの設定」を確認

PHONETIC関数の出力文字種は、セルの「ふりがなの設定」に従います。既定値は全角カタカナですが、これが半角カタカナに設定されていると、PHONETIC関数の結果も半角カタカナのままです。

「手順どおりやったのに全角に戻らない」の原因は、多くの場合これです。

[ホーム]タブ →[フォント]グループ →[ふりがなの表示/非表示]の▼ →[ふりがなの設定]→[ふりがな]タブで[全角カタカナ]を選択してください。

PHONETIC関数はセル範囲をまとめて指定できない

ASC関数は =ASC(B2:B21) のようにセル範囲をまとめて指定できますが、PHONETIC関数にセル範囲を指定すると、範囲内の文字列が連結されて取り出されます。

PHONETIC関数は1セルずつ指定して、下方向にコピーしてください。

本番適用の前に、数行で試す

PHONETIC関数はデータの入力経緯によって挙動が変わることがあります。いきなり全件に適用せず、まず数行で結果を確認してから全体に広げてください。

この一連の手順は窓の杜「いまさら聞けないExcelの使い方講座」でも紹介されています。


実践例:郵便番号・電話番号の統一

郵便番号からハイフンを削除する

=SUBSTITUTE(ASC(A1),"-","")

ASC関数で全角ハイフン「-」を半角「-」に揃えてから削除する、という順序が重要です。

うまく削除されない行がある場合は、前述のとおり別のハイフン類似記号が使われている可能性があります。その文字を直接コピーして、SUBSTITUTE関数を追加してください。

電話番号を半角数字のみにする

=SUBSTITUTE(SUBSTITUTE(ASC(A1),"-","")," ","")

ハイフンと半角スペースを削除します。全角スペースはASC関数の段階で半角スペースになっているため、これで両方に対応できます。

変換が必要なセルを見つける

変換前に、どのセルに全角が含まれるかを洗い出せます。

=IF(A1=ASC(A1),"変換不要","要変換")

Excelの = 演算子は全角と半角を区別するため、この判定は正しく機能します。

ただし、漢字やひらがなだけのセルも「変換不要」と表示されます。これらはASC関数の対象外なので判定としては正しいのですが、「半角のみ」というラベルにすると誤解を招くため、上記のような表記にしておくと安全です。

この列でフィルターをかければ、要修正のデータだけを抽出できます。


VBAで一括変換する

同じ作業を繰り返すなら、マクロにしておくと確実です。VBAでは、ASC/JISではなくStrConv関数を使います。

全角 → 半角

Sub 選択範囲を半角に変換()
    Dim c As Range
    For Each c In Selection
        If Not IsEmpty(c) And Not c.HasFormula Then
            c.Value = StrConv(c.Value, vbNarrow)
        End If
    Next c
End Sub

半角 → 全角

Sub 選択範囲を全角に変換()
    Dim c As Range
    For Each c In Selection
        If Not IsEmpty(c) And Not c.HasFormula Then
            c.Value = StrConv(c.Value, vbWide)
        End If
    Next c
End Sub

vbNarrow が半角、vbWide が全角です。StrConv関数の動作もASC/JIS関数と同じで、カタカナも変換対象になります。

マクロは元データを直接書き換えます。実行前に必ずブックのコピーを取ってください。 マクロによる変更はCtrl + Zで元に戻せません。


Power Queryで変換したい場合

Power Queryでの前処理を検討する人もいますが、Power Queryには全角・半角を変換する標準関数がありません。

自作で対応する場合、主に2つのアプローチがあります。

  • 対応表方式:全角と半角の対応表を別テーブルとして用意し、List.AccumulateText.Replace を組み合わせて置換する
  • 文字コード演算方式:全角と半角の文字コードの差を利用して変換するカスタム関数を作る

いずれにせよカスタム関数の自作が前提になるため、単純な全半角変換が目的なら、素直にASC関数・JIS関数を使うほうが速いです。 Power Queryは「定期更新されるデータの取り込みフローに変換処理を組み込みたい」場合の選択肢と考えてください。


Wordの「文字種の変換」を使う方法

Excelの関数では英数字とカタカナを分けて変換できないため、Word側で処理したいケースもあります。

手順

  1. Excelのデータをコピーし、Wordに貼り付ける
  2. 変換したい範囲を選択(全体ならCtrl + A)
  3. 「ホーム」タブ →「フォント」グループ →「文字種の変換」(Aaのアイコン) をクリック
  4. 「全角」または「半角」を選択
  5. Excelに戻り、「形式を選択して貼り付け」→「テキスト」で貼り付ける

「文字種の変換」はリボンの「ホーム」タブにあります。右クリックメニューには表示されないので注意してください。

ただし、Wordの「半角」変換も英数字・記号・カタカナをまとめて半角にするという点はExcelのASC関数と同じです。「数字だけ半角にしたい」という用途では、Wordの「高度な検索」で文字種を絞り込む必要があります。


「検索と置換」では全半角変換できない

Excelの「検索と置換」(Ctrl + H)に全半角を一括変換する機能はありません。

ただし検索オプションに 「半角と全角を区別する」 というチェックボックスがあります。

  • チェックあり → 「123」と「123」を別物として扱う
  • チェックなし → 同じものとして扱う

「置換したいのに一部しかヒットしない」「意図しないセルまで置換された」というときは、まずこのチェックの状態を確認してください。

なお、1文字ずつ(「0」→「0」、「1」→「1」…)置換していけば数字の変換自体は可能ですが、10回の操作が必要で、ASC関数を使うほうが確実です。


よくある失敗と対策

関数のまま放置してしまう

値の貼り付けをせずに作業列を削除すると、#REF! エラーになります。必ず「形式を選択して貼り付け → 値」を挟んでください。

フリガナが半角カナになってしまった

ASC関数の仕様どおりの動作です。前述のASC+PHONETICの手順で戻せます。

PHONETIC関数で全角に戻らない

「ふりがなの設定」が半角カタカナになっていないか確認してください。

一部のセルだけ変換されない

対応する半角文字を持たない記号が含まれている可能性があります。UNICODE関数で文字を特定し、SUBSTITUTE関数で個別に置き換えてください。

桁数チェックが通らなくなった

半角カナの濁点は全角化で1文字に統合されるため、文字数が変わります。LEN関数を使った検証ロジックがある場合は、変換後の基準に合わせて見直してください。

バックアップを取らずに実行した

とくにマクロは元に戻せません。顧客データ・住所録など重要なデータを扱う前には、必ずファイルを複製してから作業してください。


まとめ

  • ASC関数:全角 → 半角。英数字・記号・スペースに加え、カタカナも半角カナになる
  • JIS関数:半角 → 全角。半角カナも全角カナになる
  • ひらがな・漢字、対応する文字を持たない記号は変換されない
  • 「英数字は半角・カタカナは全角」に揃えたいなら、ASC関数 → 値として貼り付け → PHONETIC関数
  • 戻らないときは「ふりがなの設定」を確認
  • 繰り返し作業はVBAの StrConv(文字列, vbNarrow / vbWide) で自動化
  • Power Queryには標準関数がないため、単純な変換なら関数を使うほうが速い

「全部半角にする」よりも、どの文字種をどちらに揃えたいのかを先に決めることが、データ整理の失敗を防ぐ一番の近道です。


タイトルとURLをコピーしました