Excelで全角を半角に関数なしで変換|置換・Word・VBAの方法

エクセルで関数を使わずに全角・半角を一括修正する「脱・関数」変換術のアイキャッチ画像。30分の作業を3分に短縮する最適解を提示。

SkillStack Lab 運営者の「スタック」です。

Excelで顧客リストや商品台帳を整理していると、「ABC123」と「ABC123」のように全角・半角が混ざって困ることはありませんか。

検索や照合に使うコード列で表記がそろっていないと、見た目は同じようでも別の文字として扱われ、VLOOKUPやXLOOKUPなどで一致しない原因になることがあります。

関数を使わずに全角・半角を直すなら、変換したい文字によって方法を使い分けるのが安全です。数字やスペースだけなら置換、規則性のあるデータならフラッシュフィル、毎月繰り返すならPower Query、選択範囲を直接変換したいならVBAが候補になります。

私も、単発の修正なのにASC関数用の列を追加して、最後に値貼り付けまで行うのは手間だと感じることがあります。

一方で、「関数を使わない方法なら何でも速い」というわけでもありません。

データ量、変換する文字、作業頻度によって適した方法が変わります。

この記事で分かること
  • 関数なしで全角数字・スペース・記号を半角へ統一する方法
  • フラッシュフィルとWordを使う場合の注意点
  • Power Queryで毎月の表記統一を繰り返す方法
  • VBAで選択範囲を直接半角へ変換する方法
  • 区切り位置やIME設定で誤解しやすいポイント
目次

Excelで全角を半角に関数なしで変換する方法を比較

最初に、目的別の使い分けを確認しておきましょう。

方法向いているケース元データを直接変更繰り返し利用
置換数字・スペース・特定記号
フラッシュフィル規則性のある文字列×
別列へ生成
Word一度だけ文字種をまとめて変更書き戻しが必要×
Power Query毎月同じCSVなどを整形×
結果を別途出力
VBA選択範囲をその場で変換

「数字だけ半角にしたい」のか「全角カタカナも半角カタカナへ変えたい」のかを最初に決めてください。変換範囲を広げすぎると、商品名や氏名など、変えたくなかった文字まで変換する可能性があります。

全角数字だけならCtrl+Hの置換が分かりやすい

「12345」を「12345」のように、数字だけ半角へ統一したいなら、Excel標準の検索と置換がシンプルです。

数字は0~9の10種類なので、それぞれ対応する半角数字へ置き換えます。

  1. 変換するセル範囲を選択します。
  2. Ctrl + Hで「検索と置換」を開きます。
  3. 「検索する文字列」に、「置換後の文字列」に1を入力します。
  4. [すべて置換]を実行します。
  5. 同じ要領で0~9を必要な分だけ置換します。

毎回10回置換するのは手間ですが、一度きりのデータ修正なら、作業列や数式を作らず元の列を直接修正できます。

郵便番号、電話番号、社員コードなどで先頭の0を残す必要がある場合は、変換後にExcelが数値として扱っていないかも確認してください。識別コードは数値ではなく文字列として管理する方が適する場合があります。

全角スペースを半角スペースへ統一する

氏名や住所のデータでは、全角スペースと半角スペースが混在することがあります。

見た目が似ていても別の文字なので、必要に応じて置換します。

  1. Ctrl + Hを押します。
  2. 「検索する文字列」へ全角スペースを1つ入力します。
  3. 「置換後の文字列」へ半角スペースを入力します。
  4. [すべて置換]を実行します。

スペース自体が不要なら、「置換後の文字列」を空欄にして削除することもできます。

ハイフンに似た記号は対象列を限定して置換する

電話番号や郵便番号では、半角ハイフン「-」のほかに「-」「‐」「ー」など似た記号が混ざることがあります。

これらを統一する場合も置換が使えます。

商品名や文章が入る列で「ー」を一律に「-」へ置換すると、「コーヒー」など本来の長音記号まで変わります。電話番号・商品コードなど、置換してよい列だけを選択してください。

置換処理そのものをもっと詳しく自動化したい場合は、Excelの置換を自動化する方法も参考にしてください。

フラッシュフィルなら規則性を見せて変換できる

元データから一定のパターンで変換後の文字列を作りたい場合は、フラッシュフィルも候補です。

フラッシュフィルは、隣接する列へ入力した例から規則性を推測し、残りのデータを補完する機能です。

Excelの隣接列へ変換後のお手本を入力しCtrl+Eでフラッシュフィルを実行する手順
  1. A列に元データを用意します。
  2. B2へ、A2を希望する半角表記へ直した結果を入力します。
  3. 必要に応じて次の行にもお手本を入力します。
  4. B列の対象セルを選び、Ctrl + Eを押します。
  5. 生成された結果を数件確認します。

例えば、「ABC-001」から「ABC-001」のような一定パターンを作りたい場合に試せます。

