2012-03-16 66 views
1

我有一個從Access數據庫通過SQL查詢導出的表。在Excel中,有3列:ID,姓名和電話號碼......問題在於電話號碼列。用戶以各種方式輸入數字,因此看起來非常不整潔,我不能將該字段用於其他目的。Excel - 搜索並替換各種字符串

可以說我想看到這些數字的默認方式是:385991234567.所以它有國家代碼,比區號,然後是數字......但是所有這些組合在一起。

在數據庫中我有這樣的投入:

0991234567 - 所以沒有國家代碼

991234567 - 沒有國家代碼和區號

385991234567的前導零 - 與+在國家代碼前面

99/1234-567 - 用各種字符分隔數字組(我設法通過sql查詢中的替換來清除它)。

我想要的是實現我在開始時提到的格式。所以添加國家代碼,如果需要刪除前導零。另外的問題是一些數字是7位數字,其他的是6位數字(沒有國家或地區代碼)。我曾嘗試通過搜索099來進行替換,但如果它出現在數字中間,它也會發生變化。

我不知道該怎麼做。或者甚至是這個問題的正確部分(因爲我不知道是否更容易在Excel中通過VBA宏,通過SQL查詢或其他)。我不能手工做,因爲它的領域約。 100.000個電話號碼。

+0

可能的重複:http://stackoverflow.com/questions/501368/phone-number-format-and-驗證庫(也祝你好運!) – assylias 2012-03-16 12:11:47

+0

垃圾進,垃圾出。對不起,我忍不住自己。 :) 祝你好運! – markblandford 2012-03-16 13:33:25

+0

我在想它有點......是否可以將REPLACE語句與LIKE語句的SQL查詢結合起來?像這樣:REPLACE(field,'X','Y')其中X LIKE'Z%'...我知道語法是錯誤的,但我只是給出一個普遍的想法/問題...謝謝 – Peraklo 2012-03-16 13:43:54

回答

1

OK,所以這裏是......對於初學者來說,我使用了一些SQL查詢來選擇特定的電話號碼和電話號碼清理垃圾字符...

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*") 

這一個。 ..

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

在那之後,我導出爲ex​​cel數據和應用的下一個宏...

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