오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
미해결

다른 sheet별 Vlookup 시 해당되는 셀값만 가져오는 방법

꾸뻬씨
1월 16일 조회 20,737
안녕하세요 선생님
현재 특정 열에 다른 sheet에서 원하는 행마다 값이 존재하여 각각 sheet별 vlookup을 진행하여 전체 행을 채우고 싶습니다.
그러나 현재 작성한 코드로는 sheet별 값을 전체 덮어씌우는 구조라 계속해서 빈칸이 발생하고 있습니다.
해당되는 행만 vlookup 되도록 진행하려면 IF문이나 뭔가 들어가야 될 것 같은데,
해당 내용 할 수 있도록 조언 부탁드립니다.
관련 파일 첨부하였습니다. 예제1 VBE 참조바랍니다.

댓글 2

오빠두엑셀 1월 16일
안녕하세요?^^ 오빠두엑셀입니다.

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
짱구다짱구 11월 3일
한번 더 배워갑니다

질문답변 게시판의 최근 글

스크랩 완료