我有一个通过SQL查询从Access数据库导出的表。在excel中,有3列:ID,姓名和电话号码......问题是电话号码列。用户以各种方式输入数字,因此看起来非常不整洁,我不能将该字段用于其他目的。
让我们说,我想看到这些数字的默认方式是:385991234567。所以它有国家代码,而不是区号,然后是数字......但是所有这些都合并在一起。
在数据库中,我有如下输入:
0991234567 - 所以没有国家代码
991234567 - 没有国家代码和区号的前导零
+385991234567 - 国家/地区代码前面带+,
99 / 1234-567 - 用各种字符分隔数字组(我已经设法通过sql查询中的替换来清理它)。
我想要的是实现我在开头提到的格式。所以添加国家代码,如果需要删除前导零。另外一个问题是一些数字是7位数,其他数字是6位数(没有国家或地区代码)。我曾尝试通过搜索099进行替换,但如果它出现在数字的中间,它也会改变。
我不知道该怎么做。或者甚至这是这个问题的正确部分(因为我不知道在excel,通过VBA宏,通过SQL查询或其他东西更容易做到这一点)。我不能手工做,因为它是一个大约的领域。 100.000电话号码。
答案 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