• ベストアンサー

電話番号の分割

上司に電話番号を入力したエクセルシートを渡され 1234567890 09012345678 0501234567 ... これらを市外局番と次の番号と最後の番号に分けて表示するように言われました。 上で言うと              b列  c列 d列 1234-56-7890なので1234  56 7890 090-1234-5678なので090 1234 5678 050-123-4567なので050  123 4567というふうに a列にはハイフンの入ってない電話番号が入力されてます。 自分で考えたことは電話番号のa列のデータにハイフンを入力していって b列はLEFT関数とFIND関数で求めてc列ができなくて d列はたぶんすべて4桁なのでRIGHT関数でしようかと 思いましたがc列の求め方がわからず、できないままで... もっと簡単に??できる方法はないかと思いました。よろしくお願いしますm(__)m

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

  • ベストアンサー
回答No.2

A列の”1234567890”を手作業で”1234-56-7890”に変更して、それに対してC列を求めると言うことでしょうか? 少し長いですが、 =MID(A2, FIND("-", A2) + 1, FIND("-", A2, FIND("-", A2) + 1) - FIND("-", A2) - 1) で求めることができます。 ハイフン位置を別の列に先に求めておくともっと簡素にできると思いますが(列幅は0にしておく)。

lionmayumi
質問者

お礼

ありがとうございますm(__)m できました~~

その他の回答 (4)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.5

#4のmshr1962です。すみません。 #4のB1の式にミスがありました訂正します。 先頭が0の場合に0が取れる。 後方に該当する数字があると異なった数値を返す。 B1=RIGHT("0"&SUMPRODUCT((SEARCH(Sheet2!$A$2:$A$4,A1&Sheet2!$A$2:$A$4,1)))*(Sheet2!$A$2:$A$4)),4)

lionmayumi
質問者

お礼

ありがとうございます~しかし、エラーがでてできません。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

Sheet2に、このような対応表を作成 __A________B_______ 1_市外局番__次列桁数 2_1234______2 3_090_______4 4_050_______3 ("_"は桁あわせの為ですので無視してください。) 1234567890がA1として B1=SUMPRODUCT(NOT(ISERROR(SEARCH(Sheet2!$A$2:$A$4,A1,1)))*(Sheet2!$A$2:$A$4))&"" C1=MID(A1,LEN(B1)+1,VLOOKUP(B1,Sheet2!$A$2:$B$4,2,FALSE)) D1=MID(A1,LEN(B1&C1)+1,LEN(A1))

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.3

入力済みのデータに対して1回だけやるのでしたら、A列を選択し、データ→区切り位置で、BCDに分割できます。 この際のポイントは、 ・区切り文字は「-」 ・データ形式は「文字列」 ・表示先は「B列」 とすることです。 頑張ってくださいヽ(^。^)ノ

lionmayumi
質問者

お礼

なんと簡単にできるのですね\(◎o◎)/! ありがとうございました~

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

> c列の求め方がわからず、できないままで... 1234567890→12-3456-7890 1234567890→123-456-7890 1234567890→1234-56-7890 これはExcel単体の機能では判断できません。 総務省 - 市外局番の一覧 http://www.soumu.go.jp/joho_tsusin/top/tel_number/shigai_list.html のような表を持ったシートを使って、 ・市内局番は1~4桁。 ・下4桁は番号。 の条件で、上手い事見つける処理が必要です。 ABCD-E-FGHIと見なして、ABCDがマッチするかどうか検索。 ABC-DE-FGHIと見なして、ABCがマッチするかどうか検索。 AB-CDE-FGHIと見なして、ABがマッチするかどうか検索。 A-BCDE-FGHIと見なして、ABがマッチするかどうか検索。 と処理する事になりますから、A列に元のデータが入っているとして、 B1:=LEFT(A1,4) C1:=LEFT(A1,3) D1:=LEFT(A1,2) E1:=LEFT(A1,1) F1:=ISERR(VLOOKUP(B1,<市外局番表>,1,FALSE)) G1:=ISERR(VLOOKUP(C1,<市外局番表>,1,FALSE)) H1:= I1:= J1:=IF(F1がTRUE,市外局番は4桁,IF(G1がTRUE,市外局番は3桁… など。 VBAを使うとスッキリするかも。 -- 番号は、頭の0を取って、 ABCDEFGHI みたいな書き方が慣例っぽいですね。 市内局番1桁って、ちょっと懐かしいかも。

参考URL:
http://www.soumu.go.jp/joho_tsusin/top/tel_number/shigai_list.html

関連するQ&A