Public Sub SoConLai()
Dim Vung, VungNhap, Cll, iDau, iCuoi, d, I, K, Mg(), MgKq(), kK, M, Kq(), mM
Set d = CreateObject("scripting.dictionary")
Set Vung = Sheets("da ban").Range(Sheets("da ban").[a2], Sheets("da ban").[a10000].End(xlUp))
Set VungNhap = Sheets("da nhap").Range(Sheets("da nhap").[a2], Sheets("da nhap").[a10000].End(xlUp))
[a2:c30000].ClearContents
ReDim Mg(1 To 50000, 1 To 1): ReDim MgKq(1 To 50000, 1 To 1)
For Each Cll In Vung
iDau = Val(Left(Cll, InStr(1, Cll, "-") - 1))
iCuoi = Val(Right(Cll, Len(Cll) - Len(iDau) - 1))
For I = iDau To iCuoi
If Not d.exists(I) Then
K = K + 1
d.Add (I), K
Mg(K, 1) = I
End If
Next I
Next Cll
For Each Cll In VungNhap
iDau = Val(Left(Cll, InStr(1, Cll, " ") - 1))
iCuoi = Val(Right(Cll, Len(Cll) - Len(iDau) - 1))
For I = iDau To iCuoi
If Not d.exists(I) Then
kK = kK + 1
MgKq(kK, 1) = I
End If
Next I
Next Cll
[a2].Resize(kK) = MgKq
ReDim Kq(1 To kK, 1 To 1)
iDau = MgKq(LBound(MgKq), 1)
For M = LBound(MgKq) + 1 To UBound(MgKq)
If M = kK Then
iCuoi = MgKq(M, 1)
mM = mM + 1
Kq(mM, 1) = "Tu " & iDau & " den " & iCuoi
ElseIf MgKq(M, 1) - MgKq(M - 1, 1) > 1 Then
iCuoi = MgKq(M - 1, 1)
mM = mM + 1
Kq(mM, 1) = "Tu " & iDau & " den " & iCuoi
iDau = MgKq(M, 1)
End If
Next M
[c2].Resize(mM) = Kq
End Sub