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
Rảnh rỗi xin nông nổi nên ngồi phá code chơi, Viết Sub lấy duy nhất , Sub này áp dụng khoản 60000 dòng cũng gần tương đương với sử dụng DIC (chậm khoản 5s). Code chỉ dạng thô sơ chưa bẫy lỗi, lấy cột A làm giá trị thử
(mục đích là cho việc giảng dạy sử dụng thuật toán áp dụng vòng lặp để lấy duy nhất thay thằng DIC)
(mục đích là cho việc giảng dạy sử dụng thuật toán áp dụng vòng lặp để lấy duy nhất thay thằng DIC)
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
Lần chỉnh sửa cuối: