Mình không xem code nhưng mà nên chuyển dùng vòng lặp không xác định thay bằng cái khác đi.Mình dùng điện thoại bạn có thể copy code lên xem nào.
Sub XUATGT()
Application.ScreenUpdating = False
Static i, j, k, cc, lra, lrb, pt As Integer
Static GT As String
Static KT As Boolean
lra = Cells(Rows.Count, 1).End(xlUp).Row
lrb = WorksheetFunction.CountIf(Range("F9:F" & lra), "x")
pt = lra - Cells(6, 3) * 2
Columns("H:BB").Delete
Cells(1, 10) = lra
Cells(1, 11) = lrb
Cells(1, 12) = pt
'xuat giam thi 1 - lan 1
For i = 9 To Cells(6, 3) + 8
Do
GT = WorksheetFunction.Index(Range("B9:B" & lra), Int(Rnd() * ((lrb + 1) - 1) + 1))
KT = GT = Sheet3.Cells(i, 10) Or GT = Sheet3.Cells(i, 11) Or GT = Sheet3.Cells(i, 16) Or GT = Sheet3.Cells(i, 17) _
Or GT = Sheet4.Cells(i, 10) Or GT = Sheet4.Cells(i, 11) Or GT = Sheet4.Cells(i, 16) Or GT = Sheet4.Cells(i, 17) _
Or GT = Sheet5.Cells(i, 10) Or GT = Sheet5.Cells(i, 11) Or GT = Sheet5.Cells(i, 16) Or GT = Sheet5.Cells(i, 17) _
Or GT = Sheet6.Cells(i, 10) Or GT = Sheet6.Cells(i, 11) Or GT = Sheet6.Cells(i, 16) Or GT = Sheet6.Cells(i, 17) _
Or GT = Sheet7.Cells(i, 10) Or GT = Sheet7.Cells(i, 11) Or GT = Sheet7.Cells(i, 16) Or GT = Sheet7.Cells(i, 17) _
Or GT = Sheet8.Cells(i, 10) Or GT = Sheet8.Cells(i, 11) Or GT = Sheet8.Cells(i, 16) Or GT = Sheet8.Cells(i, 17) _
Or GT = Sheet9.Cells(i, 10) Or GT = Sheet9.Cells(i, 11) Or GT = Sheet9.Cells(i, 16) Or GT = Sheet9.Cells(i, 17) _
Or GT = Sheet10.Cells(i, 10) Or GT = Sheet10.Cells(i, 11) Or GT = Sheet10.Cells(i, 16) Or GT = Sheet10.Cells(i, 17) _
Or GT = Sheet11.Cells(i, 10) Or GT = Sheet11.Cells(i, 11) Or GT = Sheet11.Cells(i, 16) Or GT = Sheet11.Cells(i, 17) _
Or GT = Sheet12.Cells(i, 10) Or GT = Sheet12.Cells(i, 11) Or GT = Sheet12.Cells(i, 16) Or GT = Sheet12.Cells(i, 17) _
Or GT = Sheet13.Cells(i, 10) Or GT = Sheet13.Cells(i, 11) Or GT = Sheet13.Cells(i, 16) Or GT = Sheet13.Cells(i, 17) _
Or GT = Sheet14.Cells(i, 10) Or GT = Sheet14.Cells(i, 11) Or GT = Sheet14.Cells(i, 16) Or GT = Sheet14.Cells(i, 17)
k = 0
For j = 9 To Cells(6, 3) + 8
If GT = Cells(j, 10) Then
k = k + 1
End If
Next j
Loop Until k = 0 And KT = False
If k = 0 Then
Cells(i, 10) = GT
End If
Next i
'xuat giam thi 2 - lan 1
For i = 9 To Cells(6, 3) + 8
Do
k = 0
GT = WorksheetFunction.Index(Range("B9:B" & lra), Int(Rnd() * ((lrb + 1) - 1) + 1))
KT = GT = Sheet3.Cells(i, 10) Or GT = Sheet3.Cells(i, 11) Or GT = Sheet3.Cells(i, 16) Or GT = Sheet3.Cells(i, 17) _
Or GT = Sheet4.Cells(i, 10) Or GT = Sheet4.Cells(i, 11) Or GT = Sheet4.Cells(i, 16) Or GT = Sheet4.Cells(i, 17) _
Or GT = Sheet5.Cells(i, 10) Or GT = Sheet5.Cells(i, 11) Or GT = Sheet5.Cells(i, 16) Or GT = Sheet5.Cells(i, 17) _
Or GT = Sheet6.Cells(i, 10) Or GT = Sheet6.Cells(i, 11) Or GT = Sheet6.Cells(i, 16) Or GT = Sheet6.Cells(i, 17) _
Or GT = Sheet7.Cells(i, 10) Or GT = Sheet7.Cells(i, 11) Or GT = Sheet7.Cells(i, 16) Or GT = Sheet7.Cells(i, 17) _
Or GT = Sheet8.Cells(i, 10) Or GT = Sheet8.Cells(i, 11) Or GT = Sheet8.Cells(i, 16) Or GT = Sheet8.Cells(i, 17) _
Or GT = Sheet9.Cells(i, 10) Or GT = Sheet9.Cells(i, 11) Or GT = Sheet9.Cells(i, 16) Or GT = Sheet9.Cells(i, 17) _
Or GT = Sheet10.Cells(i, 10) Or GT = Sheet10.Cells(i, 11) Or GT = Sheet10.Cells(i, 16) Or GT = Sheet10.Cells(i, 17) _
Or GT = Sheet11.Cells(i, 10) Or GT = Sheet11.Cells(i, 11) Or GT = Sheet11.Cells(i, 16) Or GT = Sheet11.Cells(i, 17) _
Or GT = Sheet12.Cells(i, 10) Or GT = Sheet12.Cells(i, 11) Or GT = Sheet12.Cells(i, 16) Or GT = Sheet12.Cells(i, 17) _
Or GT = Sheet13.Cells(i, 10) Or GT = Sheet13.Cells(i, 11) Or GT = Sheet13.Cells(i, 16) Or GT = Sheet13.Cells(i, 17) _
Or GT = Sheet14.Cells(i, 10) Or GT = Sheet14.Cells(i, 11) Or GT = Sheet14.Cells(i, 16) Or GT = Sheet14.Cells(i, 17)
For j = 9 To Cells(6, 3) + 8
If GT = Cells(j, 10) Or GT = Cells(j, 11) Then
k = k + 1
End If
Next j
Loop Until k = 0 And KT = False
If k = 0 Then
Cells(i, 11) = GT
End If
Next i
'xuat giam thi 3 - lan 1
For i = 9 To pt
Do
k = 0
GT = WorksheetFunction.Index(Range("B9:B" & lra), Int(Rnd() * (lra - 7 - 1)) + 1)
For j = 9 To pt + 8
KT = GT = Cells(j, 10) Or GT = Cells(j, 11) Or GT = Cells(j, 12)
If KT = True Then
k = k + 1
End If
Next j
Loop Until k = 0 And KT = False
If k = 0 Then
Cells(i, 12) = GT
End If
Next i
'xuat giam thi 1 - lan 2
For i = 9 To Cells(6, 3) + 8
Do
GT = WorksheetFunction.Index(Range("B9:B" & lra), Int(Rnd() * ((lrb + 1) - 1) + 1))
KT = GT = Sheet3.Cells(i, 10) Or GT = Sheet3.Cells(i, 11) Or GT = Sheet3.Cells(i, 16) Or GT = Sheet3.Cells(i, 17) _
Or GT = Sheet4.Cells(i, 10) Or GT = Sheet4.Cells(i, 11) Or GT = Sheet4.Cells(i, 16) Or GT = Sheet4.Cells(i, 17) _
Or GT = Sheet5.Cells(i, 10) Or GT = Sheet5.Cells(i, 11) Or GT = Sheet5.Cells(i, 16) Or GT = Sheet5.Cells(i, 17) _
Or GT = Sheet6.Cells(i, 10) Or GT = Sheet6.Cells(i, 11) Or GT = Sheet6.Cells(i, 16) Or GT = Sheet6.Cells(i, 17) _
Or GT = Sheet7.Cells(i, 10) Or GT = Sheet7.Cells(i, 11) Or GT = Sheet7.Cells(i, 16) Or GT = Sheet7.Cells(i, 17) _
Or GT = Sheet8.Cells(i, 10) Or GT = Sheet8.Cells(i, 11) Or GT = Sheet8.Cells(i, 16) Or GT = Sheet8.Cells(i, 17) _
Or GT = Sheet9.Cells(i, 10) Or GT = Sheet9.Cells(i, 11) Or GT = Sheet9.Cells(i, 16) Or GT = Sheet9.Cells(i, 17) _
Or GT = Sheet10.Cells(i, 10) Or GT = Sheet10.Cells(i, 11) Or GT = Sheet10.Cells(i, 16) Or GT = Sheet10.Cells(i, 17) _
Or GT = Sheet11.Cells(i, 10) Or GT = Sheet11.Cells(i, 11) Or GT = Sheet11.Cells(i, 16) Or GT = Sheet11.Cells(i, 17) _
Or GT = Sheet12.Cells(i, 10) Or GT = Sheet12.Cells(i, 11) Or GT = Sheet12.Cells(i, 16) Or GT = Sheet12.Cells(i, 17) _
Or GT = Sheet13.Cells(i, 10) Or GT = Sheet13.Cells(i, 11) Or GT = Sheet13.Cells(i, 16) Or GT = Sheet13.Cells(i, 17) _
Or GT = Sheet14.Cells(i, 10) Or GT = Sheet14.Cells(i, 11) Or GT = Sheet14.Cells(i, 16) Or GT = Sheet14.Cells(i, 17)
k = 0
For j = 9 To Cells(6, 3) + 8
If GT = Cells(j, 16) Or GT = Cells(j, 10) Then
k = k + 1
End If
Next j
Loop Until k = 0 And KT = False
If k = 0 Then
Cells(i, 16) = GT
End If
Next i
'xuat giam thi 2 - lan 2
For i = 9 To Cells(6, 3) + 8
Do
k = 0
GT = WorksheetFunction.Index(Range("B9:B" & lra), Int(Rnd() * ((lrb + 1) - 1) + 1))
KT = GT = Sheet3.Cells(i, 10) Or GT = Sheet3.Cells(i, 11) Or GT = Sheet3.Cells(i, 16) Or GT = Sheet3.Cells(i, 17) _
Or GT = Sheet4.Cells(i, 10) Or GT = Sheet4.Cells(i, 11) Or GT = Sheet4.Cells(i, 16) Or GT = Sheet4.Cells(i, 17) _
Or GT = Sheet5.Cells(i, 10) Or GT = Sheet5.Cells(i, 11) Or GT = Sheet5.Cells(i, 16) Or GT = Sheet5.Cells(i, 17) _
Or GT = Sheet6.Cells(i, 10) Or GT = Sheet6.Cells(i, 11) Or GT = Sheet6.Cells(i, 16) Or GT = Sheet6.Cells(i, 17) _
Or GT = Sheet7.Cells(i, 10) Or GT = Sheet7.Cells(i, 11) Or GT = Sheet7.Cells(i, 16) Or GT = Sheet7.Cells(i, 17) _
Or GT = Sheet8.Cells(i, 10) Or GT = Sheet8.Cells(i, 11) Or GT = Sheet8.Cells(i, 16) Or GT = Sheet8.Cells(i, 17) _
Or GT = Sheet9.Cells(i, 10) Or GT = Sheet9.Cells(i, 11) Or GT = Sheet9.Cells(i, 16) Or GT = Sheet9.Cells(i, 17) _
Or GT = Sheet10.Cells(i, 10) Or GT = Sheet10.Cells(i, 11) Or GT = Sheet10.Cells(i, 16) Or GT = Sheet10.Cells(i, 17) _
Or GT = Sheet11.Cells(i, 10) Or GT = Sheet11.Cells(i, 11) Or GT = Sheet11.Cells(i, 16) Or GT = Sheet11.Cells(i, 17) _
Or GT = Sheet12.Cells(i, 10) Or GT = Sheet12.Cells(i, 11) Or GT = Sheet12.Cells(i, 16) Or GT = Sheet12.Cells(i, 17) _
Or GT = Sheet13.Cells(i, 10) Or GT = Sheet13.Cells(i, 11) Or GT = Sheet13.Cells(i, 16) Or GT = Sheet13.Cells(i, 17) _
Or GT = Sheet14.Cells(i, 10) Or GT = Sheet14.Cells(i, 11) Or GT = Sheet14.Cells(i, 16) Or GT = Sheet14.Cells(i, 17)
For j = 9 To Cells(6, 3) + 8
If GT = Cells(j, 16) Or GT = Cells(j, 17) Or GT = Cells(j, 11) Then
k = k + 1
End If
Next j
Loop Until k = 0 And KT = False
If k = 0 Then
Cells(i, 17) = GT
End If
Next i
'xuat giam thi 3 - lan 2
For i = 9 To pt
Do
k = 0
GT = WorksheetFunction.Index(Range("B9:B" & lra), Int(Rnd() * ((lra - 7) - 1) + 1))
For j = 9 To pt + 8
If GT = Cells(j, 16) Or GT = Cells(j, 17) Or GT = Cells(j, 18) Then
k = k + 1
End If
Next j
Loop Until k = 0
If k = 0 Then
Cells(i, 18) = GT
End If
Next i
Call DINHDANG
Application.ScreenUpdating = False
End Sub