フラッシュフィルは専用の全角・半角変換機能ではありません。入力例からパターンを推測して静的な値を生成するため、元データが変更されても結果は自動更新されません。また、データのパターンが複数ある場合は結果確認が必要です。

フラッシュフィルはMicrosoft公式でも、入力パターンを認識してデータを補完する機能として案内されています。手動実行は[データ]→[フラッシュフィル]またはCtrl+Eです。詳しくはMicrosoftサポート「Excelでフラッシュフィルを使用する」を確認してください。

Word経由の半角変換は一度きりのテキストデータ向け

Wordのデスクトップ版で「文字種の変換」から「半角」を利用できる環境では、ExcelのデータをWordへコピーして文字種をまとめて変換する方法もあります。

関数用の列を作らずに複数の文字をまとめて変換できるのがメリットです。

  1. Excelで変換したいデータをコピーします。
  2. Wordの新規文書へ貼り付けます。
  3. 貼り付けた文字を選択します。
  4. [ホーム]の[文字種の変換]から[半角]を選びます。
  5. 結果をコピーしてExcelへ戻します。

Word経由は、計算式やExcel固有の書式を保持したまま編集する方法ではありません。数式が入った表や重要な原本をそのまま往復させず、コピーしたテキストデータで試してください。

また、「半角」を選ぶと英数字だけでなくカタカナなども変換対象になる場合があります。

「数字だけ半角にして全角カタカナは残したい」というデータでは、置換など対象を限定できる方法の方が安全です。

「区切り位置」は全角から半角へ変換する機能ではない

CSVなどを扱っていると、見た目は「123」なのにSUM関数で計算できず、セル左上にエラー表示が出ることがあります。

これは「全角・半角」の問題ではなく、半角数字が文字列として保存されているという別の問題である場合があります。

「区切り位置」はテキストを列へ分割するための機能です。利用方法によってデータが再解釈されることはありますが、全角文字を半角へ統一する専用機能ではありません。

「123を123へ変えたい」と「’123’のような文字列を数値123へ直したい」は別の作業です。本記事では前者の文字種統一を扱います。

毎月同じ表記ゆれを直すならPower Query

毎月届くCSVやExcelファイルへ同じ置換を繰り返しているなら、Power Queryを検討する価値があります。

Power Queryでは、データを取り込んだあとに行った「値の置換」などの変換をステップとして保存し、次回の更新時にも同じ処理を再実行できます。

Power QueryでCSVを取り込み値の置換を変換ステップとして保存し次回更新時にも再実行する流れ

例えば、商品コード列について、

  • 全角数字「1」を「1」へ置換
  • 全角数字「2」を「2」へ置換
  • 全角スペースを半角スペースへ置換
  • 指定した全角ハイフンを半角ハイフンへ置換

といった手順を登録しておけば、翌月は元データを入れ替えて更新できます。

Power Queryには、ExcelのASC関数のようにあらゆる対象文字をワンクリックで半角へ変換する標準ボタンはありません。標準機能で行う場合は、変換対象を決めて「値の置換」などを組み合わせます。

高度なMコードを使えば変換ルールをまとめることもできますが、「関数を使わず簡単に」という検索目的なら、まず標準の置換ステップで足りるか確認する方が管理しやすいでしょう。

Power Queryの取得・整形・更新方法を詳しく確認したい場合は、Power Queryの実務での使い方を参考にしてください。

VBAなら選択範囲をその場で半角へ変換できる

「関数用の列を作らず、選択したセルをその場で変更したい」という作業を繰り返すならVBAも候補です。

VBAにはStrConv関数があり、vbNarrowを指定すると、対応する全角文字を半角へ変換できます。

VBAでセルを書き換えるとExcelのUndoで簡単に元へ戻せない場合があります。重要なデータでは、先にファイルをコピーしてから実行してください。

Sub 選択範囲を半角に変換()

    Dim cell As Range

    On Error GoTo ExitHandler
    Application.ScreenUpdating = False

    For Each cell In Selection.Cells

        If Not cell.HasFormula _
           And Not IsError(cell.Value2) _
           And VarType(cell.Value2) = vbString Then

            cell.Value2 = StrConv(CStr(cell.Value2), vbNarrow)

        End If

    Next cell

ExitHandler:
    Application.ScreenUpdating = True

End Sub

このコードでは、選択範囲のうち数式セルを除いた文字列セルだけを変換します。

元記事のように選択範囲のすべてのセルへ無条件で値を書き戻すコードより、数式を誤って値へ変えてしまうリスクを抑えられます。

vbNarrowは英数字だけを選んで変換する機能ではありません。日本語環境では変換可能なカタカナなども半角になるため、氏名・住所・商品名を含む列へ無条件で実行しないでください。

Microsoft Learnでは、StrConvのvbNarrowはワイド文字をナロー文字へ変換する定数として案内されています。詳しくはMicrosoft Learn「StrConv関数」を確認してください。

