두 개의 시트(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