• ベストアンサー

エクセルで電話番号にハイフンを入れるには?

教えて下さい。 エクセルで電話番号にハイフンを入れたいと思ってます。 市外局番や間の桁数が違うのですが、いい方法を教えて下さい。 例) 092***1111 → 092-***-1111 03****3222 → 03-****-3222 0999**0000 → 0999-**-0000 01234*2222 → 01234-*-2222 という感じです。 いい方法があれば教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

#4,#5をヒントにVBAで市外局番表をエクセルシートに作ってみました。 とりあえず報告。何かの参考になれば。 しかし中にはデータとして旧い(改定前)ようなのを見つけましたが。 ’--- 全国'http://zatugaku.jp/tel-j.htmの表をエクセルSheet1にコピー 'Sheet1第1行の見出し行を削除 'Sheet1柏のデータ全角スペースいれ(一部修正) 'Sheet1柏の直下のA,B列をDeleteで空白にする。 'Sheet1柏の直下のA,B列セル結合を解く 'Sheet2の書式を文字列に事前に設定する '下記を実行 '-- Sub test01() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") j = 1 '--- For k = 2 To 8 Step 2 i = 1 Do While sh1.Cells(i, k) <> "" s = sh1.Cells(i, k) r = Split(s, " ") sh2.Cells(j, "A") = r(0) sh2.Cells(j, "B") = r(1) j = j + 1 i = i + 1 Loop Next k '--- End Sub その後 'C列に=Len(B1)を入れて下方向に式を複写 'A1:C165を、C列降順,B列昇順で並べる ーー 上田 00255 5 石垣 09808 5 函館 0138 4 釧路 0154 4 帯広 0155 4 旭川 0166 4 弘前 0172 4 八戸 0178 4 大館 0186 4 釜石 0193 4 塩釜 0193 4 ・・・略 鹿児島 099 3 東京 03 2 大阪 06 2 守口 06 2 豊中 06 2 あとは、ハイフンを入れたい対象データ1行(個)に対し、この表の168行1つづつの市外局番で、先頭からの位置で、それを含んでいないか、総なめにしてチェック。 含んでいたらそこの桁までを市外局番としハイフンをいれ、右から5桁目にもーを入れる。 このコードはとりあえず略。

tantan45
質問者

お礼

回答有難うございます。 今からしてみようと思います。

その他の回答 (5)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.5

追記。 ANo.2にもあるように、市外局番一覧は「降順」でソートしておきましょう。 そうすれば「長い方が先に見付かる」ようになります。 降順ソートした一覧の例 01232 01233 01234 0123 0124 0125 012 011 これで「0123456789」を処理すると「012」や「0123」より前に「01234」が見付かり「01234-5-6789」になります。 あと「決め打ち出来て、データの件数が多い市外局番」は「一覧の先頭に置いとく」のが良いです。例えば「東京」「大阪」の「03」「06」など。 一覧の最初の方で見付かる件数が多ければ多いほど、全体の処理速度が向上しますからね。

tantan45
質問者

お礼

風邪で御礼が遅くなりましたが、chie65536さんのアドバイスを 努力と根性で頑張って試してみます。回答有難うございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

論理的に完全に正しい位置に"-"を入れるのは不可能です。以下の市外局番一覧を見てください http://zatugaku.jp/tel-j.htm 例えば青森市は017、弘前市は0172です。017222****を 017-222-**** 0172-22-**** のどちらと見なせばよいでしょう。人が見ても分かりませんよね。 データ中の市外局番がある程度限られるなら、市外局番リストを作成しておいて、VBAもしくは関数式で「先頭n文字がリストに合致したら」という処理をすることは可能かもしれませんが…

tantan45
質問者

お礼

回答有難うございます。 完全にとは難しいかもしれませんが、 頑張ってみます。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

やるとしたら結構大変です。 必要な物 ・市外局番一覧表 ・VBAプログラム知識 ・努力と根性 方法 以下のプログラムをVBAマクロで作って下さい(努力が必要) 1.前6桁と後4桁に分離する。  「<元データ>」は「必ず10桁」になってる事  前6桁は「=left(<元データ>,6)」で  後4桁は「=right(<元データ>,4)」で 2.前6桁の先頭が、市外局番一覧表に一致する物を検索し、それを市外局番にする。  市外局番一覧表を1件目から順に見て行く  if文で「feft(<前6桁>,len(<市外局番>)) = <市外局番>」が成り立てば「前6桁の先頭が、市外局番に一致」として検索終了  市外局番一覧表を全件探して一致しなければ、不一致として検索終了 3.前6桁から市外局番を除いた番号を市内局番にする。  市内局番は「=right(<前6桁>,6-len(<市外局番>))」で 4.市外局番、市内局番、後4桁をハイフンで繋ぐ  「=<市外局番> & "-" & <市内局番> & "-" & <後4桁>」で 5.全件繰り返し  電話番号が無くなるまで上記1~4を繰り返します なお「市外局番一覧表」は、電子化した物が無いかも知れません。下手するとNTTの電話帳みたいな冊子から「全件、手入力」になるかも(根性が必要)

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.2

市外局番はいろいろあって大変ですよね。 1.市外局番リストを別途用意して、現在あるリストと比較してやりますした。 この場合、桁数が多いパターンから検索していかないと、 053-XXX 0531-XXX という形式があった場合に、0531XXXという電話番号を誤って判定します。 #市外局番のリストは、NTT東西のサイトにあります。 2.その次に、後ろ4桁の左に、「-」を付記する。 数年前に、これと似た作業をやった記憶があります。

tantan45
質問者

お礼

