プロが教える店舗&オフィスのセキュリティ対策術

EXCELのVBAで質問です。

abc123-4567(def)
のように、電話番号の前後に文字が含まれているものから、
電話番号を検出し、
abc【固定電話】123-4567(def)
のように。文字列を追加したいです。
また、携帯電話の場合はの除外とします。

abc123-4567(def) → abc【固定電話】123-4567(def)

ちなみに固定電話の番号は「xxx-yyyy」と桁数は固定です。

このような処理をするにあたって、どのような方法を取ればよいでしょうか。
具体例挙げていただけると幸いです。

A 回答 (1件)

こんばんは!



元データはA列の2行目以降にあり、B列に表示するとします。
尚、電話番号が「○○○-××××」以外の場合はA列データをそのままB列に表示するようにしてみました。

Sub Sample1()
Dim i As Long, k As Long, str As String, buf As String
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For k = 1 To Len(Cells(i, "A"))
str = Mid(Cells(i, "A"), k, 1)
If str Like "[0-9,-]" Then
buf = buf & str
If Not str Like "[0-9,-]" Then Exit For
End If
Next k
If Len(buf) = 8 Then
If IsNumeric(Left(buf, 3)) And IsNumeric(Right(buf, 4)) Then
Cells(i, "B") = Replace(Cells(i, "A"), buf, "【固定電話】" & buf)
End If
Else
Cells(i, "B") = Cells(i, "A")
End If
buf = ""
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
bufから電話番号の判定条件とB列への表示の部分で不完全なところがありました
(「-」の位置違いでも固定電話と判断したり、B列が空欄だったり)
が、そこだけなら自分でいじれそうです。
処理の流れ、とても参考になりました。

お礼日時:2015/05/02 10:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています