Thấy bạn có ý tìm tỏi học hỏi truy nguyên vấn đề, tôi cũng muốn bàn bạc thêm về mảng.
Mảng là 1 món "đặc sản" của Excel, hoạt động rất hiệu quả đặc biệt khi bạn cần lặp lại phép tính dùng các giá trị khác nhau.
VD: A1:A2=0, với A1=0, A2=1, sẽ lần lượt so sánh từng giá trị tại A1:A2, trả về 1 mảng {TRUE; FALSE}
Vậy tại sao SUMPRODUCT là công thức mảng nên không cần dùng ctrl-shift-enter?
Gỉả sử B1=3, B2=4,
SUMPRODUCT((A1:A2=0)*B1:B2) sẽ lấy (A1=0)*B1 cộng với (A2=0)*B2 = 1*B1 + 0*B2 = 3
Ta thấy kết quả trả về là
một giá trị
Bản thân SUMPRODUCT đã quy định tham số của nó là các mảng, nên nó là
hàm mảng.
Vậy
công thức mảng là gì? đây còn gọi là công thức có chứa các hàm
ép mảng, tức là bản thân nó là hàm thường, bị
ép thành hàm mảng.
VD: hàm COUNTIF(A1:A2,B1) trả về 1 giá trị đếm, khác với hàm COUNTIF(A1:A2,B1:B2) trả về
đồng thời 2 giá trị đếm. Vì hàm COUNTIF lưỡng tính, nên khi lồng vào trong 1 công thức phải có động tác báo cho Excel biết nó thuộc loại gì, bằng không mặc nhiên hiểu là công thức thường và báo lỗi nếu thuộc loại
ép mảng. VD: MATCH(1,COUNTIF(A1:A2,B1:B2),0) là công thức mảng
Tóm lại, sự khác nhau giữa công thức mảng và công thức thường là công thức mảng xử lý
đồng thời vài giá trị, thay vì chỉ xử lý một giá trị mỗi lần.
Một tiến trình công thức mảng không chỉ có thể
xử lý đồng thời vài giá trị, nó cũng có thể
trả về đồng thời vài giá trị. Kết quả của một công thức mảng cũng là một mảng
Các hàm mảng, riêng tôi thường dùng là SUMPRODUCT, FREQUENCY, TRANSPORE,...
Bản thân hàm MATCH không phải là hàm mảng, tuy nhiên nếu nó sử dụng đối số là hàm
ép mảng, nó cũng bị
ép thành hàm mảng luôn.
Còn vấn đề tại sao LOOKUP không phải ctrl-shift-enter, theo tôi suy luận, nó rà từng trường hợp, khi gặp điều kiện thỏa là trả kết quả luôn.
MATCH thì không vậy, nó rà từ đầu mảng tới cuối mảng, sau đó mới xét tới điều kiện tham số 0,1 hay -1 để ra quyết định trả kết quả. Điều này tôi không chắc lắm. Hên xui.