VBA để làm danh sách sort theo điều kiện

Liên hệ QC

tieuthubuongbinh

Học hoài vẫn dốt
Tham gia
3/9/08
Bài viết
566
Được thích
381
Giới tính
Nữ
Chào các bác,

Nhờ các bác viết code giúp em cho sheet report sao cho có 2 nút chọn.
1-Sort by value thì lấy 20 dòng có unfulfill value cao nhất (sau khi tổng) trong sheet raw => list bảng ra ở A5:E25
2- Sort by Reason and value thì lấy 20 dòng có unfulfill value cao nhất trong sheet raw, nhưng sort theo reason rồi mới đến unfulfill value => list bảng ra ở I5:M25

Cám ơn các bác trước ạ.
PS: em mù tịt VBA
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các bác,

Nhờ các bác viết code giúp em cho sheet report sao cho có 2 nút chọn.
1-Sort by value thì lấy 20 dòng có unfulfill value cao nhất trong sheet raw => list bảng ra ở A5:E25
2- Sort by Reason and value thì lấy 20 dòng có unfulfill value cao nhất trong sheet raw, nhưng sort theo reason rồi mới đến unfulfill value => list bảng ra ở I5:M25

Cám ơn các bác trước ạ.
PS: em mù tịt VBA
Tính tổng trước rồi sắp xếp hả bạn? Nếu bạn dùng muốn dùng ADO thì mình sẽ có cách giúp bạn.
 
Upvote 0
Tính tổng trước rồi sắp xếp hả bạn? Nếu bạn dùng muốn dùng ADO thì mình sẽ có cách giúp bạn.
Dạ đúng ạ, em quên vì em làm 1 sheet pivot trước đó. Em xài excel 2016, miễn tự động cập nhật khi bấm vào 2 nút sort mà ra 2 bảng em cần là được ạ. Cách VBA hay cách ADO thì em đều mù tịt nên bác cho ra kết quả mong đợi là em cám ơn ạ.
 
Upvote 0
Dạ đúng ạ, em quên vì em làm 1 sheet pivot trước đó. Em xài excel 2016, miễn tự động cập nhật khi bấm vào 2 nút sort mà ra 2 bảng em cần là được ạ. Cách VBA hay cách ADO thì em đều mù tịt nên bác cho ra kết quả mong đợi là em cám ơn ạ.
Bạn thử code sau nhé:

Mã:
Sub LayDuLieu()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
        Sheet2.Range("A6").CopyFromRecordset .Execute("Select top 20 [Sub Reason Category],[Material Number],[Material Description],sum([Unfulfilled Qty]),sum([Unfulfilled Value]) from [Raw$] group by [Sub Reason Category],[Material Number],[Material Description] order by sum([Unfulfilled Value]) Desc")
        Sheet2.Range("I6").CopyFromRecordset .Execute("Select top 20 [Sub Reason Category],[Material Number],[Material Description],sum([Unfulfilled Qty]),sum([Unfulfilled Value]) from [Raw$] WHERE [Unfulfilled Value]>0 group by [Sub Reason Category],[Material Number],[Material Description] order by [Sub Reason Category],sum([Unfulfilled Value]) Desc")
    End With
    
End Sub
 
Upvote 0
Dạ em xin lỗi vì nói sai ý số 2

2- Sort by Reason and value thì lấy 20 dòng có unfulfill value cao nhất trong sheet raw, nhưng sort theo reason rồi mới đến unfulfill value => list bảng ra ở I5:M25

Em xin sửa lại là sau khi ra bảng số 1 thì sort bảng số 1 theo cách: sắp xếp theo cột reason của bảng 1 với ưu tiên value từ cao xuống thấp. Nhờ bác chỉnh code lại giúp em ạ. Mục 1 thì em đã làm được rồi ạ. Cám ơn bác nhiều lắm.
 
Upvote 0
Dạ em xin lỗi vì nói sai ý số 2

2- Sort by Reason and value thì lấy 20 dòng có unfulfill value cao nhất trong sheet raw, nhưng sort theo reason rồi mới đến unfulfill value => list bảng ra ở I5:M25

Em xin sửa lại là sau khi ra bảng số 1 thì sort bảng số 1 theo cách: sắp xếp theo cột reason của bảng 1 với ưu tiên value từ cao xuống thấp. Nhờ bác chỉnh code lại giúp em ạ. Mục 1 thì em đã làm được rồi ạ. Cám ơn bác nhiều lắm.
Bạn thử lại xem coi đúng ý chưa nhé:

Mã:
Sub LayDuLieu()
    Dim strSQL As String
    strSQL = "Select top 20 [Sub Reason Category],[Material Number],[Material Description],sum([Unfulfilled Qty]),sum([Unfulfilled Value]) as SumValue from [Raw$] group by [Sub Reason Category],[Material Number],[Material Description] order by sum([Unfulfilled Value]) Desc"
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
        Sheet2.Range("A6").CopyFromRecordset .Execute(strSQL)
        Sheet2.Range("I6").CopyFromRecordset .Execute("select * from (" & strSQL & ") order by [Sub Reason Category], SumValue Desc")
    End With
    
End Sub
 
Upvote 0
Bác @Hai Lúa Miền Tây cho em nhờ 1 bài nữa ạ.
Em cần cập nhật tự động cho 4 cột em tô màu cam trong file.
1. Cột SKU: liệt kê danh sách các SKU active
2. Khi chọn tháng, channel, thì tự động sum theo từng code
3. Khi chọn channel là other exc TT thì cách sum sẽ khác mục 2.

Chi tiết em có để trong file, nhờ bác cho em code với ạ.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom