SO sánh SUMPRODUCT và công thức mảng(dùng hàm SUM)
anhtuan1066 đã viết:
Tất nhiên là tôi hiểu cách sử dụng các hàm này rồi nhưng ở đây tôi muốn hỏi vấn đề khác cơ! Đó là có gì khác nhau giữa 2 hàm này vậy? Cái hay và những ứng dụng sáng tạo nào đó của nó? Ưu điểm và hạn chế? Chẳng hạn như bài toán về "TỐC ĐỘ TÍNH TOÁN" tôi đưa ra lần trước, thật ra sử dụng hàm SUMPRODUCT rất bình thường nhưng trong trường hợp ấy nó lại bộc lộ nhược điểm lớn về tốc độ khi tính toán nhiều dòng... van... van
ANH TUẤN
ANH TUẤN
Hàm SUMPRODUCT(array1,array2[,..,array30]).
Mục đích của hàm là để tính tổng các tích của các đối số. Nhưng sáng tạo của người sử dụng đã tạo thêm cho nó một cách tính khác là tính tổng của tích các logic.
SUMPRODUCT(Logic1*Logic2*...*LogicN*array_SUM), khi đó nó trở thành tính tổng có điều kiện.
Lưu ý rằng, SUMPRODUCT CHỈ có ý nghĩa là tính tổng hoặc đếm có nhiều điều kiện mà thôi!
Cách tính có nhiều điều kiện thứ 2 là dùng kỹ thuật công thức mảng - "Formula Array"
Bản chất về công thức mảng thì tôi đã giới thiệu.
Nắm được nguyên lý về công thức mảng, nếu dùng hàm SUM bạn sẽ có phép tính tổng; hàm COUNT bạn sẽ có phép tính đếm, MIN,MAX,AVERAGE,....
Công thức mảng KHÔNG PHẢI chỉ mỗi tính tổng!
Còn so sánh về tốc độ giữa SUMPRODUCT và công thức mảng.
Xét với mục đích tính tổng (chỉ có mục đích này thì SUMPRODUCT mới có cái để so sánh)
Hàm SUMPRODUCT tính nhanh hơn công thức mảng (dùng hàm SUM), nếu dữ liệu lớn thì gần như gấp 2.
Tóm lại:
- Nếu chỉ có nhu cầi tính tổng thì các bạn nên dùng SUMPRODUCT
- Nếu việc tính toán không chỉ mỗi tính tổng và phép tính có nhiều điều kiện thì nên áp dụng công thức mảng.
Khi lập một bảng thống kê có nhiều ô, các ô phải tính bởi SUMPRODUCT hoặc công thức mảng, các công thức này tham chiếu tới vùng dữ liệu lớn thì tốc độ máy tính rất chậm, dù cấu hình mắy của bạn có cao! Nếu biết VBA và viết có "thủ thuật" thì sẽ là giải pháp tốt hơn cả!