人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの関数で教えてください。

数万件の電話番号リストがありまして、国番号が入っている場合その国番号の部分だけを削除する関数を作りたいと思っております。

国番号リストを別途作成し、電話番号の始まりがそのリストと一致する場合を削除するという感じです。

国番号リスト↓
http://www003.upp.so-net.ne.jp/yf6/kuni.html

例えば「354-**-***-*****」という電話番号があれば最初の「354-」を削除したいのですが、そのような関数は作れますでしょうか?

あるいはエクセルの関数でなくても上記のようなことが出来ればいいのですが。。。

ご教授の程何卒お願いいたします!!

●質問者: ion10
●カテゴリ:コンピュータ
✍キーワード:エクセル リスト 作成 教授 関数
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

VBA での実装例です。


先頭にシートを追加しA列に国番号の一覧をコピーします。

D列に変換対象の電話番号リストをコピーします。

(削除してしまうのは問題だと思いますので、C列に国際番号を、D列に国際番号を除いた番号をおきました。)


コメントを有効にしていただければ、不明な点は補足します。

Sub divINN()
 Dim lastRowA As Long
 Dim lastRowD As Long
 lastRowA = Range("A" & Rows.Count).End(xlUp).Row
 lastRowD = Range("D" & Rows.Count).End(xlUp).Row
 
 Dim i As Long
 Dim j As Long
 
 Dim sWord As String
 For j = 1 To lastRowA
 sWord = Cells(j, "A").Value & "-"
 For i = 1 To lastRowD
 If InStr(Cells(i, "D").Value, sWord) = 1 And Cells(i, "C").Value = "" Then
 Cells(i, "C").Value = "'" & sWord
 Cells(i, "D").Value = "'" & Replace(Cells(i, "D").Value, sWord, "")
 End If
 Next
 Next
End Sub
◎質問者からの返答

すごいっっ!!!!!

完璧です!!!

ありがとうございました!!!!!!!!!


2 ● りくっち
●10ポイント

電話番号がA列に入っていて、

全ての電話番号に国番号が入っており、これを全て除去したものを表示するなら

=MID(A1,FIND("-",A1)+1,LEN(A1))

で先頭の「-」以前の国番号を除いた番号を表示します。


一覧を作成し、これに従って除去する場合は、

電話番号がA列に入っていて、

一覧の国番号がSheet2のA列に記入されているとして、

=IF(COUNTIF(Sheet2!A:A,LEFT(A1,FIND("-",A1)-1))>0,MID(A1,FIND("-",A1)+1,LEN(A1)),A1)

で、一覧に国番号があれば削除、なければそのままの電話番号を表示します。


以上ご参考まで。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