VBA vlookup en otra hoja

VBA vlookup en otra hoja

Tengo dos hojas (Hoja1 y Hoja2). Sheet2 tiene una lista de encabezados con números como 1 o 3 en celdas adyacentes. La hoja 1 tiene los mismos encabezados con valores como "VERDADERO" o "FALSO" de las columnas A a D. Quiero que si todos los valores en una fila de A:D son "FALSO", la columna E debería devolver 0. Si alguna de las celdas contiene "VERDADERO", realice una búsqueda virtual desde la hoja 2 usando encabezados y devuelva el número adyacente a cada encabezado enumerado en la hoja 2. He escrito un código que funciona bien, sin embargo, devuelve el mismo número para todas las filas que hay en la primera fila de la hoja2. ¿Puede sugerir dónde está el error? La imagen adjunta muestra el resultado que estoy obteniendo. Lo ideal sería que la última fila devuelva 1 en lugar de 3.

Muestra de ambas hojas

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

información relacionada