回答有難うございます。 リストは用意できたので 今から頑張ります。

  • dec02
  • ベストアンサー率36% (578/1602)
回答No.1

セル列を5列使えばどうですか? 2列目と4列目に予めハイフンを入れておき、 数字のみ入力します。 ENTERキーの代わりに矢印キーでセル移動。 もちろん罫線は1つのセルのように。 でなきゃ、表示形式を文字列にして、 テンキーでそのまんまでしょう。

tantan45
質問者

お礼

回答有難うございます。 セルは増やせないので 出来ないときは諦めて文字列テンキーしかないですね。 頑張ります。

関連するQ&A

  • エクセルで電話番号にハイフンを入れるには?

    はじめまして、表題の通りですが、なかなか難しくてうまく解決できませんので、ここで質問させていただきます。 電話番号に半角のハイフン(-)を入れて見やすくしたいと考えています。 電話番号には090などで始まる携帯の番号、大阪のように06で始まる番号、京都のように075で始まる番号、西宮市のように0798で始まる番号といろいろ入力されています。それぞれの市外局番の後にハイフンを入れて、残りの番号が8桁なら4桁+ハイフン+4桁、7桁なら3桁+4桁、6桁なら2桁+ハイフン+4桁のようにハイフンを入れていくにはどうしたらよいでしょうか? (例) 09012345678→090-1234-5678 0612345678→06-1234-5678 0751234567→075-123-4567 0798123456→0798-12-3456

  • 電話番号にハイフンを入れることはできますか?

    ある個人情報データベースの中の電話番号はハイフンなしで存在しています。 このデータベースを複製して、複製するときにはハイフン有りの状態にするのですが、毎回市外局番を調べて手入力で作業を行っています。これがとても面倒なので作業を簡易化できないかと考えていますが、どうすればいいものやら…。 ちなみにデータベースはCSVでダウンロードしてエクセルで編集しています。 なにかいい方法はありませんでしょうか。

  • 電話番号の適正位置に「ー」を表示したい

    こんにちは。 システムの入替に伴い、顧客のデータを移行しようとしています。 その中で電話番号の項目があるのですが、現システムでは ハイフンを表示しない形式で登録されています。 新システムのDBではハイフン付で登録しなければならないのですが、 市外局番・市内局番の桁数が地域によって異なるため、 ハイフンで区切る適正位置がわからず困っています。 ネットから市外局番一覧を入手したのですが、ExcelのVlookupで 突合させるとニアリーイコールのものを引っ張ってしまい、 上手にセットすることができません。 どなたか良い方法や変換ソフトなどをご存知の方がいらっしゃったら教えてください。よろしくお願いします。

  • 電話番号をハイフンで3つに分割したい

    当方、Excel2000または2003環境です。 電話番号をハイフンで区切って3分割し、それぞれ別のセルに代入したいと考えています。 A列 電話番号(BB-CCCC-DDDD) B列 市外局番(BB部分) C列 2番目(CCCC部分) D列 3番目(DDDD部分) 固定電話、携帯電話、都道府県も異なることから、桁数がバラバラで困っております。 皆様のお知恵をお貸しください。 なにとぞ、よろしくお願いします。

  • 電話番号について

    電話番号にあるカッコ()やハイフン - についての質問です。 カッコやハイフンにはどんな意味があるのでしょうか? 例1)03-xxxx-yyyy 例2)(03)xxxx-yyyy 例3)03-(xxxx)-yyyy 察するにその理由は市外局番と市内局番と国際電話の場合は国番号を分かりやすく別けるためのものくらいしか思いつきません。 もしそれが理由ならなぜ電話番号の記入欄にすでにカッコが用意されていてしかもハイフンは用意されていないのか 見やすくするためつまり表示のためであるとしたらなぜ書くためのところにすでにカッコがあるのか 少なくとも例1~3をどれもよく見かけるくらい決まったルールがあるわけじゃなさそうなきがします 以上ですがご説明頂けるのであればその根拠も含めて教えて頂きたいです。

  • Excelの操作法(電話番号のハイフン)

    電話番号のハイフンを自動的に入力する方法はありますか?あったら教えてください。 例 0123456789⇒012-345-6789

  • エクセルで電話番号から市内局番だけを抜き出したいのですが

    エクセルで、「○○-△△-××××」というようにハイフンで区切られた電話番号が入力されたセルに対し 市内局番だけ(または最後の番号だけ)を抜き出したいのですが、そういうことは可能でしょうか? よろしくお願いします。

  • エクセル 電話番号のハイフンを置換後の0表示

    エクセルファイル 電話番号のハイフンを置換後の0表示方法 Excel2007使用 電話番号表示 03-1111-2222 をハイフン無の 0311112222 にしたい。 03-1111-2222 で「-(ハイフン) を 無に置換」 311112222 になってしまう。 オプション「ゼロ値表示」 書式「文字列」 設定済み どうにか 0311112222 に変換したい。 至急教えてください(>_<)

  • エクセル 電話番号に市外局番をつけたい

    エクセルで名簿を作っているのですが、 関数か書式の設定などで 市外局番なしの電話番号に市外局番を入れる簡単な方法ってないでしょうか? 例えば 1234-1234を ↓ 01-2345-6789 もしくは (01)2345-6789 にしたいんです。(可能であればどちらでもOK) 最初の市外局番は全部同じ番号です。 自分なりに調べてやってみた方法としては =01-&A1 と入れられるかな?と思ってやってみましたがうまくいきませんでした。

  • エクセルの名簿で電話番号に市外局番がついていません。

    エクセルの名簿で電話番号に市外局番がついていません。 全部同じ市外局番でいいのですが、まとめて付ける方法はありますか?

専門家に質問してみよう