SkillStack Lab 運営者の「スタック」です。
業務で顧客リストや商品データを整理している際、システムから出力された「数字だけのデータ」に後からハイフンを入れたい場面によく遭遇しませんか。
例えば、郵便番号や電話番号が単なる数字の羅列になっていると視認性が悪く、ミスを誘発する原因にもなります。
また、別のシステムに取り込む際に「ハイフンあり」の形式が求められ、大量の修正作業に追われることもあるかもしれません。
「エクセル ハイフンを入れる 関数」と検索して解決策を探しているあなたのために、この記事では、手作業での修正を一切行わず、関数を使ってスマートに解決する方法を完全網羅しました。
単なる見た目の変更だけでなく、データとして活用できる実践的なテクニックをお伝えします。

- TEXT関数を使って郵便番号や携帯電話番号にハイフンを入れる基本手順
- 桁数が複雑に異なる固定電話番号へ正確にハイフンを挿入する応用テクニック
- 関数を使わずに大量のデータを一括処理するフラッシュフィルの活用法
- データの実体を変換する関数と見た目だけ変える表示形式の使い分け
エクセルでハイフンを入れる関数の基礎とTEXT関数
まずは、エクセルでハイフンを入れる際に最も基本的かつ強力なツールである「TEXT関数」の使い方から見ていきましょう。
なぜ手軽な「セルの書式設定」ではなく、あえて「関数」を使うべきなのか、その理由を知ることがデータ管理の第一歩です。
表示形式ではなく関数でハイフンを入れるメリット
エクセルで「1234567」という数字を「123-4567」というハイフン付きの形式で表示させたい場合、大きく分けて2つのアプローチがあります。
- セルの書式設定(表示形式):数値のまま、見た目だけを変える。
- 関数(TEXT関数など):データそのものを文字列に変換する。
画面上で見る分にはどちらも同じ結果に見えますが、データの実体(中身)は大きく異なります。
それぞれの違いを以下の表にまとめました。

| 項目 | 関数 (TEXTなど) | 表示形式 (書式設定) |
|---|---|---|
| 画面上の見た目 | 123-4567 | 123-4567 |
| データの実体 | “123-4567” (文字列) | 1234567 (数値) |
| コピペ時の挙動 | ハイフンが残る | ハイフンが消えて元の数字に戻る場合がある |
| CSV出力 | ハイフン付きで出力される | 設定により数値だけ出力されるリスクが高い |
表示形式はあくまで「見た目の化粧」に過ぎません。
そのため、そのセルをメモ帳やメール本文にコピー&ペーストしたり、CSV形式で保存して基幹システムに取り込もうとしたりすると、せっかく表示させたハイフンが消えて元の数字に戻ってしまうというトラブルが頻発します。
結論:データの受け渡しなら「関数」一択
自分だけで見る表なら表示形式でも構いませんが、データを他者へ渡したりシステム連携を行ったりする場合は、関数を使ってデータそのものを「ハイフン付きの文字列」に変換・確定させる処理が推奨されます。
郵便番号にハイフンを入れるTEXT関数の使い方
郵便番号(7桁)のような「桁数が固定されているデータ」にハイフンを入れるなら、TEXT関数が最も手軽で確実です。
基本構文 =TEXT(値, "表示形式")
例えば、セルA2に「1234567」という郵便番号が入っている場合、以下の数式を入力します。
=TEXT(A2, "000-0000")
この数式の中で指定している "000-0000" がフォーマットのルールです。「0」は「数字が入る場所」を表しており、ハイフンはそのまま文字として挿入されます。
先頭のゼロ落ち対策としても有効
このTEXT関数の優れた点は、先頭のゼロ落ち対策にもなることです。
北海道(060-xxxx)や東北地方の郵便番号のように「0」から始まるデータをエクセルに入力すると、通常は数値として扱われ、先頭の0が削除されて「600001」となってしまいます。
しかし、TEXT関数のフォーマットで "000-0000" と指定しておけば、桁数が足りない部分を自動的にゼロで埋めてくれるため、元データが「600001」であっても、正しく「060-0001」という形式に復元してくれます。
これはREPLACE関数などにはない、TEXT関数独自の強みです。
携帯電話番号にハイフンを表示する数式設定
次に、携帯電話番号です。日本の携帯電話番号は「090」「080」「070」などから始まりますが、これらはすべて「3桁-4桁-4桁」の合計11桁で構成されています。
規則性がはっきりしているため、郵便番号と同じ考え方で対応可能です。
セルA2に「09012345678」が入っている場合の数式は以下の通りです。
=TEXT(A2, "000-0000-0000")
これにより、瞬時に「090-1234-5678」という形式に変換されます。

IP電話にも対応
050から始まるIP電話番号も、携帯電話と同じく「050-xxxx-xxxx」という11桁構成ですので、上記の数式一つで携帯電話とIP電話の両方をカバーできます。
日付の西暦をハイフン区切りにする方法
システムからダウンロードしたCSVデータなどで、「20250101」のように8桁の数値になっている日付データを「2025-01-01」に変換したいケースも多いでしょう。
ここでもTEXT関数が活躍します。
=TEXT(A2, "0000-00-00")
これで見た目は「2025-01-01」になります。
ただし、注意点があります。この状態ではエクセル上は単なる「文字列」として扱われており、日付データ(シリアル値)ではありません。
日付計算をする場合の注意
もし、変換した後に「今日までの日数を計算したい」「曜日を出したい」「ピボットテーブルで月ごとに集計したい」といった日付特有の処理を行う予定がある場合は、TEXT関数だけでは不十分です。
その場合は、以下のように変換した文字列をさらに DATEVALUE 関数などで数値化するか、DATE 関数を使って年・月・日を抽出して再構築する方法がベストです。
=DATE(LEFT(A2,4), MID(A2,5,2), RIGHT(A2,2))
こうすることで、エクセルが正しく「日付」として認識できるデータになります。
特定位置にハイフンを入れるREPLACE関数
ここまでは「数値」を加工するTEXT関数を見てきましたが、社員番号(例:EMP12345)や製品コード(例:ABC999)のようにアルファベットが含まれる「文字列データ」に対しては、TEXT関数の表示形式テクニックは使えません。
この場合はREPLACE関数を使います。
通常、REPLACE関数は「文字を別の文字に置き換える」ためのものですが、引数を工夫することで「文字を消さずに特定の場所に挿入する」という使い方ができます。
挿入のテクニック =REPLACE(文字列, 開始位置, 0, "-") ※第3引数の「文字数」を「0」に設定することが最大のポイントです。これにより、「0文字を置換する=何も削除せずに文字を割り込ませる」という動作になります。
例えば「EMP12345」という社員IDの、「EMP」の直後にハイフンを入れたい(EMP-12345にしたい)場合を考えてみましょう。「EMP」は3文字なので、その次、つまり「4文字目」の位置にハイフンを挿入します。

=REPLACE(A2, 4, 0, "-")
この関数を使えば、文字種別に関係なく、指定した位置に確実にハイフンを挿入することができます。
エクセルでハイフンを入れる関数の応用と一括処理
ここからは、実務で直面する少し難易度の高いケースや、数万件に及ぶ大量のデータを効率よく処理するための応用テクニックについて解説します。
特に日本の固定電話番号への対応は非常に複雑ですが、プロとして知っておきたい解決策があります。
固定電話番号の市外局番に対応したハイフン挿入
「エクセル ハイフンを入れる 関数」で検索される方の中で、最も頭を悩ませるのが固定電話番号の扱いです。
携帯電話が全国一律のフォーマットであるのに対し、日本の固定電話は市外局番の桁数が地域によって異なります。
- 東京・大阪など:03-xxxx-xxxx / 06-xxxx-xxxx (市外局番2桁)
- 横浜・名古屋など:045-xxx-xxxx / 052-xxx-xxxx (市外局番3桁)
- その他地域:0xxxx-x-xxxx (市外局番4桁〜5桁)
(出典:総務省『電話番号に関する制度』)

これらが混在したリストに対して、一律に「000-000-0000」などのフォーマットを適用してしまうと、東京の番号「03-1234-5678」が「031-234-5678」と誤った位置で区切られてしまいます。
これはビジネスデータの品質として大きな問題です。
この問題を関数だけで完璧に解決するのは至難の業ですが、IF関数を使って「全体の桁数」や「主要な市外局番」で条件分岐させることで、ある程度の精度までは自動化できます。
簡易的な条件分岐の例(携帯、東京・大阪、その他に対応) =IF(LEN(A2)=11, TEXT(A2,"000-0000-0000"), IF(OR(LEFT(A2,2)="03", LEFT(A2,2)="06"), TEXT(A2,"00-0000-0000"), TEXT(A2,"000-000-0000")))
この数式のロジックは以下の通りです。
- まず
LEN(A2)=11で11桁の番号(携帯・IP電話)を判定し、「3桁-4桁-4桁」にします。 - 次に
LEFT(A2,2)="03"などで、先頭が03か06なら東京・大阪と判定し、「2桁-4桁-4桁」にします。 - それ以外はすべて標準的な「3桁-3桁-4桁」の形式にします。
これでも4桁以上の市外局番を持つ地域では誤変換が発生しますが、実務上のデータの8割〜9割程度はこのロジックでカバーできるはずです。
不要なハイフンを削除するSUBSTITUTE関数
ここまでは「入れる」話でしたが、逆にシステム連携のために「ハイフンを取り除いて数値のみにしたい」というケースもあります。
この場合はSUBSTITUTE関数が最適です。
=SUBSTITUTE(A2, "-", "")
これは「A2セルのハイフン(-)を探して、空文字(””)に置き換える」、つまり削除するという処理になります。
データクレンジングへの応用
また、ユーザーが手入力したデータでは、「全角ハイフン(-)」や「長音(ー)」、「全角マイナス(−)」などが混在していることがよくあります。
これらをそのままにしていると、VLOOKUP関数などで検索する際にヒットしない原因になります。
その場合は、SUBSTITUTE関数を入れ子(ネスト)にして、あらゆるハイフン類似記号を半角ハイフンに統一するなどの「データクレンジング」を行うと、後の集計作業が劇的に楽になります。
=SUBSTITUTE(SUBSTITUTE(A2, "ー", "-"), "-", "-")
複数のセルをハイフンでつなぐTEXTJOIN関数
「市外局番」「市内局番」「加入者番号」が別々のセル(A2, B2, C2)に入っていて、それをハイフンで繋ぎたい場合もあります。
昔ながらの方法では =A2 & "-" & B2 & "-" & C2 のように「&」演算子を使っていました。
しかし、この方法だと、もしB2セル(建物名など)が空欄だった場合に、ハイフンだけが連続して表示されてしまう(例:東京都–港区)という欠点があります。
そこで、Excel 2019以降やOffice 365を使っているならTEXTJOIN関数の使用を強くおすすめします。
=TEXTJOIN("-", TRUE, A2, B2, C2)
この関数の第2引数を TRUE に設定することで、「空白セルを無視して結合する」ことが可能になります。
これにより、データに欠損があっても余計な記号が入らず、美しいフォーマットを維持できます。

大量データに一括でハイフンを入れるテクニック
数万件、数十万件を超えるような大量のデータに対して、これまで紹介したような複雑な関数を全ての行に入れると、エクセルの再計算処理に時間がかかり、動作が重くなることがあります。
そんな時は、関数以外のモダンな機能を使いましょう。

