Cú pháp thể hiện khi dùng SUMPRODUCT
Có nhiều cú pháp thể hiện khi dùng SUMPRODUCT, nhưng xin bạn cứ nhớ thuộc lòng cú pháp tôi viết dưới đây
SUMPRODUCT((Vùng 1 = d/k1)*(Vùng 2 = d/k2)*(…….)*(Vùng tính tổng))
Nếu không có Vùng tính tổng thì công thức trên sẽ thành ĐẾM (thay vì SUM)
Cú pháp trên là hoàn hảo nhất so với bất cứ cú pháp nào vì nó tổng hợp được trên các mảng có kích thước khác nhau (mà các kiểu viết khác không thể làm được)
SUMPRODUCT cho phép hoạt động khi kích thước mảng không bằng nhau nhưng với điều kiện phải viết theo cú pháp:
=SUMPRPDUCT((Vùng điều 1)*(Vùng điều 2)*(Vùng điều 3)*(......)*(Vùng kết quả))
Vấn đề em thắc mắc là mặc dù đã sửa rồi KQ tháng 1 của Cty A lại ra bằng 0 nhỉ? Nếu đúng ra nó phải là 200.546.667, phiền các bác xem lại hộ em với
Cứ ý công thức ở trên mà làm thì sao kết quả =0 được cơ chứ —> Xem file đây
Cảm ơn thày em tìm ra nguyên nhân rùi, tại em không đóng mở ngoặc () thành phần MONTH($A$4:$A$36)=A42, xin thày giải thích giúp em từ công thức của thày SUMPRODUCT((MONTH($A$4:$A$36)=A42)*($B$4:$B$36=B42)*($C$4:$C$36)) nếu em bỏ đóng mở ngoặc thành phần thứ 3 đi thành SUMPRODUCT((MONTH($A$4:$A$36)=A42)*($B$4:$B$36=B42)*$C$4:$C$36) thì vẫn OK mà bỏ đóng mở ngoặc thành phần thứ nhất tức công thức thành SUMPRODUCT(MONTH($A$4:$A$36)=A42*($B$4:$B$36=B42)*($C$4:$C$36)) thì lại không được (kết quả bằng 0) ah?
Bạn nói sao chứ nếu bỏ dấu ngoặc nhất hay cuối gì thì nó cũng báo lỗi liền, làm gì ra kết quả
Nguyên tắc về cú pháp người ta ghi thế thì mình cứ theo thôi
Được mà thày nếu thày cứ thử bỏ đóng mở ngoặc của $C$4:$C$36 thì kết quả vẫn OK. Thực ra em muốn tìm hiểu bản chất của nó thôi, chứ cứ đóng mở ngoặc là đúng là "chắc ăn" hơn.
Vậy chắc máy bạn nó sao ấy chứ tôi thử rồi mới nói bạn à —> Nguyên tắc của công thức luôn luôn là: Tổng số dấu ( phải bằng với tổng số dấu ) —> Tức số dấu ngoặc mở luôn = số dấu ngoặc đóng
Vậy không lý gì trong công thức lại có 5 dấu ( mà chỉ có 4 dấu )
Không tin cứ kêu ai đó thử là biết liền
nếu bỏ đóng mở ngoặc thành phần thứ nhất tức công thức thành SUMPRODUCT(MONTH($A$4:$A$36)=A42*($B$4:$B$36=B42)*($C$4:$C$36)) thì lại không được (kết quả bằng 0) ah?
—–Mình thấy hàm sumproduct nếu bỏ dấu ngoặc ở đầu:
=SUMPRODUCT(MONTH($A$4:$A$36)=A42*($B$4:$B$36=B42)*($C$4:$C$36))
– kết quả = 0 là do hàm ưu tiên tính các phần tử trong () trước xong đến tính tiếp đến dấu * cuối cùng mới tính đến dấu =. Như công thức trên hàm sẽ tính các thành phần:
– MONTH($A$4:$A$36) ra mảng các tháng (1)
–A42*($B$4:$B$36=B42)*($C$4:$C$36) ra 1 mảng (2)
—> cuối cùng so 2 mảng (1) = (2) mảng này chắc chắn là false do vậy kết quả =0.nếu bỏ đóng mở ngoặc thành phần thứ 3 đi thành SUMPRODUCT((MONTH($A$4:$A$36)=A42)*($B$4:$B$36=B42)*$C$4:$C$36) thì vẫn OK
-Nếu theo như quy luật ưu tiên tính toán trong hàm () tính trước, * tính sau thì.+ Hàm tính: (MONTH($A$4:$A$36)=A42) ra 1 mảng.
+($B$4:$B$36=B42) ra 1 mảng
+$C$4:$C$36 hay ($C$4:$C$36) cũng ra 1 mảng như nhau.
– Các mảng này thỏa mãn thì cho kết quả thôi.
*, Nói chung các hàm đều tính toán trong ngoặc trước, xong rồi đến nhân chia cộng trừ…chứ không riêng gì sumproduct!P/S: Dạ đấy là theo em nghĩ vậy. Nếu không đúng thì các thầy, cô sửa sai giúp!
Lập luận của nhóc linhngoc hoàn toàn chính xác ở chỗ Excel ưu tiên tính
– trong ngoặc trước ngoài ngoặc sau,
– ngoặc trong trước, ngoặc ngoài sau,
– nhân chia trước, cộng trừ sau,
– dấu bằng sau chót
Kết quả luôn luôn bằng 0 vì
=SUMPRODUCT(MONTH($A$4:$A$36)=A42*($B$4:$B$36=B42) *($C$4:$C$36))
Nhóm thứ nhất (màu xanh) là 1 mảng gồm các tháng của các ô A4:A36, là các số rải từ 1 đến 12
Nhóm thứ 2 (màu đỏ), là tích của 3 thành phần: 1 giá trị A42, 1 mảng True False, 1 mảng giá trị C4:C36, kết quả là 1 mảng các số
So sánh 2 mảng số đó với nhau bằng dấu =, thì ra 1 mảng mới, gồm toàn True, False
Và sum của True False, thì bằng 0.
Cái đó thì em thừa nhận, nhưng máy em công thức như sau =SUMPRODUCT(MONTH($A$4:$A$36)=A42*($B$4:$B$36=B42) *$C$4:$C$36)
vẫn ra đáp số đúng (thày ndu thử thì bị lỗi) vậy máy các bác như thế nào trong THợp này?
Ra kết quả zero chứ? Nhưng vẫn ra kết quả, không lỗi.
Chắc ndu nhầm là chỉ bỏ 1 dấu ( hoặc 1 dấu ). Thực sự là bỏ đi 1 cặp () lận. Chỉ ra kết quả sai thôi chứ không lỗi.
em thấy Sumproduct một số trường hợp dùng dấu, (=SUMPRODUCT(D4:CD4,D7:CD7)) nhưng một số trường hợp dấu , không được phải chuyển sang dấu nhân (*) tức công thức trên là SUMPRODUCT((D4:CD4)*(D7:CD7)). Vậy bản chất của nó thế nào ah?
Bản chất vẫn như nhau, chỉ là cách thể hiện của mỗi người.
Tuy nhiên, trong các kiểu thể hiện hàm SUMPRODUCT thì cách dùng dấu nhân là ưu việt nhất:
– Khỏi lo dấu phân cách khác nhau trên từng máy tính (có máy dùng dấu phẩy, có máy dùng dấu chấm phẩy)
– Có thể thực hiện tính toán trên các mảng không cùng kích thước <— Và đây chính là ưu điểm cần quan tâm của nó
Chính vì lẽ đó, bây giờ học SUMPRODUCT, tốt nhất bạn nên dùng dấu nhân, mấy dấu khác khỏi cần quan tâm đến làm gì
(Có người nói cách dùng dấu — sẽ cho tốc độ nhanh hơn dùng dấu * , Tôi thì không tin gì mấy, nếu có thì chắc là chênh lệch cũng không đáng kể. Với dữ liệu lớn, SUMPRODUCT nhiều điều kiện thì 2 cách này cũng "lết bánh" như nhau mà thôi)
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bạn tìm hiểu thử nha
Chúc mọi người cuối tuần vui vẻ
Dựa vào toán học:
Vận dụng điều này để "ép" a đang là dạng "chuỗi số" (Vd: chuỗi '12345) về thành số tính toán (12,345).
Có nhiều cách đưa "chuỗi số" về dạng số, gồm:
Thân