Lỗi gặp phải khi dùng hàm sumproduct trên Form

Liên hệ QC

tranvinhhn

Thành viên mới
Tham gia
18/3/08
Bài viết
13
Được thích
3
Em dùng hàm sumproduct để đếm số lần suất hiện của khách hàng trên từng chuyến tàu. Tuy nhiên khi dùng câu lệnh trên Form "Dem = CDbl([SumProduct(--(DATA1=SoChuyen),--(DATA2=MKH))])" thì không cho kết quả đúng.

Trên excel thì dùng công thức "=SUMPRODUCT(--(DATA1=D1),--(DATA2=D2))" thì cho ra kết quả đúng.

Vậy các bác có thể giúp em xem phải dùng cú pháp câu lệnh như thế nào thì mới chậy trên Form được (dùng biến trực tiếp nhé, không dùng biến trung gian, hay lấy giá trị của Lable. Dem thông qua excel.

Các bác xem file đính kèm để rõ hơn ạ!

Trân trọng cảm ơn!
 

File đính kèm

Em dùng hàm sumproduct để đếm số lần suất hiện của khách hàng trên từng chuyến tàu. Tuy nhiên khi dùng câu lệnh trên Form "Dem = CDbl([SumProduct(--(DATA1=SoChuyen),--(DATA2=MKH))])" thì không cho kết quả đúng.

Trên excel thì dùng công thức "=SUMPRODUCT(--(DATA1=D1),--(DATA2=D2))" thì cho ra kết quả đúng.

Vậy các bác có thể giúp em xem phải dùng cú pháp câu lệnh như thế nào thì mới chậy trên Form được (dùng biến trực tiếp nhé, không dùng biến trung gian, hay lấy giá trị của Lable. Dem thông qua excel.

Các bác xem file đính kèm để rõ hơn ạ!

Trân trọng cảm ơn!
Chưa nói đến chuyện bạn sai cú pháp, ngay cả viết chính xác cú pháp cũng chưa chắc đã ra kết quả
Phải vầy mới được:
PHP:
Private Sub MKH_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  Dim Tmp
  On Error Resume Next
  Tmp = Evaluate("SumProduct((Data!" & S_DATA.Range("Data1").Address & "=""" & _
       SoChuyen.Text & """)*(Data!" & S_DATA.Range("Data2").Address & "=""" & MKH.Text & """))")
  Dem.Text = Val(Tmp)
End Sub
Viết công thức như 1 chuổi, sau đó lồng Evaluate vào để tính
 
Upvote 0
Mình cũng chưa rõ lý do, thôi thì bạn dùng cách sau cho rảnh:
Mã:
Private Sub tinh()
Dim so, cl As Range
    For Each cl In Range("DATA1")
        If cl = Me.SoChuyen Then
            If cl.Offset(, 1) = Me.MKH Then
            so = so + 1
        End If
    End If
  Next
Me.Dem = so
End Sub
'========================
Private Sub MKH_Click()
tinh
End Sub
'========================
Private Sub SoChuyen_Click()
tinh
End Sub
 
Upvote 0
Upvote 0
Em cảm ơn Bác sealand
Số điện thoại của bác không liên lạc được. Có vấn đề gì vậy ạ?

Theo kế hoạch thứ 3 tuần sau em đi Công tác Hải Phòng, bác có rảnh không ạ? Anh em mình gặp nhau chút nhé!

Trân trọng!
 
Upvote 0
Điện thoại thì vẫn bình thường, nhưng có điều kỳ này mình đang làm tại xưởng sắt thép nhiều nên chất lượng liên lạc kém hẳn. Có người thông báo lại mình lấy máy bàn gọi chính máy mình cũng không được. Khi nào ra khỏi xưởng thì lại bình thường.Không có cách nào khắc phục được.
Khi nào đến HP ráng liên lạc chút nha.
 
Upvote 0
Vâng vậy khi nào em xuống HP sẽ cố gắng liên lạc với anh ạ!
Theo em nghĩ dùng vòng lặp sẽ chậm hơn Sumproduct, mục đích em viết biến Dem này dùng cho việc bẫy lỗi khi nhập liệu. Nếu mà Nhập Khách hàng cho chuyến Tàu mà đã tồn tại KH đó rồi thì sẽ thông báo lỗi.

Trên diễn đàn thông tin về hàm Sumproduct không nhiều, vì vậy rất mong các bác bổ xung thêm ý kiến!
 
Upvote 0
Trên diễn đàn thông tin về hàm Sumproduct không nhiều, vì vậy rất mong các bác bổ xung thêm ý kiến!
Cách đơn giản nhất là bạn bật record macro lên, xong bạn gõ hàm SUMPRODUCT vào 1 cell nào đó! Cuối cùng mở code ra xem nó viết thế nào thì cứ bắt chước y vậy thôi!
Lưu ý rằng cấu trúc [......] là tương đương với Evaluate(....)
------------
Thêm nữa, xin rút gọn lại code trên thêm 1 chút:
PHP:
Tmp = Evaluate("SumProduct((Data1 =""" & SoChuyen.Text & """)*(Data2=""" & MKH.Text & """))")
 
Lần chỉnh sửa cuối:
Upvote 0
Cách đơn giản nhất là bạn bật record macro lên, xong bạn gõ hàm SUMPRODUCT vào 1 cell nào đó! Cuối cùng mở code ra xem nó viết thế nào thì cứ bắt chước y vậy thôi!
Lưu ý rằng cấu trúc [......] là tương đương với Evaluate(....)
------------
Thêm nữa, xin rút gọn lại code trên thêm 1 chút:
PHP:
Tmp = Evaluate("SumProduct((Data1 =""" & SoChuyen.Text & """)*(Data2=""" & MKH.Text & """))")

Rất cảm ơn anh đã chỉ giúp, nếu có điều kiện em mời anh cafe nhé!
 
Upvote 0
Web KT

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

Back
Top Bottom