728x90

셀을 분리하고 검사를 한 다음에 값을 저장하는 VBA


셀을 분리하여 검사하고 나서 치환한 다음 다시 합치는 결과를 도출해야 할 일이 있어서 만들어 본 VBA 입니다.

VLOOKUP 을 사용하면 결과를 빠르게 돌려주기 때문에 VBA 함수를 호출해서 결과를 얻었습니다.


Sub 셀분리검사저장()

    Dim rngC As Range

    Dim rngAll As Range

    Dim i As Integer

    Dim varTemp

    Dim deLimiter, sTxt As String

    Dim table_array As Range

    Dim table_array2 As Range


    Set rngAll = Range([E3], Cells(Rows.Count, "E").End(3))

    deLimiter = " "     '// 구분자

    Set table_array = Sheets("DB").Range("A2:B23542")   '// VLookup 테이블

    Set table_array2 = Sheets("DB").Range("B2:B23542")   '// VLookup 테이블


    For Each rngC In rngAll

        varTemp = Split(rngC, deLimiter)  '// 구분자로 셀을 분리하여 varTemp 배열에 저장

        For i = LBound(varTemp) To UBound(varTemp) - 1   '// 배열의 가장 작은 숫자와 가장 큰 숫자를 추출

            '// i = 0 부터 시작

            sTxt = sTxt & varTemp(i) & deLimiter   '// For 문에서 지정된 것만큼 셀을 합쳐서 하나의 sTxt  로 만듬

        Next i

        sTxt = Trim(sTxt)

        If Len(sTxt) Then

            If Not IsError(Application.VLookup(sTxt, table_array2, 1, 0)) Then   '// 정상적이면

                sTxt = sTxt

            Else

                If IsError(Application.VLookup(sTxt, table_array, 2, 0)) Then

                    sTxt = "[Err] " & sTxt

                Else

                    sTxt = Application.VLookup(sTxt, table_array, 2, 0)  '//서로 일치하는게 있으면 table_array 의 두번째 열의 값을 sTxt에 저장하라

                End If

            End If

            rngC = sTxt & " " & varTemp(UBound(varTemp))

        End If

        sTxt = vbNullString     '// 값을 초기화

    Next rngC

    

    Set rngAll = Nothing

    Set table_array = Nothing

    Set table_array2 = Nothing

    

    MsgBox "검사완료"


End Sub



블로그 이미지

Link2Me

,