Dấu -- trong sumproduct là để đổi kiểu từ logical value sang numerical value
(Dấu -- trong hàm text (Left, Mid, Right) là để đổi kiểu từ text sang số)
Để dễ hiểu, các bạn hãy xem:
- Một dấu '-" đồng nghĩa với nhân 1 giá trị hoặc 1 biểu thức với (- 1)
- Hai dấu "--" đồng nghĩa với nhân với 2 lần (-1), nghĩa là nhân với (+1)
Và, Excel hiểu rằng, khi nhân 1 giá trị số dạng text với 1 số bất kỳ, thì cũng như nhân số với số. Ta nhân với +1 là để không thay đổi giá trị ban đầu mà thôi.
Thí dụ:
ab8| 24 |=RIGHT(A3;1)*3
TRUE| 4| =A4*4
Excel cũng hiểu rằng khi nhân 1 giá trị luận lý (True, False) với 1 số bất kỳ, cũng sẽ giống như nhân 1 (True) hoặc 0 (False) với số đó
Vậy trong công thức sau có các dấu "--"
=SUMPRODUCT(
--($E$9:$E$18>=DATE(2007;1;1));
--($E$9:$E$18<=DATE(2007;1;15));$I$9:$I$18)
hoàn toàn có thể đổi thành các dấu "-" vì nhân (-1) 4 lần cũng bằng nhân (-1) 2 lần
=SUMPRODUCT(
-($E$9:$E$18>=DATE(2007;1;1));
-($E$9:$E$18<=DATE(2007;1;15));$I$9:$I$18)
hoặc nhân trực tiếp 3 số hạng với nhau (vì 1 trong 3 số hạng đã là số):
=SUMPRODUCT(($E$9:$E$18>=DATE(2007;1;1))
*($E$9:$E$18<=DATE(2007;1;15))
*$I$9:$I$18)
Ghi chú: nếu bạn thấy 3 dấu "--" tức là 6 lần (-1), thì không được chuyển tất cả thành dấu"-", vì nhân (-1) 3 lần khác với nhân (-1) 6 lần. Chỉ có thể chuyển 1 số chẵn các dấu "--" thành "-" thôi.
Nếu hiểu theo cách này, thì dễ dàng làm việc với excel trong bất kỳ tình huống nào mà bạn thấy cần tính toán với số dạng text hoặc giá trị logic, (kể cả cộng trừ nhân chia).
Còn cái vụ tốc độ, tôi chưa kiểm nghiệm được.