다른 시트의 VBA vlookup

다른 시트의 VBA vlookup

두 개의 시트(Sheet1 및 Sheet2)가 있습니다. Sheet2에는 인접한 셀에 숫자가 1 또는 3인 헤더 목록이 있습니다. 시트 1에는 A부터 D까지의 값이 "TRUE" 또는 "FALSE"인 동일한 헤더가 있습니다. A:D 행의 모든 ​​값이 "FALSE"인 경우 E열은 0을 반환해야 합니다. "TRUE"가 포함되어 있으면 헤더를 사용하여 sheet2에서 vlookup을 수행하고 sheet2에 나열된 각 헤더에 인접한 숫자를 반환합니다. 나는 잘 작동하는 코드를 작성했지만 sheet2의 첫 번째 행에 있는 모든 행에 대해 동일한 숫자를 반환합니다. 어디에서 오류가 발생하는지 제안해 주실 수 있나요? 첨부된 이미지는 내가 얻고 있는 출력을 보여줍니다. 이상적으로 마지막 행은 3 대신 1을 반환해야 합니다.

두 시트의 샘플

Sub UpdateOutput()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim headersRange As Range
    Dim dataRange As Range
    Dim outputRange As Range
    Dim headersCell As Range
    Dim dataRow As Range
    Dim lookupValue As String
    Dim lookupResult As Variant
    Dim lr As Long
    
    Set ws1 = ThisWorkbook.Worksheets("QMform")
    Set ws2 = ThisWorkbook.Worksheets("NameList")
    Set headersRange = ws2.Range("A2:B5")
    
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To lr
    Set dataRange = ws1.Range("A" & i & ":D" & i)
    Set outputRange = ws1.Range("E" & i & ":E" & i)
    
    For Each dataRow In dataRange.Rows

        If Application.WorksheetFunction.CountIf(dataRow, "TRUE") = 0 Then
            outputRange.Cells(dataRow.Row - dataRange.Row + 1).Value = 0
        Else
            For Each headersCell In headersRange
                lookupValue = headersCell.Value
                
                If Application.WorksheetFunction.CountIf(dataRow, "TRUE") > 0 Then
                    lookupResult = Application.Vlookup(lookupValue, headersRange.Offset(0, 1), 2, False)

                    If Not IsError(lookupResult) Then

                        outputRange.Cells(dataRow.Row - dataRange.Row + 1).Value = lookupResult
                    End If
                End If
            Next headersCell
        End If
      Next dataRow
    Next i
    
End Sub

관련 정보