Sử dụng SUMPRODUCT trong excel sang vba bị lỗi 2015 khi thêm 2 dấu -- vào công thức (1 người xem)

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

Junior Skywalker

Thành viên mới
Tham gia
24/9/11
Bài viết
7
Được thích
0
Mình có vùng dữ liệu từ A1 đến A10 là chữ b

Mình sử dụng SUMPRODUCT để đếm có bao nhiêu chữ b từ A1 đến A10

Khi sử dụng trong excel công thức này
=SUMPRODUCT(($A$1:$A$100="b"))
thì kết quả trả về là 0

Mình phải sử dụng thêm 2 dấu -- vào công thức
=SUMPRODUCT(--($A$1:$A$100="b"))
thì kết quả mới trả về đúng là có 10 chữ b

Khi mang công thức này vào vba

dem_b = Evaluate("=SUMPRODUCT(Sheet1!A1:A100=""b"")")

thì trả kết quả là 0 đúng như trong excel

Nhưng khi đem công thức này vào
dem_b = Evaluate("=SUMPRODUCT(--Sheet1!A1:A100=""b"")")

thì lại báo lỗi là 2015

Xin hỏi:
1. Tại sao phải thêm hai dấu -- vào thì mới cho ra kết quả đúng trong excel.
2. Làm cách nào sử dụng SUMPRODUCT cho kết quả đếm đúng bao nhiêu chữ trong vba.

Cám ơn các bạn nhiều!
 
(1)
=SUMPRODUCT(--($A$1:$A$100="b"))

Công thức này nhiều người cho rằng sẽ nhanh hơn, nhưng làm bạn khó hiểu hơn so với

=SUMPRODUCT(1*($A$1:$A$100="b"))

(2) Là mình, thì mình xài tạm cái này:
PHP:
Sub Macro2()
 Range("B10").Select
 ActiveCell.FormulaR1C1 = "=SUMPRODUCT(--(R1C1:R100C1=""A""))"
 Range("B11").Select
End Sub
Chúc vui --=0 --=0 }}}}}
 
Lần chỉnh sửa cuối:
Upvote 0

(2) Là mình, thì mình xài tạm cái này:
PHP:
Sub Macro2()
 Range("B10").Select
 ActiveCell.FormulaR1C1 = "=SUMPRODUCT(--(R1C1:R100C1=""A""))"
 Range("B11").Select
End Sub

Cám ơn bạn đã hỗ trợ. Nhưng đoạn mã trên của bạn để nhập kết quả vào excel. Còn mình muốn gán giá trị cho dem_b là tổng số chữ thì phải sử dụng mã nào trong vba?
 
Upvote 0
Thực ra theo nguyên tắc parse biểu thức thì dấu -- đặt trước Sheet1 là hơi khó hiểu.
Trong bảng tính, Excel tự động giản dị hoá cách gọi Range cho nên bạn không thấy lỗi.
Trong VBA, hàm Evaluate không hiểu được vị trí của dấu -- đối với chuỗi đi sau nó. Bạn cần phải nêu rõ mục tiêu của dấu này bằng cách đặt đoạn Sheet2!A1:A100=""b"" trong dấu ngoặc.

dem_b = Evaluate("=SUMPRODUCT(--(Sheet2!A1:A100=""b""))")
 
Upvote 0

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

Back
Top Bottom