Xin chỉ giúp chố sai trong Code sử dụng hàm Sumproduct

Liên hệ QC

Phanhanhdai

Thành viên tiêu biểu
Tham gia
16/3/08
Bài viết
733
Được thích
1,876
Nghề nghiệp
Thiết kế công trình
Phiền các anh chị trên diễn đàn chỉ giúp em lỗi trong Code ở dưới
PHP:
Sub Phan_tich_vat_tu()
For Each Rng In Selection
    If Rng.Offset(, -2) <> "" Then
    Rng.Formula = "=sumprduct(Rng.Offset(, -1).Address(0, 0), _
         Rng.Offset(, -2).Address(0, 0))" & "*" & Rng.Offset(, -3).End(xlUp).Address(1, 0)
    End If
Next
End Sub
Em xin chân thành cảm ơn
 
Chỉnh sửa lần cuối bởi điều hành viên:
Phiền các anh chị trên diễn đàn chỉ giúp em lỗi trong Code ở dưới
Sub Phan_tich_vat_tu()
For Each Rng In Selection
If Rng.Offset(, -2) <> "" Then
Rng.Formula = "=sumprduct(Rng.Offset(, -1).Address(0, 0), Rng.Offset(, -2).Address(0, 0))" & "*" & Rng.Offset(, -3).End(xlUp).Address(1, 0)
End If
Next
End Sub
Em xin chân thành cảm ơn
Bạn đưa dử liệu lên cho dể theo dỏi
Nói thêm: SUMPRODUCT dùng trong VBA nó có hơi khác so với các hàm khác
Bạn có thể tham khảo các bài viết về cách dùng SUMPRODUCT trong VBA tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=816
 
Upvote 0
Phiền các anh chị trên diễn đàn chỉ giúp em lỗi trong Code ở dưới
Sub Phan_tich_vat_tu()
For Each Rng In Selection
If Rng.Offset(, -2) <> "" Then
Rng.Formula = "=sumprduct(Rng.Offset(, -1).Address(0, 0), Rng.Offset(, -2).Address(0, 0))" & "*" & Rng.Offset(, -3).End(xlUp).Address(1, 0)
End If
Next
End Sub
Em xin chân thành cảm ơn

Cú pháp trong hàm Sumproduct chỉ sử dụng được trong code VBA, không có tác dụng bên ngoài sheet. Bạn đưa file cụ thể lên để tìm ra cách khắc phục lỗi nha.
 
Upvote 0
Ở đây bạn đặt công thức vào ô chứ không phải là định trị. Nếu Setvalue cho ô thì bạn phải dùng phương thức sử dụng hàm của Worksheet : Application.WorkSheetFunction....
(Bạn kiểm tra lại hàm này có hiệu lực trên VBA không)
Còn code của bạn phải sửa lại (Mình tạm thời đặt
Rng.Formula = "=SUMPRODUCT(--($A$2:$A$29=" & Rng.Offset(, -2).Address(0, 0) & "),$B$2:$B$29)"
vì không biết công thức của bạn , tốt nhất bạn nhập công thức tại ô xong rồi chép vào đây điều chỉnh lại chút với các biến chạy là OK)
Mã:
Sub Phan_tich_vat_tu()
For Each rng In Selection
If rng.Offset(, -2) <> "" Then
Rng.Formula = "=SUMPRODUCT(--($A$2:$A$29=" & Rng.Offset(, -2).Address(0, 0) & "),$B$2:$B$29)"[COLOR=LightBlue]'"=sumprduct(Rng.Offset(, -1).Address(0, 0), Rng.Offset(, -2).Address(0, 0))" & "*" & rng.Offset(, -3).End(xlUp).Address(1, 0)[/COLOR]
End If
Next
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Phiền các anh chị trên diễn đàn chỉ giúp em lỗi trong Code ở dưới
Sub Phan_tich_vat_tu()
For Each Rng In Selection
If Rng.Offset(, -2) <> "" Then
Rng.Formula = "=sumprduct(Rng.Offset(, -1).Address(0, 0), Rng.Offset(, -2).Address(0, 0))" & "*" & Rng.Offset(, -3).End(xlUp).Address(1, 0)
End If
Next
End Sub
Em xin chân thành cảm ơn
Bạn sai chỗ này:
Mã:
"=sumprduct(Rng.Offset(, -1).Address(0, 0), Rng.Offset(, -2).Address(0, 0))"
Các dấu " đặt không đúng chỗ. Theo ý đồ của bạn thì phải là:
Mã:
"=sumprduct(" & Rng.Offset(, -1).Address(0, 0) & "," & Rng.Offset(, -2).Address(0, 0) & ")*" & Rng.Offset(, -3).End(xlUp).Address(1, 0)
Đó là chỉ mới đúng về cú pháp thôi. Còn kết quả thì tôi không đảm bảo. Chắc là sai, vì Sumproduct() mà bạn chỉ lấy địa chỉ của 1 ô thì dùng Sumproduct() làm gì.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom