Hàm sum, sumproduct lồng index với tham số hàng/cột là mảng.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

LmoovoenX

Thành viên tiêu biểu
Tham gia
10/12/20
Bài viết
463
Được thích
617
Em gặp 1 vấn đề tương đối lạ. Trước giờ em vẫn cứ tưởng rằng sum, hoặc sumproct sẽ cộng các phần tử trong mảng lại với nhau (với Sumproduct tham số chỉ có 1 mảng).
Với excel 365 thì nó tự động cộng lại. Nhưng với excel bản cũ (cụ thể là 2013) thì lại không thể cộng được.
Các bác cho em hỏi là tại sao? Và làm sao để cộng được các giá trị khi dùng index ở excel bản cũ ngoại trừ cách lấy index từng phần tử rồi cộng lại với nhau?

1696908712119.png
Như trên hình này, em thử 2 công thức sum và sumproduct, cả ở 3 cách: công thức thường, công thức mảng chỉ 1 ô và công thức mảng cho 2 ô (tô màu vàng). Kết quả mong muốn của em là 3, như ô D5, nhưng làm sao chỉ bấm ở 1 ô là ra. Vì em cần cái tổng đó để tính toán cái khác. Máy dùng bản 2013 không nối được mạng nên em chụp hình tạm.
Còn trên file em gửi là dùng excel 365 nên nó ra được kết quả mong muốn rồi ạ.
 

File đính kèm

Nếu không bắt buộc phải dùng hàm Index thì dùng Choose
=SUMPRODUCT(CHOOSE({1,2}, 1,2,3,4))
Trong bố trí này, Choose dùng tham số thứ nhất để trả về cái mong muốn, tham số này là mảng cho nên Choose trả về mảng (tham số thứ 3 và 4), Sumprodcut biết đó là mảng cho nên khỏi cần CSE.
Lợi điểm của hàm này là 1,2,3,4 trên có thể là tham chiếu hoặc con toán (biểu thức). Khác với cái mảng {1,2,3,4} trong công thức của bạn, bắt buộc phải là hằng.
 
Nếu không bắt buộc phải dùng hàm Index thì dùng Choose
=SUMPRODUCT(CHOOSE({1,2}, 1,2,3,4))
Trong bố trí này, Choose dùng tham số thứ nhất để trả về cái mong muốn, tham số này là mảng cho nên Choose trả về mảng (tham số thứ 3 và 4), Sumprodcut biết đó là mảng cho nên khỏi cần CSE.
Lợi điểm của hàm này là 1,2,3,4 trên có thể là tham chiếu hoặc con toán (biểu thức). Khác với cái mảng {1,2,3,4} trong công thức của bạn, bắt buộc phải là hằng.
Dạ, cái {1,2,3,4} là kết quả phép tính, em muốn tính tổng 2 giá trị ở vị trí 1, 2 của nó.
Em có thử dùng cột phụ. Ví dụ gán giá trị mảng trên vào A1:A4, xong rồi dùng như trên thì cũng không tính tổng được.
=Sum(index(a1:a4,{1;2})) =1 (kể cả enter hay CSE, thay sum bằng sumproduct cũng vậy)
 
Nếu không bắt buộc phải dùng hàm Index thì dùng Choose
=SUMPRODUCT(CHOOSE({1,2}, 1,2,3,4))
Trong bố trí này, Choose dùng tham số thứ nhất để trả về cái mong muốn, tham số này là mảng cho nên Choose trả về mảng (tham số thứ 3 và 4), Sumprodcut biết đó là mảng cho nên khỏi cần CSE.
Lợi điểm của hàm này là 1,2,3,4 trên có thể là tham chiếu hoặc con toán (biểu thức). Khác với cái mảng {1,2,3,4} trong công thức của bạn, bắt buộc phải là hằng.
Em tìm được cách giải quyết rồi. Thay vì dùng index, em bỏ luôn rồi dùng sumproduct với 1 mảng {1;1;...}. Muốn cộng cái nào thì để 1 là được.
=sumproduct({1;2;3;4},{1;1;0;0})
Mà em vẫn không hiểu tại sao dùng index như ở #1 không ra được kết quả.
Bài đã được tự động gộp:

Xin chúc mừng, office dỏm rồi. Máy tớ enter = 3, CSE = 1 (cả 4 công thức file đều cùng kết quả nếu cùng cách en tơ)
Office 365 thì nó ra. Nhưng bản office 2013 ở máy cơ quan thì không ra được.
 
Lần chỉnh sửa cuối:
Em tìm được cách giải quyết rồi. Thay vì dùng index, em bỏ luôn rồi dùng sumproduct với 1 mảng {1;1;...}. Muốn cộng cái nào thì để 1 là được.
=sumproduct({1;2;3;4},{1;1;0;0})
Mà em vẫn không hiểu tại sao dùng index như ở #1 không ra được kết quả.
...
Vì công thức mảng của các phiên bản cũ phải ghi đủ số phần tử kết quả, tức là bạn phải chọn đủ 2 ô. Phiên bản 365 có cách "spill" cho nên nó tự triển khai mảng.
Tôi tính mách bạn cách dùng mảng {1,1,0,0} nhưng bạn đã tự tìm được rồi. Cách này dùng cho SUM cũng được, nhưng Sum không phải là hàm mảng cho nên phải CSE.

Tôi đoán có lẽ {1, 2, 3, 4} là kết quả của con toán nào đó. Nếu đã ghi vào cột phụ là A1:A4 thì dùng hàm OFFSET là đơn giản nhất.

Chú thích: tôi dị ứng với viết tắt. Tôi nhìn nhận mình có thành kiến. Nếu bạn tiếp tục dùng "ko" thì tôi sẽ từ chối không nói chuyện tiếp.
 
Vì công thức mảng của các phiên bản cũ phải ghi đủ số phần tử kết quả, tức là bạn phải chọn đủ 2 ô. Phiên bản 365 có cách "spill" cho nên nó tự triển khai mảng.
Tôi tính mách bạn cách dùng mảng {1,1,0,0} nhưng bạn đã tự tìm được rồi. Cách này dùng cho SUM cũng được, nhưng Sum không phải là hàm mảng cho nên phải CSE.

Tôi đoán có lẽ {1, 2, 3, 4} là kết quả của con toán nào đó. Nếu đã ghi vào cột phụ là A1:A4 thì dùng hàm OFFSET là đơn giản nhất.

Chú thích: tôi dị ứng với viết tắt. Tôi nhìn nhận mình có thành kiến. Nếu bạn tiếp tục dùng "ko" thì tôi sẽ từ chối không nói chuyện tiếp.
Vâng bác. Cái {1,2,3,4} là kết quả của hàm frequency. Em đang đếm số phần tử trong các khoảng. Xong rồi cộng số phần tử ở 2 khoảng khác nhau lại.
Hồi sáng chưa nghĩ ra nên phải dùng index cho nó chỉ đến từng số trong mảng, xong rồi cộng lại. Vì chỉ có cộng 2 số nên em dùng luôn phép cộng để tính. Hồi trưa mới nghĩ ra dùng mảng {1,1,0,0} rồi dùng sumproduct.
Cảm ơn bác đã giải thích. Em có sơ sót viết tắt. Đã sửa ạ.
 
Web KT

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

Back
Top Bottom