huuthang_bd
Chuyên gia GPE
Tạm thời sửa lại code xem máy bạn có chạy được không đã, chưa xét ưu tiên nhé.Mình cũng dùng máy win 10, 64bit, ram 12Gb và chạy vẫn báo lỗi như vậy? Hix, không biết có bạn nào trong diễn đàn chỉ giúp!
Code này tôi không dùng Dictionary, có vẻ nhanh hơn.
PHP:
Sub KhongUuTien()
Dim Data As Variant, i As Long, Result(1 To 1440, 1 To 2) As Long
Dim ArrInfo(0 To 1439, 0 To 36, 0 To 36) As Boolean
Data = Range(Cells(&H100000, 1).End(xlUp), Cells(2, 2)).Value
For i = 1 To UBound(Data, 1) - 1
ArrInfo(TimeValue(Data(i, 1)) * 60 * 24, Data(i, 2), Data(i + 1, 2)) = True
Next
Erase Data
Result(1, 1) = Range("E2").Value
Result(1, 2) = Range("F2").Value
x = -1
For Pos = 1 To 1439
For i = x + 1 To 36
If Not (ArrInfo(Pos, Result(Pos, 1), i) Or ArrInfo(Pos, Result(Pos, 2), i)) Then
If x < 0 Then
x = i
Else
Result(Pos + 1, 1) = x
Result(Pos + 1, 2) = i
x = -1
Exit For
End If
End If
Next
If i > 36 Then
If Pos > 1 Then
x = Result(Pos, 2)
Pos = Pos - 2
Else
MsgBox "Khong co ket qua thoa dieu kien"
Exit Sub
End If
End If
Next
Range("E2:F1441").Value = Result
End Sub