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列昇順で並べる
ーー
上田002555
石垣098085
函館01384
釧路01544
帯広01554
旭川01664
弘前01724
八戸01784
大館01864
釜石01934
塩釜01934
・・・略
鹿児島0993
東京032
大阪062
守口062
豊中062
あとは、ハイフンを入れたい対象データ1行(個)に対し、この表の168行1つづつの市外局番で、先頭からの位置で、それを含んでいないか、総なめにしてチェック。
含んでいたらそこの桁までを市外局番としハイフンをいれ、右から5桁目にもーを入れる。
このコードはとりあえず略。
No.5
- 回答日時:
追記。
ANo.2にもあるように、市外局番一覧は「降順」でソートしておきましょう。
そうすれば「長い方が先に見付かる」ようになります。
降順ソートした一覧の例
01232
01233
01234
0123
0124
0125
012
011
これで「0123456789」を処理すると「012」や「0123」より前に「01234」が見付かり「01234-5-6789」になります。
あと「決め打ち出来て、データの件数が多い市外局番」は「一覧の先頭に置いとく」のが良いです。例えば「東京」「大阪」の「03」「06」など。
一覧の最初の方で見付かる件数が多ければ多いほど、全体の処理速度が向上しますからね。
No.4
- 回答日時:
論理的に完全に正しい位置に"-"を入れるのは不可能です。
以下の市外局番一覧を見てくださいhttp://zatugaku.jp/tel-j.htm
例えば青森市は017、弘前市は0172です。017222****を
017-222-****
0172-22-****
のどちらと見なせばよいでしょう。人が見ても分かりませんよね。
データ中の市外局番がある程度限られるなら、市外局番リストを作成しておいて、VBAもしくは関数式で「先頭n文字がリストに合致したら」という処理をすることは可能かもしれませんが…
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の電話帳みたいな冊子から「全件、手入力」になるかも(根性が必要)
No.2
- 回答日時:
市外局番はいろいろあって大変ですよね。
1.市外局番リストを別途用意して、現在あるリストと比較してやりますした。
この場合、桁数が多いパターンから検索していかないと、
053-XXX
0531-XXX
という形式があった場合に、0531XXXという電話番号を誤って判定します。
#市外局番のリストは、NTT東西のサイトにあります。
2.その次に、後ろ4桁の左に、「-」を付記する。
数年前に、これと似た作業をやった記憶があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセルについて 6 2022/11/29 14:07
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Yahoo!メール Yahooメールにログインできません 2 2022/12/12 07:46
- その他(Microsoft Office) エクセルで1行の長いデータを指定の桁数で分割する方法が知りたいです。 4 2022/05/20 21:55
- iPhone(アイフォーン) web上の電話番号リンクの桁区切りが、iPhoneだと特定電話番号でおかしくなるのを解決したい 1 2023/03/28 14:27
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- その他(セキュリティ) AppleID、パスワードについて教えてください。 今日携帯を触ってる時に何度も、AppleIDのパ 1 2022/04/16 08:27
- 銀行・ネットバンキング・信用金庫 ゆうちょアプリ。電話番号認証できない。 2 2022/06/10 15:59
- 事件・犯罪 警察の違法捜査されました 身内がガサ入れで逮捕されました その際に身内の親に警察が携帯に連絡したそう 7 2023/05/31 09:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
03(市外局番)無しでもFAX...
-
市外局番
-
携帯電話の11桁の番号、どこ...
-
市外局番の使い方がわからない
-
Access2002での電話番号の定型...
-
4桁の電話番号
-
どこの局番?
-
電話番号 3ではじまる 5で...
-
外国人が110番、119番をかけた場合
-
固定電話着信履歴 181 ・・・・...
-
+800 0382113 の電話番号でかか...
-
アメリカのカリフォルニアから...
-
電話をかけるのに、違う番号を...
-
818から始まる電話番号について...
-
電話番号 +817673467911という...
-
81・・・・・から始まる電話...
-
着信拒否の状態について
-
国際電話番号の前の+(プラス...
-
非通知電話をする人の心理・目...
-
電話すぐ切る
おすすめ情報