Sub XYZ()
Dim sArr(), aHL(1 To 4, 1 To 2), res(1 To 6, 1 To 8)
Dim n&, i&, r&, c&, r2&, c2&, k&
With Sheets("Sheet1")
i = .Range("C" & Rows.Count).End(xlUp).Row
If i < 10 Then MsgBox ("Hos sinh qua it, giai tan lop!"): Exit Sub
sArr = .Range("A3:C" & i).Value
End With
For i = 1 To UBound(sArr)
aHL(sArr(i, 3), 1) = aHL(sArr(i, 3), 1) & "," & i
Next i
For n = 1 To 4
aHL(n, 1) = Split(aHL(n, 1), ",")
Next n
k = 0: r = 1: c = -1
For n = 1 To 2
For i = 1 To UBound(aHL(n, 1))
k = k + 1
If c = 7 Then c = 1: r = r + 1 Else c = c + 2
res(r, c) = aHL(n, 1)(i)
If k = 24 Then i = i + 1: Exit For
Next i
aHL(n, 2) = i - 1
If aHL(n, 2) < UBound(aHL(n, 1)) Then Exit For
Next n
k = 0: r2 = 1: c2 = 0
For n = 4 To 3 Step -1
For i = 1 To UBound(aHL(n, 1))
k = k + 1
If c2 = 8 Then c2 = 2: r2 = r2 + 1 Else c2 = c2 + 2
res(r2, c2) = aHL(n, 1)(i)
If k = 24 Then Exit For
Next i
aHL(n, 2) = i
Next n
If aHL(2, 2) < UBound(aHL(2, 1)) Then
For n = 1 To 2
For i = aHL(n, 2) + 1 To UBound(aHL(n, 1))
If c2 = 8 Then c2 = 2: r2 = r2 + 1 Else c2 = c2 + 2
res(r2, c2) = aHL(n, 1)(i)
Next i
Next n
Else
For n = 4 To 3 Step -1
For i = aHL(n, 2) + 1 To UBound(aHL(n, 1))
If c = 7 Then c = 1: r = r + 1 Else c = c + 2
res(r, c) = aHL(n, 1)(i)
Next i
Next n
End If
Sheets("Sheet1").Range("E3").Resize(6, 8) = res
End Sub