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.
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