Excel - поиск и замена различных строк - PullRequest
1 голос
/ 16 марта 2012

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

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

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

0991234567 - поэтому без кода страны

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

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

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

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

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

1 Ответ

1 голос
/ 10 апреля 2012

ОК, вот и все ... для начала, я использовал несколько 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...