Viết Hàm Vlookup bằng Code VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Yeuvoyeucon

Thành viên hoạt động
Tham gia
30/10/09
Bài viết
143
Được thích
23
Thưa các Anh, chị và các bạn trong diễn đàn,

Em có một bài tập nhờ các Anh chị trợ giúp viết Code cho Hàm Vlookup a. Ví dụ em gửi kèm theo nhằm mục đích lọc nhân viên bán cao thứ mấy trong tổng số nhân viên (Lớn nhất từ Z-A) và/hoặc tìm các nhân viên bán top 1,2,3,4...n trong tổng số nhân viên. Em đã vừa ứng dụng đoạn Code lọc, advances Filter và hàm và Pivot để làm.
+ Đầu tiên em Pivot để được danh sách mã nhân viên xếp theo thứ tự cao đến thấp và thêm một cột bên cạnh để xem nhân viên đó xếp thứ mấy. và một cột để xem nó ở top bao nhiêu (Sheet Pivot)
+ Đoạn code em cho nó Refesh cái Pivot sau đó dùng hàm Vlookup để lọc lại sang sheet Date cột J và K (Em đặt toàn vùng từ D->K tại Sheet DATA tên là Doanhthu

=> Yêu cầu đạt ra là để giảm dung lượng em muốn thay Hàm Vlookup ở cột J và K tại Sheet DATA bằng đoạn Code VBA để cho nhanh và nhẹ dung lượng. Nhờ mọi người giúp đỡ.
 

File đính kèm

Thưa các Anh, chị và các bạn trong diễn đàn,

Em có một bài tập nhờ các Anh chị trợ giúp viết Code cho Hàm Vlookup a. Ví dụ em gửi kèm theo nhằm mục đích lọc nhân viên bán cao thứ mấy trong tổng số nhân viên (Lớn nhất từ Z-A) và/hoặc tìm các nhân viên bán top 1,2,3,4...n trong tổng số nhân viên. Em đã vừa ứng dụng đoạn Code lọc, advances Filter và hàm và Pivot để làm.
+ Đầu tiên em Pivot để được danh sách mã nhân viên xếp theo thứ tự cao đến thấp và thêm một cột bên cạnh để xem nhân viên đó xếp thứ mấy. và một cột để xem nó ở top bao nhiêu (Sheet Pivot)
+ Đoạn code em cho nó Refesh cái Pivot sau đó dùng hàm Vlookup để lọc lại sang sheet Date cột J và K (Em đặt toàn vùng từ D->K tại Sheet DATA tên là Doanhthu

=> Yêu cầu đạt ra là để giảm dung lượng em muốn thay Hàm Vlookup ở cột J và K tại Sheet DATA bằng đoạn Code VBA để cho nhanh và nhẹ dung lượng. Nhờ mọi người giúp đỡ.
Xem qua thì thấy chỉ có 1 điều kiện "Top bao nhiêu".
 

File đính kèm

Upvote 0
Nhập top vào D5 sheet Kết Quả & chạy code.
Mã:
Public Sub GPE()
Dim cn As Object, str, Arr, I As Long, str1, Top As Long
With Sheet3
Top = .Range("D5").Value
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"";"
    str = "Select f4,f5,sum(f6) from [Data$D5:I] where f1 is not null group by f4,f5 order by sum(f6) desc"
    .Range("A8").CurrentRegion.Offset(1).ClearContents
    Arr = cn.Execute(str).getrows
    For I = 0 To Top - 1
        str1 = str1 & " or f5 = '" & Arr(1, I) & "'"
    Next
str1 = "select * from [Data$D5:I] where " & Mid(str1, 5, Len(str1))
.Range("A9").CopyFromRecordset cn.Execute(str1)
End With
End Sub



La lá giống SQL, Rất cảm ơn Bác đã nhiệt tình giúp đỡ nhé !
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom