2012-03-16 2 views
1

У меня есть таблица, экспортированная из базы данных Access через SQL-запрос. В excel есть 3 столбца: ID, имя и номер телефона ... Проблемным является столбец номера телефона. Пользователи вводили цифры разными способами, поэтому они выглядят очень неопрятно, и я не могу использовать это поле для других целей.Excel - поиск и замена различных строк

Допустим, что по умолчанию я хочу видеть цифры: 385991234567. Таким образом, у него есть код страны, чем код области, а затем номер ... но все вместе вместе взятые.

В базе данных у меня есть входы, как:

0991234567 - так без кода страны

991234567 - без кода страны и ведущего нуля код зоны

+385991234567 - с + перед кодом страны

99/1234-567 - с различным символом, разделяющим группы чисел (мне удалось очистить это путем замены в запросе sql).

Вещь, которую я хочу, - это добиться формата, который я упомянул в начале. поэтому добавьте код страны, при необходимости удалите начальный ноль. Дополнительной проблемой является то, что некоторые цифры составляют 7 цифр, остальные 6 цифр (без кода страны или региона). Ive попытался выполнить замену, например, путем поиска 099, но если он встречается в середине числа, он также изменяется.

Я не знаю, что делать. Или даже это правильный раздел для этого вопроса (потому что я не знаю, проще ли это сделать в excel, через макрос VBA, через sql-запрос или что-то еще). Я не могу сделать это вручную, потому что поле его ок. 100.000 номеров.

+0

Возможный дубликат: http://stackoverflow.com/questions/501368/phone-number-format-and- validation-library (и удачи тоже!) – assylias

+0

Мусор, вывоз мусора. Извините, я не мог с собой поделать. :) Удачи! – markblandford

+0

Я немного подумал об этом ... возможно ли комбинировать оператор REPLACE в SQL-запросе с инструкцией LIKE? что-то вроде этого: REPLACE (поле, 'X', 'Y') WHERE X LIKE 'Z%' ... Я знаю, что синтаксис неправильный, но я просто давал общую идею/вопрос ... спасибо – Peraklo

ответ

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; 

После этого я экспортировал данные отличиться и применил следующий макрос ...

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

Смежные вопросы