入力規則のIME設定は「予防の補助」として使う

電話番号、商品コード、メールアドレスなど、最初から半角入力してほしい列では、入力規則の日本語入力設定を利用できる環境があります。

対象セルを選んで[データ]→[データの入力規則]を開き、日本語入力に関する設定が表示される環境では、入力時のIMEモードを指定できます。

ただし、この設定は「全角データが絶対に入らないデータベース制約」と同じものではありません。

入力方法、コピー&ペースト、利用するExcel環境なども考慮し、IME設定だけをデータ品質の保証にしないでください。重要なコード列では、入力後の確認や元システム側の入力ルールも併用します。

Excelの全角・半角変換で方法を選ぶ基準

状況おすすめ
数字だけ半角にしたいCtrl+Hの置換
スペースや特定記号を統一Ctrl+Hの置換
一定パターンで別列を作るフラッシュフィル
一度だけ複数文字を変換Wordをコピーしたデータで試す
毎月同じCSVを整形Power Query
選択範囲を直接変更VBA
半角入力を促したいIME設定を補助的に利用

一度きりの数十~数百件の修正に、いきなりVBAやPower Queryを作る必要はありません。

反対に、毎月同じデータを何千行も修正しているなら、10回置換を毎回繰り返すよりPower Queryなどへ処理を残した方が引き継ぎやすくなります。

スタック

私が実務で重視するのは「一番高度な方法」ではなく、次回も同じ品質で再現でき、後任者にも説明できる方法を選ぶことです。

全角・半角を関数なしで変換するときのよくある質問

Excelに全角を半角へ一括変換する標準ボタンはありますか?

ExcelにはASC関数がありますが、関数を使わず選択範囲をその場で一括半角化する専用ボタンは基本的にありません。対象が数字や特定記号なら置換、規則性があればフラッシュフィル、繰り返し処理ならPower QueryやVBAを使い分けます。

Ctrl+Hだけで全角数字を半角にできますか?

できます。全角の0~9を対応する半角の0~9へ置換します。ただし、カタカナや英字までまとめて変換する方法ではありません。

フラッシュフィルは元データを変更すると自動更新されますか?

自動更新されません。フラッシュフィルは入力例から推測した結果を値として生成します。元データ変更後は必要に応じて再実行してください。

区切り位置で全角数字を半角にできますか?

区切り位置は文字列を列へ分割する機能であり、全角・半角変換専用の機能ではありません。「全角数字を半角へ直す」と「文字列として保存された半角数字を数値へ直す」は分けて考えてください。

Power Queryで全角を半角へ一括変換できますか?

ExcelのASC関数と同じような標準の一括変換ボタンはありません。数字やスペースなど対象文字が決まっている場合は、「値の置換」を変換ステップとして保存して繰り返せます。

VBAなら元の列を直接半角へ変換できますか?

できます。StrConvのvbNarrowを使う方法があります。ただし、変換可能なカタカナなども対象になるため、変換してよい列だけを選び、バックアップを取ってから実行してください。

まとめ|関数なしの全角半角変換は対象と頻度で選ぶ

Excelで全角・半角を統一するとき、必ずASC関数用の作業列を作る必要はありません。

  • 数字・スペース・特定記号ならCtrl+Hの置換
  • 規則性がある変換ならフラッシュフィル
  • 一度だけ複数文字を変換するならWordも候補
  • 毎月同じ表記統一をするならPower Query
  • 元のセルを直接繰り返し変換するならVBA
  • 区切り位置は文字幅変換とは別の機能

まずは「どの文字を半角にするのか」を決め、必要以上に広い範囲を変換しないことが大切です。

置換ルールが増え、「毎月同じ文字を何度も直している」という状態になったら、次は置換処理そのものを自動化してみてください。

毎月届くCSVの結合や表記統一までまとめて自動化したい場合は、Power Queryの実務での使い方も参考にしてください。


次は、仕事で使えるスキルをもう一段積み上げる

SkillStack Labでは、Excel・生成AI・自動化・オンライン学習を、実務で使うことを前提に解説しています。今の課題に近いテーマから次の記事へ進んでみてください。

生成AIを仕事で使いたい

ChatGPTなどを「触ったことがある」から、実際の仕事で使えるレベルへ進みたい方へ。

生成AIの勉強方法・学習順序を見る →

Excel作業を自動化したい

関数だけでは限界を感じてきたら、Power Query・VBA・Pythonなども含めて自動化を考えます。

Excel業務を自動化する方法を見る →

体系的にスキルを学びたい

Excel・VBA・Python・生成AIなどを、動画講座で効率よく学びたい方へ。

社会人向けUdemy講座の選び方を見る →

何から始めるか迷ったら、今の仕事で最も時間がかかっている作業や、身につけたいスキルに近いテーマから選んでください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次