Giúp thống kê số lượng khách hàng trong 1 khoảng thời gian bằng VB? Có hậu tạ :D (1 người xem)

Liên hệ QC

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

Status
Không mở trả lời sau này.

thanhphuongvip

Mới học VBA, hỏi ngu anh chị đừng chửi ạ
Tham gia
16/1/10
Bài viết
136
Được thích
22
Minh đang viết một file bán hàng, giờ mình muốn thống kê:

- Số lần mua của 1 KH trong 1 khoảng thời gian
- Số KH mua trong 1 khoảng thời gian
- Số KH mua 1, 2, 3 lần trong 1 khoảng thời gian

Từ môt sheet chi tiết bán hàng cho trước, mình thử dùng các hàm nhưng vẫn ko được, anh em mình có ai giỏi VBA giúp mình tí, mình sẽ hậu tạ card điện thoại, xin cảm ơn.

Mình gửi file lên mời các bạn xem, sheet dữ liệu là BanHang và sheet cần thống kê là THỐNG KÊ KHÁCH HÀNG.
chú thích: mỗi khách hàng mua một lần nhiều sản phẩm, mua cùng 1 ngày thì chỉ tính một lần, và thống kê ko phân biệt khách hàng cũ hoặc mới.

https://drive.google.com/open?id=0B4QDEj19_hHbQUJKLWNuZm9uTjQ
 
cái này dùng công thức được rồi, mình làm dùm rồi đó
Không phải vậy bạn ơi, tùy thuộc vào cột ngày tháng nữa, mua nhiều sản phẩm nhưng cùng một ngày thì chỉ tính một lần thôi. Cái khó là ở chỗ đó, chứ dùng countif với sumif thì quá dễ rồi.
 
Upvote 0
Không phải vậy bạn ơi, tùy thuộc vào cột ngày tháng nữa, mua nhiều sản phẩm nhưng cùng một ngày thì chỉ tính một lần thôi. Cái khó là ở chỗ đó, chứ dùng countif với sumif thì quá dễ rồi.
Bạn thử code này. Chạy code ở sheet thống kê
Mã:
Sub thongke()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("C4").CopyFromRecordset cn.Execute("select count(*) from (select distinct f1 from [BANHANG$A5:D] where f4 like '" & Cells(4, 2) & "')")
    Range("C9").CopyFromRecordset cn.Execute("select count(*) from (select distinct f4 from [BANHANG$A5:D] where f1 between #" & Cells(9, 1) & "# and #" & Cells(9, 2) & "#)")
    Range("D14").CopyFromRecordset cn.Execute("select count(*) from (select f4, count(*) from (select distinct f1, f4 from [BANHANG$A5:D] where f1 between #" & Cells(9, 1) & "# and #" & Cells(9, 2) & "#) group by f4 having count(*) = " & Cells(14, 3) & ")")
    Set cn = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Minh đang viết một file bán hàng, giờ mình muốn thống kê:

- Số lần mua của 1 KH trong 1 khoảng thời gian
- Số KH mua trong 1 khoảng thời gian
- Số KH mua 1, 2, 3 lần trong 1 khoảng thời gian

Từ môt sheet chi tiết bán hàng cho trước, mình thử dùng các hàm nhưng vẫn ko được, anh em mình có ai giỏi VBA giúp mình tí, mình sẽ hậu tạ card điện thoại, xin cảm ơn.

Mình gửi file lên mời các bạn xem, sheet dữ liệu là BanHang và sheet cần thống kê là THỐNG KÊ KHÁCH HÀNG.
chú thích: mỗi khách hàng mua một lần nhiều sản phẩm, mua cùng 1 ngày thì chỉ tính một lần, và thống kê ko phân biệt khách hàng cũ hoặc mới.

https://drive.google.com/open?id=0B4QDEj19_hHbQUJKLWNuZm9uTjQ
Ngại nhận cái card điện thoại quá nên hổng muốn làm
 
Upvote 0
Bạn thử code này. Chạy code ở sheet thống kê
Mã:
Sub thongke()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("C4").CopyFromRecordset cn.Execute("select count(*) from (select distinct f1 from [BANHANG$A5:D] where f4 like '" & Cells(4, 2) & "')")
    Range("C9").CopyFromRecordset cn.Execute("select count(*) from (select distinct f4 from [BANHANG$A5:D] where f1 between #" & Cells(9, 1) & "# and #" & Cells(9, 2) & "#)")
    Range("D14").CopyFromRecordset cn.Execute("select count(*) from (select f4, count(*) from (select distinct f1, f4 from [BANHANG$A5:D] where f1 between #" & Cells(9, 1) & "# and #" & Cells(9, 2) & "#) group by f4 having count(*) = " & Cells(14, 3) & ")")
    Set cn = Nothing
End Sub
Minh đã chép vào rồi nhưng ko thấy chạy ra kết quả gì hết bạn ơi, xem lại giúp mình được k?
 
Upvote 0

File đính kèm

Upvote 0
File sử dụng công thức ở cột F, tab Thống Kê.... Hôm trước tôi đọc xót "chú thích: mỗi khách hàng mua một lần nhiều sản phẩm, mua cùng 1 ngày thì chỉ tính một lần, và thống kê ko phân biệt khách hàng cũ hoặc mới."

Riêng #3, thêm 1 cột phụ trong bảng BANHANG. Bạn xem thử thế nào.
 

File đính kèm

Upvote 0
mình bấm chạy lại rồi, vẫn không được bạn ơi, bạn có thể giúp mình qua teamview ko?
Hi, bây h mới kt lại code, đúng là do chép code dòng trên xuông dưới nên bị sai
bạn dùng code này, chỗ bôi đỏ là do mình sai (đúng là 14, code trc nó là 9)
Mã:
Sub thongke()
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("C4").CopyFromRecordset cn.Execute("select count(*) from (select distinct f1 from [BANHANG$A5:D] where f4 like '" & Cells(4, 2) & "')")
    Range("C9").CopyFromRecordset cn.Execute("select count(*) from (select distinct f4 from [BANHANG$A5:D] where f1 between #" & Cells(9, 1) & "# and #" & Cells(9, 2) & "#)")
    Range("D14").CopyFromRecordset cn.Execute("select count(*) from (select f4, count(*) from (select distinct f1, f4 from [BANHANG$A5:D] where f1 between #" & Cells([COLOR=#ff0000]14[/COLOR], 1) & "# and #" & Cells([COLOR=#ff0000]14[/COLOR], 2) & "#) group by f4 having count(*) = " & Cells(14, 3) & ")")
    Set cn = Nothing
End Sub
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom