phihndhsp
Thành viên gạo cội




- Tham gia
- 26/12/09
- Bài viết
- 3,363
- Được thích
- 2,488
- Giới tính
- Nam
- Nghề nghiệp
- Giáo Viên
Giải pháp tìm duy nhất để thay thế DIC( cái này để học hành và tư duy thôi)
Nếu bạn nào muốn tìm hiểu thuật toán ở dạng đơn sơ nhất không sử dụng hàm trong VBA thì có thể tham khảo bài này tôi không bẫy bất cứ lỗi gì nên code cũng ngắn gọn, tốc độ xem ra cũng được so với DIC (kém chừng 5-6s so với dữ liệu 60000 dòng)
Nếu bạn nào muốn tìm hiểu thuật toán ở dạng đơn sơ nhất không sử dụng hàm trong VBA thì có thể tham khảo bài này tôi không bẫy bất cứ lỗi gì nên code cũng ngắn gọn, tốc độ xem ra cũng được so với DIC (kém chừng 5-6s so với dữ liệu 60000 dòng)
Mã:
Sub DIC_01()
Dim Rng As Range
Dim Arrd()
Dim Arrn()
Dim DongCuoi As Long
Dim i As Long, j As Long
Dim DongHienTai As Long
DongCuoi = Sheet1.Range("A150000").End(xlUp).Row
Arrn = Sheet1.Range("A2:A" & DongCuoi)
ReDim Arrd(1 To DongCuoi, 1 To 1)
Arrd(1, 1) = Arrn(1, 1)
DongHienTai = 1
flag = True
For i = 1 To UBound(Arrn, 1)
For j = 1 To DongHienTai
If (Arrn(i, 1) = Arrd(j, 1)) Then
flag = False
Exit For
End If
Next j
If (flag = True) Then
DongHienTai = DongHienTai + 1
Arrd(DongHienTai, 1) = Arrn(i, 1)
End If
flag = True
Next
Sheet1.Range("J2:Z10000").Clear
Sheet1.Range("J2").Resize(DongHienTai, 1) = Arrd
End Sub