[VBA] 셀을 분리하여 검사하고 결과를 저장
셀을 분리하고 검사를 한 다음에 값을 저장하는 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