Excel – search并replace各种string

我有一个从Access数据库通过SQL查询导出的表。 在Excel中,有3列:ID,名称和电话号码…有问题的是电话号码列。 用户以各种方式input数字,所以看起来很乱,我不能将该字段用于其他目的。

可以说,我想看到的数字的默认方式是:385991234567.所以它有国家代码,比地区代码,然后数字…但所有在一起。

在数据库中我有这样的input:

0991234567 – 没有国家代码

991234567 – 没有国家代码和地区代码的前导零

+385991234567 – 在国家代码前加+

99 / 1234-567 – 用各种字符分隔数字组(我已经设法通过在SQL查询replace清理)。

我想要的是实现我在开始提到的格式。 所以添加国家代码,如果需要删除前导零。 另外的问题是有些数字是7位数字,其他的是6位数字(没有国家或地区代码)。 我试图通过search099做replace,但是如果它发生在数字中间,它也会改变。

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

好的,所以在这里,对于初学者来说,我使用了一些SQL查询来select特定的电话号码,并从电话号码中清除垃圾邮件字符。

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并应用下一个macros…

 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