• ベストアンサー

電話番号のハイフンを追加したい

こんにちは。 過去質問を検索してもわからなかったので質問します。 エクセルで既に電話番号として0333333333と入力されています。 このデータを03-3333-3333のハイフンを入れた状態で 表示させたいのですが、どうしたらよいでしょうか? ちなみに電話番号は東京だけでなく日本全国のデータです。 セルの書式設定→郵便番号ではうまくいきませんでした。 関数でも置換えでも構いませんが、プログラミングはできません。 環境はWin2000、Excel2000です。 よろしくお願いします。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

市外局番の桁数には2、3、4桁があり、携帯やフリーダイヤルも対応するのでしょうか。 市外局番、市内局番の長さを指定するユーザー定義関数を書いてみました。 貼り付けるだけなので大丈夫でしょう。 使い方は、=HyojiTEL(セル,市外局番の長さ,市内局番の長さ) とします。例えば、  市外局番2桁、市内局番4桁なら =HyojiTEL(A1,2,4)  市外局番3桁、市内局番3桁なら =HyojiTEL(A1,3,3)  市外局番4桁、市内局番2桁なら =HyojiTEL(A1,4,2) とします。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに下記コードを貼り付けます。(当方、Excel97です) ↓ここから Public Function HyojiTEL(TEL As String, Shigai As Integer, Shinai As Integer)   If Len(TEL) - (Shigai + Shinai) <> 4 Then     '指定した市外、市内局番以外が4桁でなければエラー     HyojiTEL = "エラー"   Else     '市外、市内局番を指定した桁で分ける     HyojiTEL = Left(TEL, Shigai) & "-" _           & Mid(TEL, Shigai + 1, Shinai) & "-" _           & Right(TEL, Len(TEL) - (Shigai + Shinai))   End If End Function

lehua
質問者

お礼

ご丁寧にありがとうございます。 関数もユーザー定義できるのですね。 勉強になりました。

その他の回答 (6)

  • a999a999
  • ベストアンサー率68% (11/16)
回答No.7

できると思います。 他の方の紹介されていた 番号一覧表を使ってもよければですが。 http://www.scoutnet.or.jp/~yatsu/tel-02.html 最新かどうかは不明です。 どこかに良い一覧があれば 教えて下さい。 それを基に作ります。 地域はある程度限定できませんか。 関東、関西 なるべく小さい方が良いです。 マクロですが簡単です。 良かったら連絡下さい。 電話番号のある列は、何列ですか。

lehua
質問者

お礼

どうもありがとうございます。 解決のメドがたちました。 また何かありましたらアドバイスお願いします。

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

結論から言うと、プログラムが組めても、出来ません。ルール(ロジック)を言って(表現)見てください。簡単には言えないはずです。市外局番は2,3,4桁有るのは日本のルールです。しかし左から2-4桁の数字を取り出して考えて、市外局番が2桁で有るか、3,4桁か言葉で表現できません。すなわちプログラムが組めません。ましてエクセルの関数式や表示形式では、解決しません。残るみちは、市外局番の表(テーブル)データを作るか探すかして利用する事です。その表を引くプログラム技量があれば、解決します。 相当膨大な数でしょう。3千600を越える市区町村の数より少ないかも知れません。そして4桁の市外局番から先に見ていくのがポイントです。市外局番+市内局番が一定桁数でないケースが有れば市外局番+市内局番のテーブル(-付き)が必要です。 -を一旦除いて比較し合致すれば、-入りと置きかえる。 ただ貴殿の電話番号データにはそんなに沢山の市外局番の種類がないのなら、売り物のソフトではないのだから、ちょっとしたプログラムで解決するかも。プログラムは(1)ルール・ロジックを探す(2)テーブルで考えるしかないと思います。テーブルルックアップ関数などひょっとして使って実現するかも。      

lehua
質問者

お礼

アドバイスありがとうございます。 プログラミングできる人にも相談してみようと思います。 ちょっと自力では能力不足で無理そうです。

noname#6248
noname#6248
回答No.4

市外局番の桁数がわからないのかもしれないと思い書きます。 電話番号に対してソートをし、それぞれ手入力をするのが早いと思います。 ソートの説明を書いた部分 http://oshiete1.goo.ne.jp/kotaeru.php3?q=242234 市外局番一覧表 http://www.scoutnet.or.jp/~yatsu/tel-index.html ですかね… 電話番号部分をコピーしてテキストエディタへ貼り付けると作業が多少楽にはなります。 ならび順を元に戻したいのであれば列を一列追加して通し番号をつけておけば 同じ理屈でソートできます… 他にもっといい方法があるかもしれませんけどね…

lehua
質問者

お礼

手入力が早いのかも知れないです。 便利なURLも教えて下さってどうもありがとうございます。

回答No.3

ああ、分かりました。 もう既に0333333333と入力されているものを、 一発で03-3333-3333に変換する方法を聞いたんですね。 失礼しました。

lehua
質問者

お礼

いえいえ、とんでもないです。 回答してくださってありがとうございました。

  • taka_pre
  • ベストアンサー率32% (146/451)
回答No.2

セル内に保管している電話番号が数値項目で、 かつ一律同じ形式に変更するのであれば、 セルの書式設定で「ユーザー定義」を設定すればできると思います。 すでに存在している、ユーザー定義(何でもいいです)を選択し、 種類を000-0000-0000(0は数字のゼロです)で作成し、 セルの書式でそれを選択すればいいはずです。 文字列としている場合は、lehuaさんが試されたとおり、 単純な書式設定では変更できないかもしれません。 まあ、詳しく調べたわけではないので、 どなたかのフォローでもあれば幸いですが・・・。

lehua
質問者

補足

taka_preさん、早速の回答ありがとうございます。 >一律同じ形式に変更するのであれば、 まさにひっかかっているのはココなんです。 市外局番が全国一律であればユーザー定義も可能ですが 長い市外局番地域も含まれているので 一律というわけにもいかず、悩んでいます。 いくら賢いエクセルでも同一セル内でどこが市外局番で。。なんてことは 無理なんでしょうか?

回答No.1

「セルの書式設定→表示形式→文字列」としてやれば、 入力したそのものが表示されるようになりますよ。

lehua
質問者

補足

tomikou0000さん、早速の回答ありがとうございます。 説明が解りにくくて申し訳ないです。 入力したそのものが0333333333なので、教えてくださった操作ですと 変化ナシです。 他に方法がありましたらご指導お願いします。

関連するQ&A