2012-03-16 15 views
1

SQLクエリを使用してAccessデータベースからテーブルをエクスポートしました。 Excelには、ID、名前、電話番号の3つの列があります...問題は電話番号の列です。ユーザーはあらゆる種類の方法で数字を入力しているので、見た目が非常に不安定で、他の目的のためにそのフィールドを使用することはできません。Excel - さまざまな文字列を検索して置き換えます

私は数字を見たいデフォルトの方法は:385991234567だから、それは市外局番よりも、国番号よりも、そして数字が...しかし、一緒に組み合わされている。私のような入力を有するデータベースで

0991234567を - ので、国コードなし

991234567 - 国コード及びエリアコード

385991234567の先頭にゼロ無し - +と国コードの前に数字のグループを分けるさまざまな文字で(私はそれを清掃するために管理してきました)SQLの照会の置換を介して

99/1234-567 -

私が欲しいのは、最初に述べたフォーマットを達成することです。必要に応じて先行ゼロを削除してください。追加の問題は、数字の一部が7桁で、他の数字が6桁(国または市外局番なし)であることです。 Iveは例えば099を検索して置換を試みましたが、数字の真ん中に現れた場合にも変更されます。

私は何をすべきか分かりません。それとも、これはこの質問の正しいセクションです(なぜなら、VBAマクロ、SQLクエリなどを介してExcelで行う方が簡単かどうか分かりません)。私は手でそれを行うことはできません。 100.000の電話番号。

+0

可能な複製:http://stackoverflow.com/questions/501368/phone-number-format-and-バリデーションライブラリ(と幸運も!) – assylias

+0

ガーベッジイン、ガーベッジアウト。申し訳ありません、私は自分自身を助けることができませんでした:) がんばろう! – markblandford

+0

私は少し考えていました... SQLクエリでREPLACE文をLIKE文と組み合わせることは可能ですか? REPLACE(フィールド、 'X'、 'Y')WHERE X LIKE 'Z%' ...構文が間違っていることを知っていますが、私は一般的なアイデアや質問をしています...ありがとう – Peraklo

答えて

1

OKは、ので、ここでそれは初心者のために...ですが、私は...

select sk, name1, phone into telefoni from 
(
SELECT customer_id as sk, name as NAME1, phone1 as phone from customers where len (phone1)>7 and (phone1 like "09*" or phone1 like "3859*" or phone1 like "*3859*" or phone1 like "95*" or phone1 like "98*" or phone1 like "99*" or phone1 like "91*" or phone1 like "92*" or phone1 like "97*") 

と、このいずれかを特定の電話番号を選択し、電話番号からの迷惑文字をクリーンアップするために、いくつかのSQLクエリを使用していました。 ...その後

SELECT distinct sk, name1, replace(replace(replace(replace(replace(phone, "/", ""), "-", ""), " ", ""), ".", ""), "*", "") as tel into telefoni2 from telefoni1 order by name1; 

、私はExcelにデータをエクスポートして、次のマクロを適用...

Sub test() 
For Each cell In Selection 
    If cell.Value Like "091*" Then cell.Value = Replace(cell.Value, "091", "38591", 1, 1, vbTextCompare) 
    Next cell 
End Sub 

そして、それについては...それは魅力のように働いた。コードは乱雑であるかもしれませんが、より良く書けるかもしれませんが、私は初心者ですので、よく分かります。D

関連する問題