Cách đếm không trùng lặp có điều kiện và tính tổng theo thời gian

  • Thread starter ocotinhyeu
  • Ngày gửi
O

ocotinhyeu

Guest
21/10/14
1
0
1
36
Chào các anh chị

Hiện tại em đang cần làm báo cáo về doanh số theo từng nhân viên, trước đây mỗi lần làm e chỉ biết làm Piivot( đương nhiên là sẽ có cái bất tiện của nó), nay mong muốn thao tác bằng hàm để có thêm kiến thức mong anh chị hướng dẫn giúp.

Và đây là 2 bái toán khó cần anh chị hỗ trợ :

Bài thứ 1 :
Em cần đếm tổng số hóa đơn ( không trùng lặp ) của nhân viên X đã thực hiện được trong 1 ngày.
có nghĩa là phải thõa 3 điều kiện : Không đếm số hóa đơn trùng, của từng nhân viên , và trong cùng 1 ngày.

Bài thú 2 :
Em cần tính tổng giá trị hóa đơn đã thức hiện được theo 1 khung giờ nhất định.
VD như em sẽ đặt một số khung giờ nhất định từ 9h-12h ; 12h- 16h ; 16h-19h; 19h-22h.
Thì em cần tính trong từng khỏang thời gian đó toàn bộ nhân viên đã bán được bao nhiêu tiền, và bao nhiêu bill.

Anh chị vui lòng kiểm tra file đính kèm để có thêm thông tin nhé

Cám ơn anh chị.
 

Đính kèm

  • DTNV.rar
    26.3 KB · Lượt xem: 251
Khóa học Quản trị dòng tiền
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Mình làm bỡi hàm người dùng, chưa chắc hợp khẩu vị của bạn;
Do đó mình mới làm câu 1 để bạn tham khảo mà thôi.
 

Đính kèm

  • gpeUDF.rar
    22.5 KB · Lượt xem: 250
nguyenduy2702

nguyenduy2702

Luôn luôn lắng nghe, lâu lâu mới hiểu...
Mình làm bỡi hàm người dùng, chưa chắc hợp khẩu vị của bạn;
Do đó mình mới làm câu 1 để bạn tham khảo mà thôi.

Cao thủ giải thích cho em hiểu hàm HDDN là ntn được không?? Bấm vào mà không thấy hiện đối số, mà cũng không hiểu hàm chạy ntn mà ra được kết quả hay như vậy?
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Đó là hàm người dùng viết mà bạn;
Trong cửa sổ VBA bạn sẽ thấy nội dung nó như thế này:
PHP:
Option Explicit
Function HDDN(CSDL As Range, Ngay As Date, Ten As String)
Dim Bill As String
Dim sRg As Range, Rng As Range
Dim Rws As Long
Rws = CSDL.Rows.Count
Set Rng = CSDL(4).Resize(Rws)
Set sRg = Rng.Find(Ten, , xlFormulas, xlWhole)
If Not sRg Is Nothing Then
  Set Rng = sRg.Resize(Rws)
  For Each sRg In Rng
  If sRg.Value = Ten And sRg.Offset(, -3).Value = Ngay And InStr(Bill, sRg.Offset(, -1).Value) < 1 Then
  Bill = Bill & ";" & sRg.Offset(, -1).Value
  HDDN = HDDN + 1
  End If
  Next sRg
End If
End Function
 

Xem nhiều

Webketoan Zalo OA