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種類なので、それぞれ対応する半角数字へ置き換えます。
- 変換するセル範囲を選択します。
Ctrl + Hで「検索と置換」を開きます。- 「検索する文字列」に
1、「置換後の文字列」に1を入力します。 - [すべて置換]を実行します。
- 同じ要領で0~9を必要な分だけ置換します。
毎回10回置換するのは手間ですが、一度きりのデータ修正なら、作業列や数式を作らず元の列を直接修正できます。
郵便番号、電話番号、社員コードなどで先頭の0を残す必要がある場合は、変換後にExcelが数値として扱っていないかも確認してください。識別コードは数値ではなく文字列として管理する方が適する場合があります。
全角スペースを半角スペースへ統一する
氏名や住所のデータでは、全角スペースと半角スペースが混在することがあります。
見た目が似ていても別の文字なので、必要に応じて置換します。
Ctrl + Hを押します。- 「検索する文字列」へ全角スペースを1つ入力します。
- 「置換後の文字列」へ半角スペースを入力します。
- [すべて置換]を実行します。
スペース自体が不要なら、「置換後の文字列」を空欄にして削除することもできます。
ハイフンに似た記号は対象列を限定して置換する
電話番号や郵便番号では、半角ハイフン「-」のほかに「-」「‐」「ー」など似た記号が混ざることがあります。
これらを統一する場合も置換が使えます。
商品名や文章が入る列で「ー」を一律に「-」へ置換すると、「コーヒー」など本来の長音記号まで変わります。電話番号・商品コードなど、置換してよい列だけを選択してください。
置換処理そのものをもっと詳しく自動化したい場合は、Excelの置換を自動化する方法も参考にしてください。
フラッシュフィルなら規則性を見せて変換できる
元データから一定のパターンで変換後の文字列を作りたい場合は、フラッシュフィルも候補です。
フラッシュフィルは、隣接する列へ入力した例から規則性を推測し、残りのデータを補完する機能です。

- A列に元データを用意します。
- B2へ、A2を希望する半角表記へ直した結果を入力します。
- 必要に応じて次の行にもお手本を入力します。
- B列の対象セルを選び、
Ctrl + Eを押します。 - 生成された結果を数件確認します。
例えば、「ABC-001」から「ABC-001」のような一定パターンを作りたい場合に試せます。
フラッシュフィルは専用の全角・半角変換機能ではありません。入力例からパターンを推測して静的な値を生成するため、元データが変更されても結果は自動更新されません。また、データのパターンが複数ある場合は結果確認が必要です。
Word経由の半角変換は一度きりのテキストデータ向け
Wordのデスクトップ版で「文字種の変換」から「半角」を利用できる環境では、ExcelのデータをWordへコピーして文字種をまとめて変換する方法もあります。
関数用の列を作らずに複数の文字をまとめて変換できるのがメリットです。
- Excelで変換したいデータをコピーします。
- Wordの新規文書へ貼り付けます。
- 貼り付けた文字を選択します。
- [ホーム]の[文字種の変換]から[半角]を選びます。
- 結果をコピーしてExcelへ戻します。
Word経由は、計算式やExcel固有の書式を保持したまま編集する方法ではありません。数式が入った表や重要な原本をそのまま往復させず、コピーしたテキストデータで試してください。
また、「半角」を選ぶと英数字だけでなくカタカナなども変換対象になる場合があります。
「数字だけ半角にして全角カタカナは残したい」というデータでは、置換など対象を限定できる方法の方が安全です。
「区切り位置」は全角から半角へ変換する機能ではない
CSVなどを扱っていると、見た目は「123」なのにSUM関数で計算できず、セル左上にエラー表示が出ることがあります。
これは「全角・半角」の問題ではなく、半角数字が文字列として保存されているという別の問題である場合があります。
「区切り位置」はテキストを列へ分割するための機能です。利用方法によってデータが再解釈されることはありますが、全角文字を半角へ統一する専用機能ではありません。
「123を123へ変えたい」と「’123’のような文字列を数値123へ直したい」は別の作業です。本記事では前者の文字種統一を扱います。
毎月同じ表記ゆれを直すならPower Query
毎月届くCSVやExcelファイルへ同じ置換を繰り返しているなら、Power Queryを検討する価値があります。
Power Queryでは、データを取り込んだあとに行った「値の置換」などの変換をステップとして保存し、次回の更新時にも同じ処理を再実行できます。

例えば、商品コード列について、
- 全角数字「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は英数字だけを選んで変換する機能ではありません。日本語環境では変換可能なカタカナなども半角になるため、氏名・住所・商品名を含む列へ無条件で実行しないでください。
入力規則のIME設定は「予防の補助」として使う
電話番号、商品コード、メールアドレスなど、最初から半角入力してほしい列では、入力規則の日本語入力設定を利用できる環境があります。
対象セルを選んで[データ]→[データの入力規則]を開き、日本語入力に関する設定が表示される環境では、入力時のIMEモードを指定できます。
ただし、この設定は「全角データが絶対に入らないデータベース制約」と同じものではありません。
入力方法、コピー&ペースト、利用するExcel環境なども考慮し、IME設定だけをデータ品質の保証にしないでください。重要なコード列では、入力後の確認や元システム側の入力ルールも併用します。
Excelの全角・半角変換で方法を選ぶ基準
| 状況 | おすすめ |
|---|---|
| 数字だけ半角にしたい | Ctrl+Hの置換 |
| スペースや特定記号を統一 | Ctrl+Hの置換 |
| 一定パターンで別列を作る | フラッシュフィル |
| 一度だけ複数文字を変換 | Wordをコピーしたデータで試す |
| 毎月同じCSVを整形 | Power Query |
| 選択範囲を直接変更 | VBA |
| 半角入力を促したい | IME設定を補助的に利用 |
一度きりの数十~数百件の修正に、いきなりVBAやPower Queryを作る必要はありません。
反対に、毎月同じデータを何千行も修正しているなら、10回置換を毎回繰り返すよりPower Queryなどへ処理を残した方が引き継ぎやすくなります。
スタック私が実務で重視するのは「一番高度な方法」ではなく、次回も同じ品質で再現でき、後任者にも説明できる方法を選ぶことです。
全角・半角を関数なしで変換するときのよくある質問
まとめ|関数なしの全角半角変換は対象と頻度で選ぶ
Excelで全角・半角を統一するとき、必ずASC関数用の作業列を作る必要はありません。
- 数字・スペース・特定記号ならCtrl+Hの置換
- 規則性がある変換ならフラッシュフィル
- 一度だけ複数文字を変換するならWordも候補
- 毎月同じ表記統一をするならPower Query
- 元のセルを直接繰り返し変換するならVBA
- 区切り位置は文字幅変換とは別の機能
まずは「どの文字を半角にするのか」を決め、必要以上に広い範囲を変換しないことが大切です。
置換ルールが増え、「毎月同じ文字を何度も直している」という状態になったら、次は置換処理そのものを自動化してみてください。
毎月届くCSVの結合や表記統一までまとめて自動化したい場合は、Power Queryの実務での使い方も参考にしてください。








