2016-08-17 5 views
1

VBA에 매크로를 작성하여 모두 같은 형식의 주소 묶음을 별도의 열로 분리하려고합니다. 그래서 거리 주소 열, 교외, 우편 번호 및 상태 코드 열. 주소는 모두이 형식을 따르Excel VBA를 사용하여 열을 문자열로 구분합니다.

123 가짜 스트리트, 교외 QLD 4123

나는이 사용하는 SQL에 접근 할 수 소원을하지만 주소가 중심이 될 것입니다 엑셀 통합 문서 내에서이 기능을 유지하기 위해 노력하고있어.

내 계획 접근 방식은 그래서 ... (주소가 저장되어있는) 열 D의 길이를 계산 루프

For LngRow = 2 To Wksht.Range("D" & Wksht.Rows.Count).End(xlUp).Row 
     //concate/parse here// 
    Next 

을을 작성하는 것입니다 후 거꾸로 어디에 작업의 표준 절차를 따를 것입니다 그것은 우편 번호 (4 자리)와 상태 코드 (상태 코드의 배열)를 분리하여 쓰고 교외 (거리 주소 뒤에 오는 상태 코드와 구분 쉼표 사이의 문자열) 및 마지막으로 거리 주소 나머지 문자열이 제거되고 다시 작성된 후에 남아있는 문자열입니다.

뒷쪽으로 작업하는 것이 길거리 주소가 바뀌기 때문에 가장 좋지만 정보의 마지막 3 비트는 표준입니다.

VBA에서 이러한 매크로를 작성할 수 있습니까? 특히 그것이 SQLish 인 것처럼 보입니다.

답변

0

Excel은 이미 원하는 것을 얻을 수있는 기능을 제공합니다. 유일한 요구 사항은 데이터를 디스크에 저장하고 기존 파일에서 열어야한다는 것입니다. 이 함수는 Workbooks.OpenText라고 불리지 만 주어진 매개 변수와 정확히 일치한다는 것을 알아 두십시오. 예를 들어 잘못된 구분 기호를 사용하면 끝에 잘못된 결과를 줄 수도 있고 올바르게 분할 된 파일을 열지 못할 수도 있습니다.

Workbooks.OpenText "filename", _ 
DataType:=XlTextParsingType.xlDelimited, Origin:=XlPlatform.xlWindows, _ 
Space:=True, TextQualifier:=XlTextQualifier.xlTextQualifierNone 

이었다 추가 작업이 전개 할 수있는 통합 문서 개체를 반환하는 공간 구분 텍스트 또는 CSV 파일을 열고 많은 컬럼에 값을 넣어 것입니다.

다른 접근법은 텍스트 줄을 읽고 VBA 문자열 분할을 사용하여 해당 행과 열에 "수동으로"입력하면 데이터를 조작하고 원하지 않는 문자를 제거 할 수 있다는 이점이 있습니다 즉시 파일에 저장해야합니다. 당신이 원한다면 나는 그것에 대한 모범을 줄 수있다.

1

질문에 설명으로 이동하고 주소 형식이 여기 Split

Private Sub tt() 
    Dim strTest  As String 

    Dim arr1 
    Dim arr2 
    Dim arr3 

    Dim StreetAddress As String 
    Dim Postcode As String 
    Dim StateCode As String 
    Dim SubUrb As String 


    strTest = "123 Fake Street, Suburbia QLD 4123" 

    arr1 = Split(strTest, ",") 
    StreetAddress = arr1(0) 

    arr2 = Split(Trim(arr1(1)), Space(1)) 

    Postcode = arr2(2) 
    StateCode = arr2(1) 
    SubUrb = arr2(0) 

End Sub 
+0

난 당신이 단지의 경우 교외에 우편 번호와 국가 코드 arr2의 UBound 함수를 취할 필요가 있다고 생각하여 하나의 방법이며, 동일하게 유지됩니다 가정 두 단어입니다 – winghei

+0

부품의 크기가 변경되면 전체 코드가 토스로 이동합니다. :) 잘못된 결과를 줄 것이다. 그래서 그 문장에 대한 설명과 함께 주소 형식이 동일하게 유지 될 것이라고 가정합니다 .... 몇 번이나 헤지 할 필요가 있습니다 :) 그러나 의견을 주셔서 감사합니다. – cyboashu

관련 문제