Sub GenerateIncompleteGraduationList_Final()
    Dim wsData As Worksheet
    Dim wsTarget As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim count As Integer
    Dim baseRow As Long
    
    ' 1. 시트 설정
    Set wsData = ThisWorkbook.Worksheets("학생정보_데이터")
    Set wsTarget = ThisWorkbook.Worksheets("졸업요건 미이수 학생")
    
    ' 2. 기존 결과물 초기화 (A9행부터 아래로 모두 삭제하여 템플릿만 남김)
    ' 새로 실행할 때마다 이전 결과와 겹치지 않게 정리합니다.
    Dim lastUsedRow As Long
    lastUsedRow = wsTarget.Cells(wsTarget.Rows.count, "A").End(xlUp).Row
    If lastUsedRow > 8 Then
        wsTarget.Rows("9:" & lastUsedRow + 7).Clear
    End If
    
    ' 데이터 시트의 마지막 행 계산
    lastRow = wsData.Cells(wsData.Rows.count, "H").End(xlUp).Row
    count = 0
    baseRow = 3 ' 첫 번째 학생 서식의 시작 위치
    
    Application.ScreenUpdating = False
    
    ' 3. 데이터 시트 순회
    For i = 2 To lastRow
        ' H열(졸업요건이수여부)이 "아니오"인 경우 실행
        If wsData.Cells(i, "H").Value = "아니오" Then
            count = count + 1
            
            ' 4. 서식 복사 (두 번째 학생부터 적용)
            ' 첫 번째 학생은 이미 A3:D8에 서식이 있으므로 복사하지 않고 데이터만 입력
            If count > 1 Then
                baseRow = baseRow + 7 ' 6행(서식) + 1행(공백) = 7행 아래로 이동
                wsTarget.Range("A3:D8").Copy Destination:=wsTarget.Range("A" & baseRow)
            End If
            
            ' 5. 데이터 입력 (요청하신 셀 위치에 정확히 배치)
            ' 번호 입력
            wsTarget.Cells(baseRow, "A").Value = count
            
            ' 학생정보 데이터(i행)를 졸업요건 시트의 상대 위치에 입력
            ' A열(1) -> D4 (baseRow + 1)
            wsTarget.Cells(baseRow + 1, "D").Value = wsData.Cells(i, 1).Value
            ' B열(2) -> B4 (baseRow + 1)
            wsTarget.Cells(baseRow + 1, "B").Value = wsData.Cells(i, 2).Value
            ' C열(3) -> B5 (baseRow + 2)
            wsTarget.Cells(baseRow + 2, "B").Value = wsData.Cells(i, 3).Value
            ' D열(4) -> D5 (baseRow + 2)
            wsTarget.Cells(baseRow + 2, "D").Value = wsData.Cells(i, 4).Value
            ' E열(5) -> B6 (baseRow + 3)
            wsTarget.Cells(baseRow + 3, "B").Value = wsData.Cells(i, 5).Value
            ' F열(6) -> D6 (baseRow + 3)
            wsTarget.Cells(baseRow + 3, "D").Value = wsData.Cells(i, 6).Value
            ' G열(7) -> B7 (baseRow + 4)
            wsTarget.Cells(baseRow + 4, "B").Value = wsData.Cells(i, 7).Value
            ' H열(8) -> D7 (baseRow + 4)
            wsTarget.Cells(baseRow + 4, "D").Value = wsData.Cells(i, 8).Value
            
        End If
    Next i
    
    Application.ScreenUpdating = True
    
    ' 6. 결과 알림
    If count > 0 Then
        MsgBox "총 " & count & "명의 데이터를 입력했습니다." & vbCrLf & _
               "첫 학생 위치: A3 / 두 번째 학생 위치: A10", vbInformation
    Else
        MsgBox "대상 학생이 없습니다.", vbExclamation
    End If
End Sub