
はじめまして、表題の通りですが、なかなか難しくてうまく解決できませんので、ここで質問させていただきます。
電話番号に半角のハイフン(-)を入れて見やすくしたいと考えています。
電話番号には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
No.1ベストアンサー
- 回答日時:
これはちょっと難解ですね。
とりあえず市外局番の一覧を作らなければなりません。まず、下記のURLにアクセスしてください。
<市外局番の一覧>
http://www.soumu.go.jp/joho_tsusin/top/tel_numbe …
ブラウザでこのページを開いた状態で、
「編集」>「全て選択」
「編集」>「コピー」
でページをコピーします。
そして、エクセルのSheet2(と仮にします)のA1セルを選択し、「編集」>「貼り付け」でブラウザの内容を貼り付けます。
よけいな行(1~21行目)を削除し、さらにA列とB列を削除します。「市外局番の一覧」という文字も図形として入っているので選択して削除します。一番下のデータ(593行目辺り)の下20行くらいもまとめて削除します。(矢印みたいな記号は右クリック>切り取り で消してください)
これでA列に全国の市外局番の一覧から頭の0を抜いた表ができます。しかし、これには携帯やIP電話の市外局番が入ってないので、一番下の行の下に、以下を追加します。
90
80
70
50
これで市外局番一覧はできあがりです。
ここから先は関数ではしんどいのでマクロを作りました。
Alt+F11でVBAの画面を開き、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。
その際、注釈として入れている箇所(シート名、列名)は、実際のシート構成にあわせて書き換えてください。このマクロではA列の電話番号を変換してA列に書き込む(つまりA列を上書き)するようになっていますが、念のために列を挿入して、B列に変換結果を書き込むようにもできます。
Sub 電話番号変換()
Dim WS1 As Worksheet, WS2 As Worksheet
Set WS1 = Worksheets("Sheet1") '電話番号が入っているシート名
Set WS2 = Worksheets("Sheet2") '市外局番一覧が入っているシート名
Const C1 As String = "A" '元の電話番号が入っている列名
Const C2 As String = "A" 'ハイフンを挿入した電話番号を記入する列名
Dim i As Integer
Dim Tel1 As String, Tel2 As String
With WS1
For i = 2 To .Cells(Rows.Count, C1).End(xlUp).Row
Tel1 = .Cells(i, C1)
If Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 4), LookAt:=xlWhole) Is Nothing Then
'市外局番が5桁のとき
Tel2 = Left(Tel1, 5) & "-" & Mid(Tel1, 6, 1) & "-" & Mid(Tel1, 7, 4)
ElseIf Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 3), LookAt:=xlWhole) Is Nothing Then
'市外局番が4桁のとき
Tel2 = Left(Tel1, 4) & "-" & Mid(Tel1, 5, 2) & "-" & Mid(Tel1, 7, 4)
ElseIf Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 2), LookAt:=xlWhole) Is Nothing Then
If Mid(Tel1, 3, 1) = "0" Then
'市外局番が3桁で0x0の場合(11桁)
Tel2 = Left(Tel1, 3) & "-" & Mid(Tel1, 4, 4) & "-" & Mid(Tel1, 8, 4)
Else
'市外局番が3桁で0x0でない場合(10桁)
Tel2 = Left(Tel1, 3) & "-" & Mid(Tel1, 4, 3) & "-" & Mid(Tel1, 7, 4)
End If
ElseIf Not WS2.Columns(1).Find(What:=Mid(Tel1, 2, 1), LookAt:=xlWhole) Is Nothing Then
'市外局番が2桁のとき
Tel2 = Left(Tel1, 2) & "-" & Mid(Tel1, 3, 4) & "-" & Mid(Tel1, 7, 4)
Else
'それ以外の時はハイフンを入れずそのままにする
Tel2 = Tel1
End If
.Cells(i, C2) = Tel2
Next
End With
End Sub
マクロを貼り付けたら、その画面でF5キーを押すか、Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。電話番号がハイフンつきに変換されます。(元には戻せないため、念のためファイルかシートのバックアップをとっておいた方がよいでしょう)
ありがとうございます!!ちゃんとできました。
実際に入力されている電話番号の市外局番は限られているのですが、新たに入力される市外局番をどうするかが解決できませんでした。
関数では無理だろうと思い、私もマクロを組んだのですが、できませんでした。
3月半ばから悩んでいたことが、たった1日で解決でき、本当に感謝しております。忙しい中、時間を割いてマクロまで作成していただき、本当にありがとうございました。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Yahoo!メール Yahooメールにログインできません 2 2022/12/12 07:46
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) エクセルについて 6 2022/11/29 14:07
- 財務・会計・経理 適格請求書等に記載する登録番号のハイフン(ー) 2 2023/03/29 10:41
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- その他(ネットショッピング・通販・ECサイト) 海外サイトで買い物をしようとすると何回郵便局番号をうっても下の画像のようにエラーがでて購入出来ません 2 2022/04/17 13:08
- その他(ネットショッピング・通販・ECサイト) 海外サイトで買い物をしようとすると何回郵便局番号をうっても下の画像のようにエラーがでて購入出来ません 2 2022/04/17 13:09
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- その他(ネットショッピング・通販・ECサイト) 海外サイトで買い物をしようとすると何回郵便局番号をうっても下の画像のようにエラーがでて購入出来ません 3 2022/04/17 12:56
- その他(ネットショッピング・通販・ECサイト) 海外サイトで買い物をしようとすると何回郵便局番号をうっても下の画像のようにエラーがでて購入出来ません 3 2022/04/17 12:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2016でExcelデータを差込し...
-
【Excel VBA】CSV取込時、数字...
-
エクセルで前年同日・前月同日...
-
エクセルでページ毎の計をつけ...
-
EXCELで2つのシートから一致し...
-
EXCELの列の幅
-
Excel 表の必要箇所だけを抜き...
-
ListBoxを数字Keyで選択したい
-
エクセルVBAで複数列データを1...
-
エクセルで電話番号にハイフン...
-
エクセルで縦線のいっぱい入っ...
-
エクセル関数式のセル列を一定...
-
EXCEL2007で2つのシートのどっ...
-
Excelで奇数行を削除
-
エクセルの余白を0にしても列...
-
SUMPRODUCT関数で複数条件適用...
-
エクセルシートの選択範囲をコ...
-
excelの列がいっぱいになり列を...
-
エクセル データの該当条件と...
-
ピボットテーブル作成後、重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2016でExcelデータを差込し...
-
【Excel VBA】CSV取込時、数字...
-
Excel 表の必要箇所だけを抜き...
-
エクセルで前年同日・前月同日...
-
EXCELの列の幅
-
EXCEL2007で2つのシートのどっ...
-
EXCELで2つのシートから一致し...
-
エクセルでページ毎の計をつけ...
-
エクセルで電話番号にハイフン...
-
excelの列がいっぱいになり列を...
-
マクロ VBA 他のブックのデータ...
-
ExcelのIF関数について
-
EXCELで不良率を出そうと思って...
-
SUMPRODUCT関数で複数条件適用...
-
エクセルの余白を0にしても列...
-
エクセル:最新データ12件で...
-
(形式直し)Sheetの表のサイズ...
-
マクロ実行時のエラーの原因を...
-
VBAで列に計算式を入れたい
-
エクセルの複数ワークシートの...
おすすめ情報