Trích xuất top 10 sản phẩm bán chạy nhất

Liên hệ QC
Kết quả không chính xác. Công thức nếu đùng thì kết quả hiển thị phải là:
1 A00002 7,800,000.00
2 A00003 7,000,000.00
3 A00007 3,800,000.00
4 A00008 3,600,000.00
5 B00013 2,850,000.00
6 B00014 2,800,000.00
7 B00012 2,600,000.00
8 A00004 2,250,000.00
9 A00005 1,800,000.00
10 A00006 1,200,000.00
Anh Tuân lần này bị "thầy chấm điểm" trừ rồi vì ra kết quả sai với đề bài.
em đang cần trích xuất top 10 mã hàng bán chạy nhất theo số lượng bán ra,
Lâu lâu anh em mình đều bị như vậy cả!
Riêng công thức còn sắp thứ tự dòng xuất hiện trước hay sau nữa
Nếu căn cứ vào số lượng bán để đánh giá cáo thấp thì kết quả là:
1 A00002 130.00
2 A00003 100.00
3 B00014 80.00 (cùng số 80 nhưng sẽ xuống sắp dưới)
4 A00008 80.00 (cùng số 80 nhưng sẽ xuống sắp dưới)
5 A00006 80.00 (cùng số 80 nhưng sẽ lên trên)
6 A00005 60.00
7 A00004 45.00
8 B00012 40.00
9 A00007 40.00
10 B00015 30.00 (cùng số 30 nhưng sẽ xuống sắp dưới)
11 B00013 30.00 (cùng số 30 nhưng sẽ lên trên)
Chúc anh ngày vui.
hihi ^o^
 
Lần chỉnh sửa cuối:
Kết quả không chính xác. Công thức nếu đùng thì kết quả hiển thị phải là:
1 A00002 7,800,000.00
2 A00003 7,000,000.00
3 A00007 3,800,000.00
4 A00008 3,600,000.00
5 B00013 2,850,000.00
6 B00014 2,800,000.00
7 B00012 2,600,000.00
8 A00004 2,250,000.00
9 A00005 1,800,000.00
10 A00006 1,200,000.00

Dùng ADO nó sẽ ra như sau:

1525831478065.png
Mã:
Sub Top_10()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended properties=Excel 12.0"
        Range("K2").CopyFromRecordset .Execute("Select Top 10 Masp, sum(SoLuong), Sum(ThanhTien) from [Sheet1$] Group by Masp order by sum(SoLuong) desc,Sum(ThanhTien) desc")
    End With
End Sub
 
Anh Tuân lần này bị "thầy chấm điểm" trừ rồi vì ra kết quả sai với đề bài.

Lâu lâu anh em mình đều bị như vậy cả!
Riêng công thức còn sắp thứ tự dòng xuất hiện trước hay sau nữa

Chúc anh ngày vui.
hihi ^o^

Hihi. Mình quên không chú ý phần sắp xếp cả theo mã hàng. Vậy alf công thức của Mộng Thường 2001 chính xác rồi nhé. Công thức siêu đấy :).

Nếu bạn nào muốn dùng SQL thì công thức sẽ là:
=bs_Sql("SELECT TOP 10 RECNO(),[MÃ SP], SUM([SỐ LƯỢNG]) FROM DT GROUP BY [MÃ SP] ORDER BY SUM([SỐ LƯỢNG]) DESC, [MÃ SP] ")
 
Hihi. Mình quên không chú ý phần sắp xếp cả theo mã hàng. Vậy alf công thức của Mộng Thường 2001 chính xác rồi nhé. Công thức siêu đấy :).
Nếu bạn nào muốn dùng SQL thì công thức sẽ là:
=bs_Sql("SELECT TOP 10 RECNO(),[MÃ SP], SUM([SỐ LƯỢNG]) FROM DT GROUP BY [MÃ SP] ORDER BY SUM([SỐ LƯỢNG]) DESC, [MÃ SP] ")
Cảm ơn anh đã giúp cho anh em diễn đàn nói chung, và cho công ty Lâm Thanh (Saigon) nói riêng.
Chúc anh ngày vui.
/-*+//-*+//-*+/
 
Góp vui thêm công thức không dùng bảng phụ:
Mã:
K2=OFFSET($D$1,ROUND(1/MOD(AGGREGATE(14,6,(SUMIF($D$2:$D$31,$D$2:$D$31,$E$2:$E$31)+1/$C$2:$C$31)/(COUNTIF(OFFSET($D$2,,,$C$2:$C$31),$D$2:$D$31)=1),$J2),1),),)
Xem file kèm.
hihi ^o^
cảm ôn công thức của anh/ chị, e được dịp mở mang tầm mắt
 
Dùng ADO nó sẽ ra như sau:

View attachment 195149
Mã:
Sub Top_10()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended properties=Excel 12.0"
        Range("K2").CopyFromRecordset .Execute("Select Top 10 Masp, sum(SoLuong), Sum(ThanhTien) from [Sheet1$] Group by Masp order by sum(SoLuong) desc,Sum(ThanhTien) desc")
    End With
End Sub

cái này có viết thêm code nào khác trong file nữa không anh, sao em chạy code báo lỗi (màu vàng) tại dòng Range("K2").CopyFromRecordset .Execute("Select Top 10 Masp, sum(SoLuong), Sum(ThanhTien) from [Sheet1$] Group by Masp order by sum(SoLuong) desc,Sum(ThanhTien) desc")
 
cái này có viết thêm code nào khác trong file nữa không anh, sao em chạy code báo lỗi (màu vàng) tại dòng Range("K2").CopyFromRecordset .Execute("Select Top 10 Masp, sum(SoLuong), Sum(ThanhTien) from [Sheet1$] Group by Masp order by sum(SoLuong) desc,Sum(ThanhTien) desc")
Bạn gửi file của bạn tôi xem thử nhé.
 
Web KT
Back
Top Bottom