Trích xuất top 10 sản phẩm bán chạy nhất (1 người xem)

Liên hệ QC

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

phuchuy9999

Thành viên mới
Tham gia
5/11/17
Bài viết
38
Được thích
5
Giới tính
Nam
Chào các anh chị cao thủ, 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, chú ý là bảng dữ liệu bán hàng cập nhật thêm mỗi ngày chứ ko phải tổng kết cuối năm.Mong các anh chị xem qua và hỗ trợ giúp em
1525587500474.png
 

File đính kèm

File đính kèm

Thằng B00015 có tổng số lượng = 30 sao không lọt vào top 10?
Bài này dùng PivotTable mới cho kết quả chính xác được
anh cho em hỏi nếu dùng pivot table thì mình nên làm thế nào để dữ liệu luôn đồng bộ theo dữ liệu bán hàng cập nhật mỗi ngày
 
File đã sửa và cập nhật cả pivot bạn xem thử.
1525598670730.png anh/chị cho em hỏi, cái ROW(A5) là gì, do em còn phải chép lại dòng công thức này về file gốc trong công ty , do số lượng dòng trong dữ liệu bán hàng còn nhiều hơn nên em chỉ up file tượng trưng
 
Chào các anh chị cao thủ, 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, chú ý là bảng dữ liệu bán hàng cập nhật thêm mỗi ngày chứ ko phải tổng kết cuối năm.Mong các anh chị xem qua và hỗ trợ giúp em
View attachment 195009
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^
 

File đính kèm

anh cho em hỏi nếu dùng pivot table thì mình nên làm thế nào để dữ liệu luôn đồng bộ theo dữ liệu bán hàng cập nhật mỗi ngày
Gửi bạn file theo cách làm của tôi, nếu bạn muốn cập nhật data mỗi ngày, bạn vô PivotTable Tools => Analyze => Refresh hoặc Change Data Source nhé.
 

File đính kèm

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^

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

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
4 A00008 80.00
5 A00006 80.00
6 A00005 60.00
7 A00004 45.00
8 B00012 40.00
9 A00007 40.00
10 B00015 30.00
11 B00013 30.00
 
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
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é.
 

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

Back
Top Bottom