フラッシュフィル (Flash Fill)
Excel 2013から搭載された、AIが入力パターンを学習して残りのデータを自動入力してくれる機能です。
- B列の先頭(B2)に、A列のデータを加工した理想形(例:090-1234-5678)を手入力します。
- B2セルを選択した状態で、ショートカットキー「Ctrl + E」を押します。
たったこれだけで、関数を一切記述することなく、一瞬で最下行まで同じパターンのデータが埋まります。計算式が残らないためファイルサイズも軽く済みます。
ただし、複雑なパターンのデータではAIが法則を誤認することもあるため、実行後は必ずランダムに数行チェックを行うようにしてください。
Power Query (パワークエリ)
毎月発生する定型業務で、CSVを取り込んでハイフンを入れる作業が必要なら、Power Queryが最強の選択肢です。
「データ」タブの「データの取得と変換」からクエリを作成すれば、元データを一切書き換えることなく、安全かつ高速にハイフン挿入処理を自動化できます。
一度設定を作ってしまえば、翌月からは「更新」ボタンを押すだけで処理が完了します。
100万行を超えるデータでもストレスなくサクサク動くため、ビッグデータ時代の必須スキルと言えるでしょう。
💡 「エクセルでの業務効率化」に限界を感じていませんか?
関数を使ったデータの整形は非常に便利ですが、顧客情報や社内データを「属人化したエクセルファイル」で管理し、毎度手作業で名寄せや修正を行い続けるのは、実はかなりの時間と労力(コスト)がかかります。
「関数やマクロのエラーに怯える日々から抜け出したい」
「誰かが休むと業務が回らない『エクセル属人化』を根本から解消したい」
そう感じたことのある総務・経理・バックオフィス担当者に向けて、元社内SE・現役管理職の視点で「日々の定型業務を劇的に楽にする脱エクセル(SaaS)ツール」を厳選しました。
いきなり会社で稟議を通す必要はありません。時間を無駄にせず業務を効率化したい方は、まずはノーリスクの無料登録や資料請求を活用して、専用ツールの圧倒的な「ラクさ」をご自身の目で確かめてみてください。
\ エクセルの手作業を今日でやめるなら /
エクセルでハイフンを入れる関数の使い分けまとめ
最後に、これまで紹介した手法をどのような状況で使い分けるべきか、一覧表で整理します。

| シーン・目的 | 推奨される方法 | 採用すべき理由 |
|---|---|---|
| 郵便番号・携帯電話 | TEXT関数 | 桁数が固定されており、最も手軽でミスが少ない確実な方法だから。 |
| 社員番号 (文字列) | REPLACE関数 | 数値ではなく文字を含んだデータの、特定位置に強制挿入できるから。 |
| 固定電話 (混在) | IF関数 + TEXT関数 | 完全ではないものの、主要都市と携帯電話を条件分岐でカバーできるから。 |
| ハイフン削除 | SUBSTITUTE関数 | 特定の文字だけを狙い撃ちで削除・置換できるから。 |
| 大量データ・定型業務 | Power Query / フラッシュフィル | 計算コストがかからず動作が軽い。再利用性も高いから。 |
ハイフン一つを入れる作業をとっても、エクセルには「見た目を変えるだけ」の方法から「データを加工する」方法、さらには「自動化ツール」まで多彩なアプローチが用意されています。
ご自身の目的(印刷して見るだけなのか、システムに登録するマスタデータを作るのか)に合わせて、最適な「ハイフンを入れる関数」を選んでみてください。
適切な手法を選ぶことで、日々のデータ整理作業は劇的に効率化されるはずです。
免責事項
本記事で紹介した数式や手法は一般的な環境での動作を確認していますが、すべてのデータパターンへの完全な対応を保証するものではありません。
重要なデータベースの一括更新を行う際は、必ずファイルのバックアップをとってから操作を行うことを強く推奨します。
