미해결
다른 sheet별 Vlookup 시 해당되는 셀값만 가져오는 방법
안녕하세요 선생님
현재 특정 열에 다른 sheet에서 원하는 행마다 값이 존재하여 각각 sheet별 vlookup을 진행하여 전체 행을 채우고 싶습니다.
그러나 현재 작성한 코드로는 sheet별 값을 전체 덮어씌우는 구조라 계속해서 빈칸이 발생하고 있습니다.
해당되는 행만 vlookup 되도록 진행하려면 IF문이나 뭔가 들어가야 될 것 같은데,
해당 내용 할 수 있도록 조언 부탁드립니다.
관련 파일 첨부하였습니다. 예제1 VBE 참조바랍니다.
a
김
숫
혀
신
선
댓글 2
VLOOKUP 결과값을 배열로 반환하셨는데, 그럴경우 빈칸을 제거하기 위해서는 Dictionary 또는 Array를 통해서 한번 더 값을 발라줘야합니다.
아래와 같이 코드를 수정해보시겠어요?^-^
감사합니다.
Sub Vlookup_VBA()
'Application.VLOOKUP(lookup_value, table_array, column_index, range_lookup)
Dim lookFor As Range
Dim table_array As Range
Dim varResult As Variant
Dim table_array_col As Integer
Dim lookFor_col As Integer
Dim oldTime As Single '코드 시작시점 넣을 변수
Dim i As Integer
oldTime = Timer
'타이머 시작
Set lookFor = Range([A3], Cells(Rows.Count, "A").End(3))
'A3은 시작셀
Set table_array = Worksheets("Table_array").Range("A3:O23")
'// 이번 적용한 범위는 다른 sheet 있는 테이블 지정할 때
''Set table_array = Worksheets("Table_array").Range("A2:C" & Cells(Rows.Count,"C").End(3).Row) 마지막 셀이 변경되는 경우는 해당 코드 참고하여 변수 선언
'※아래 예시
'1) Set table_array = Range("F7:H21")
'// 같은 Sheet 에 있는 테이블을 지정할 때
'2) Set table_array = Worksheets("Table_array").Range("A2:C16")
'// 다른 Sheet 에 있는 테이블을 지정할 때
'3) Set table_array = Workbooks("Book1.xls").Sheets("Sheet1").Range("F2:Q35602")
'// 다른 File 에 있는 Sheet 를 지정할 때
For i = 4 To 15
'1~12월 열값 지정
For j = 3 To Cells(Rows.Count, "A").End(3).Row
table_array_col = i '// table_array 에서 몇번째 열의 값을 가져올 것인지 설정
If Cells(j, i) = "" Then Cells(j, i).Value = Application.VLookup(Cells(j, 1).Value, table_array, table_array_col, 0)
Next
Next i
Set table_array = Worksheets("Table_array_2").Range("A3:O23")
For i = 4 To 15
'1~12월 열값 지정
For j = 3 To Cells(Rows.Count, "A").End(3).Row
table_array_col = i '// table_array 에서 몇번째 열의 값을 가져올 것인지 설정
If Cells(j, i) = "" Then Cells(j, i).Value = Application.VLookup(Cells(j, 1).Value, table_array, table_array_col, 0)
Next
Next i
MsgBox "총 " & Format(Timer - oldTime, "#0.00") & " : 초 소요"
'총 소요시간 안내
End Sub