Excel - 搜索并替换各种字符串

时间:2012-03-16 12:07:11

标签: sql excel ms-access vba

我有一个通过SQL查询从Access数据库导出的表。在excel中,有3列:ID,姓名和电话号码......问题是电话号码列。用户以各种方式输入数字,因此看起来非常不整洁,我不能将该字段用于其他目的。

让我们说,我想看到这些数字的默认方式是:385991234567。所以它有国家代码,而不是区号,然后是数字......但是所有这些都合并在一起。

在数据库中,我有如下输入:

0991234567 - 所以没有国家代码

991234567 - 没有国家代码和区号的前导零

+385991234567 - 国家/地区代码前面带+,

99 / 1234-567 - 用各种字符分隔数字组(我已经设法通过sql查询中的替换来清理它)。

我想要的是实现我在开头提到的格式。所以添加国家代码,如果需要删除前导零。另外一个问题是一些数字是7位数,其他数字是6位数(没有国家或地区代码)。我曾尝试通过搜索099进行替换,但如果它出现在数字的中间,它也会改变。

我不知道该怎么做。或者甚至这是这个问题的正确部分(因为我不知道在excel,通过VBA宏,通过SQL查询或其他东西更容易做到这一点)。我不能手工做,因为它是一个大约的领域。 100.000电话号码。

1 个答案:

答案 0 :(得分:1)

好的,所以这里......对于初学者来说,我使用了一些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;

之后,我将数据导出到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