셀을 분리하고 검사를 한 다음에 값을 저장하는 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
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
엑셀과 MySQL 연동처리 (2) | 2014.10.26 |
---|---|
홀수행 또는 짝수행만 추출하는 VBA (0) | 2014.10.17 |
[VBA] 우편번호 주소 정리 (0) | 2014.09.20 |
[VBA] 엑셀에서 찾고자 하는 단어를 쉽게 찾는 VBA (0) | 2014.09.19 |
[VBA] 셀 분리 활용 (0) | 2014.09.17 |