2012-03-16 2 views
1

SQL 쿼리를 통해 Access 데이터베이스에서 테이블을 내보냈습니다. 엑셀에는 ID, 이름 및 전화 번호라는 세 개의 열이 있습니다. 문제는 전화 번호 열입니다. 사용자는 모든 종류의 방식으로 번호를 입력 했으므로 매우 어수선 해 보였으며 다른 용도로는 해당 필드를 사용할 수 없습니다.Excel - 다양한 문자열 검색 및 바꾸기

숫자를보고 싶은 기본 방법은 다음과 같습니다. 385991234567. 그래서 지역 번호보다 국가 코드가 나오고 그 다음 번호가 표시됩니다. 그러나 모두 함께 결합됩니다. 데이터베이스에서

내가 좋아하는 입력이 있습니다

0991234567을 - 국가 번호없이 지역 번호

385,991,234,567의 앞에 0 - - 그래서 국가 코드

991,234,567없이 +로 국가 코드 앞에

99/1234-567 - 숫자의 그룹을 구분하는 다양한 문자로 (나는 그것을 SQL 쿼리에서 바꾸기를 통해 관리했다.)

제가 원했던 것은 처음에 언급 한 형식을 달성하는 것입니다. 필요한 경우 국가 코드를 추가하고 선행 0을 제거하십시오. 추가 문제는 숫자 중 일부가 7 자리이고 다른 숫자는 6 자리 (국가 또는 지역 번호 제외)입니다. Ive는 예를 들어 099를 검색하여 대체를 시도했지만 숫자 중간에 발생하면 변경됩니다.

나는 무엇을 해야할지 잘 모릅니다. 또는이 질문에 대한 올바른 섹션 (SQL 쿼리 또는 다른 것을 통해 VBA 매크로를 통해 Excel에서 수행하는 것이 더 쉬운지 알 수 없기 때문에). 나는 그것의 약장 때문에 손으로 그것을 할 수 없습니다. 100.000 전화 번호.

+0

가능한 복제본 : http://stackoverflow.com/questions/501368/phone-number-format-and- validation-library (행운을 빌어 요!) – assylias

+0

쓰레기 입력, 쓰레기 출력. 미안하지만, 나 자신을 도울 수 없었다. :) 행운을 빕니다! – markblandford

+0

나는 약간 그것에 대해 생각하고 있었다 ... SQL 쿼리에서 REPLACE 문을 LIKE 문과 결합 할 수 있습니까? REPLACE (필드, 'X', 'Y') WHERE X LIKE 'Z %'... 구문이 잘못되었지만 일반적인 아이디어/질문을 준 것입니다 ... 감사합니다 – Peraklo

답변

1

OK, 그래서 여기가 우선 ..., 난 ...

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*") 

이 하나를 특정 전화 번호를 선택하고 전화 번호에서 정크 문자를 정리하는 몇 가지 SQL 쿼리를 사용했다. .. 그 후

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 
그리고

그것에 관한 thats ...은 매력처럼 일했다. 코드가 더러워 지거나 더 잘 쓰여질 수는 있지만 초보자입니다. D