VBA를 사용하여 VLookup에서 다른 시트 참조

Bilal Shahid 2023년6월21일
  1. VLookup 기능이란?
  2. VBA에서 다른 시트를 참조하는 VLookup 사용
  3. 결론
VBA를 사용하여 VLookup에서 다른 시트 참조

VBA는 Visual Basic for Applications의 약자입니다. Excel, Word 및 PowerPoint와 같은 모든 Microsoft Office 응용 프로그램을 위한 프로그래밍 언어입니다.

VBA를 사용하면 사용자가 매크로라고 하는 코드를 작성하여 Microsoft Office 응용 프로그램에서 시간을 최적화할 수 있습니다. 이러한 방식으로 사용자는 수동으로 동일한 작업을 반복적으로 수행하는 대신 작업을 자동화하기 위해 매크로를 실행하여 시간을 절약할 수 있습니다.

VBA는 개발자에게 다양한 기능과 기능을 제공합니다. 이 기사에서는 VLookup 기능과 그 사용법, 특히 다른 시트를 참조하려는 경우에 대해 알아봅니다.

VLookup 기능이란?

VLookup 기능은 테이블 또는 범위에서 특정 행의 값을 찾으려는 경우 Excel에서 사용됩니다. 이는 큰 스프레드시트로 작업할 때 매우 유용합니다. 수동으로 해당 값을 찾는 것은 사람의 실수를 초래할 수 있습니다.

VLookup 함수의 구문은 다음과 같습니다.

VLOOKUP(lookup_value, Sheet!range, col_index_num, [range_lookup])

매개변수:

VLookup 함수는 위의 구문에 표시된 대로 4개의 매개변수를 사용합니다. 아래에 설명되어 있습니다.

  1. lookup_value - 행에서 값을 찾으려는 셀입니다.

  2. Sheet!range - 조회 값과 반환 값이 있는 셀 범위를 정의합니다. 일반적인 규칙은 조회 값이 항상 지정된 범위의 첫 번째 열에 있어야 한다는 것입니다. 그렇지 않으면 VLookup 기능이 제대로 작동하지 않습니다.

  3. col_index_num - 원칙적으로 여기에 지정된 열 번호는 이전에 지정된 범위에 있어야 합니다. 열은 1부터 계산됩니다.

    예를 들어 C3:F10을 범위로 지정한 경우 C는 열 번호 1, D는 열 번호 2, E는 열 번호 3 등입니다.

  4. range_lookup - 마지막 매개변수는 선택 사항이며 정확한 또는 대략적인 반환 값을 원하는지 여부를 지정할 수 있습니다. 정확한 값은 FALSE 또는 0을 지정합니다. 대략적인 값은 TRUE 또는 1이라고 씁니다.

    이 매개변수를 지정하지 않으면 기본값은 TRUE이며 대략적인 결과가 반환됩니다.

위에서 설명한 구문과 매개변수는 예를 통해 가장 잘 설명할 수 있습니다. 다음 Excel 시트가 있다고 가정합니다.

예시 시트

ID가 1004인 직원의 이름을 찾고 싶다고 가정합니다. VLookup 기능을 사용하여 다음 코드를 사용하여 이를 수행합니다.

Sub example()
On Error Resume Next
Range("C8") = Application.WorksheetFunction.VLookup(Range("A5"), Range("A2:D6"), 3, False)
End Sub

VBA에서 이 코드를 실행하면 C8 셀에 ID 1004에 해당하는 이름이 반환됩니다.

출력 예

참고: On Error Resume Next 라인은 다음 라인에서 코드를 재개하여 해당 값을 찾을 수 없는 경우 VBA에서 Error 1004를 발생시키는 것을 방지합니다.

이제 VBA의 VLookup 기능에 대해 배웠으므로 이를 사용하여 다른 시트의 셀을 참조하는 방법을 설명하겠습니다.

VBA에서 다른 시트를 참조하는 VLookup 사용

해당 셀의 값을 조회하려고 하지만 값이 있는 범위가 다른 시트에 있다고 가정합니다.

이 경우 다른 시트를 어떻게 참조합니까? 예를 통해 알아보도록 하겠습니다.

위의 동일한 예에 추가하여 아래와 같이 직원 ID와 연락처 정보만 있는 다른 시트가 있다고 가정합니다.

연락처 정보가 있는 예제 시트

여기에서 볼 수 있듯이 연락처 열의 마지막 셀이 비어 있습니다. 즉, ID 1005를 가진 직원의 연락처 정보가 없습니다.

이제 작업은 ID 1005에 해당하는 Sheet1에서 Contact 값을 찾아 필요에 따라 ID 1005에 대해 Sheet2의 셀 B6에 쓰는 것입니다. 이를 위해 몇 가지 변경 사항으로 VLookup 기능을 쉽게 사용할 수 있습니다.

VLookup 함수의 매개 변수에서 해야 할 주요 조정은 범위에서 참조하는 셀의 시트를 지정하는 것입니다. 그렇지 않으면 잘못된 결과를 생성할 수 있는 모호성이 있습니다.

이를 위한 한 가지 솔루션은 시트 이름을 워크시트 변수로 정의하고 이를 사용하여 적절한 셀을 참조하는 것입니다. 이에 대한 VBA 코드는 다음과 같습니다.

Sub example2()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
On Error Resume Next
ws2.Range("B6") = Application.WorksheetFunction.VLookup(ws2.Range("A6"), ws1.Range("A2:D6"), 4, False)
End Sub

여기에서 범위가 언급될 때마다 모호성을 피하기 위해 해당 범위가 속하는 시트를 지정한다는 것을 알 수 있습니다. 이 VBA 코드를 실행한 후 Sheet2의 상태는 다음과 같으며 코드가 올바르게 실행되고 있음을 나타냅니다.

VBA의 다른 시트 참조

그러나 별도의 변수 선언을 원하지 않는 경우 시트 이름을 워크시트로 직접 참조할 수 있습니다. 다음 코드는 이를 위해 작동하며 동일한 출력을 생성합니다.

Sub example()
On Error Resume Next
Worksheets("Sheet2").Range("B6") = Application.WorksheetFunction.VLookup(Worksheets("Sheet2").Range("A6"), Worksheets("Sheet1").Range("A2:D6"), 4, False)
End Sub

직접 참조

결론

이것은 Microsoft Office 사용자의 소중한 시간을 절약해주는 유용한 프로그래밍 언어인 VBA의 VLookup 기능에 대한 논의를 요약한 것입니다.

VBA에서 VLookup 기능을 사용하여 활성 시트 외에 다른 시트의 셀을 참조하는 방법을 배웠기를 바랍니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub