Cách sử dụng Application.Sumproduct trong VBA (1 người xem)

Liên hệ QC

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

GiangThieuSon

Thành viên mới
Tham gia
4/9/12
Bài viết
24
Được thích
12
Các anh chị xem giúp cách làm thế nào để sử dụng Apllication.Sumproduct trong VBA dùng vòng lặp

Mình cần code có dạng thế này nhưng không biết làm sao kết hợp để dùng Sumproduct

PHP:
Sub test()
Dim ketqua, I, J
ketqua = [A1:C6].Value
For I = 3 To UBound(ketqua, 1)
  For J = 3 To UBound(ketqua, 2)
    'ketqua(I, J) = Application.SumProduct....
  Next
Next
[A1].Resize(UBound(ketqua), UBound(ketqua, 2)) = ketqua
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Nếu bạn chỉ cần giá trị sau khi tính toán, bạn cần như vầy thôi:

PHP:
Sub Test()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    
        With Range("C3:E6")
            .ClearContents
            .FormulaR1C1 = _
                "=SUMPRODUCT((R3C8:R10C8=RC1)*" _
                & "(R3C9:R10C9=RC2)*(R1C10:R1C12=R1C)*" _
                & "(R2C10:R2C12=R2C)*(R3C10:R10C12))"
            .Value = .Value
        End With
        
        .EnableEvents = True
        .ScreenUpdating = True
    End With
End Sub
 

File đính kèm

Upvote 0
Cảm ơn bạn đã giúp, nhưng mình rất cần biết cách sử dụng Sumproduct để áp dụng vào mảng như mình đề cập phía trên

Có xem qua bài của bạn, mình nghĩ không cần dùng Sumproduct vẫn có thể ra kết quả giống sumproduct. Đã code thì code hết cho rồi. Mình sửa lại tí tiêu đề cho thuận tiện viết code, thiết nghĩ thêm 1 dòng DK chắc không thành vấn đề. Khi áp dụng vào dữ liệu thật bạn phải khai báo cho phù hợp nhé, phải dủng Xlup hay gì gì đó để lấy dữ liệu cho chuẩn. Code này chủ yếu cho bạn thấy thuật toán thôi nhé

PHP:
Sub test()
Dim dl, i, j, dk, kq, n, tim
[c4:e7].ClearContents
dk = [c1:e1].Value
kq = [a4:e7].Value
Set dl = [h1:l11]
For i = 1 To UBound(kq)
   For j = 4 To dl.Rows.Count
      If kq(i, 1) & kq(i, 2) = dl(j, 1) & dl(j, 2) Then
         For n = 1 To UBound(dk, 2)
            Set tim = [j1:l1].Find(dk(1, n))
            If Not tim Is Nothing Then
               kq(i, n + 2) = kq(i, n + 2) + tim.Offset(j - 1)
            End If
         Next
      End If
   Next
Next
[a4].Resize(i - 1, UBound(kq, 2)) = kq
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn đã giúp, nhưng mình rất cần biết cách sử dụng Sumproduct để áp dụng vào mảng như mình đề cập phía trên
Trước tiên Bạn phải chịu khó tìm kiếm trước đã, phía góc trên bên phải của trang Web này, tại hộp Google Search Bạn gõ vào Sumproduct xong enter sẽ có hàng loạt bài viết, tha hồ mà đọc.
Sau đó chỗ nào chưa hiểu thì mới nhờ giải đáp.
Chứ Bạn hỏi như trên thì ai biết mà trả lời bây giờ.
 
Upvote 0
Web KT

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

Back
Top Bottom