Bạn bebo021999 ơi, bạn có thể giải thích thêm cho mình hiểu hơn về công dụng của hàm offset trong công thức này được không? Mình xem hoài nhưng vẫn chưa hiểu lắm. Cảm ơn bạn rất nhiều.
Hàm OFFSET hiểu nôm na là đứng tại 1 ô, khối ô và tham chiếu đến 1 ô, khối ô khác, dựa trên các tham số cho sẵn.
VD: Từ ô A1, tham chiếu đến D3:E4, bạn dùng:
=OFFSET(A1,2,3,2,2)
Nghĩa là từ ô A1, dịch xuống 2 dòng, sang phải 3 cột (ta có ô D3), tại D3 mở rộng xuống 2 dòng (ta có khối ô D3

4), mở rộng sang phải 2 cột (ta có khối ô D3:E4)
Trong trường hợp của bạn, công thức: OFFSET(Sheet1!$G$8:$BE$8,MATCH($A3,Sheet1!$B$9:$B$19,0),)) có nghĩa như sau:
* MATCH($A3,Sheet1!$B$9:$B$19,0) là khoảng cách của giá trị code trong sheet 1 tính từ dòng 8. VD: code FRUIT056 có khoảng cách là 1 dòng tính từ dòng 8
* Thay giá trị MATCH vào công thức:
OFFSET(Sheet1!$G$8:$BE$8,1,)
Có nghĩa là từ khối ô G8:BE8, tịnh tiến xuống 1 dòng để tham chiếu đến khối ô G9:BE9
Như vậy giá trị của MATCH, hay là của vị trí code được tìm thấy, sẽ là tham số để OFFSET tham chiếu đến khối ô tương ứng với code.
VD: Nếu A3 là code FRUT014, từ G8:BE8, OFFSET sẽ tham chiếu đến khối ô G13:BE13, vì giá trị MATCH là 5
Vì từ cột G đến BE có chen các cột có giá trị Text, nên buộc phải ra điều kiện như sau để gán giá trị 0 cho Text:
IF(ISNUMBER(khối ô),khối ô,0): Kiểm tra từng ô trong khối ô, nếu là số thì giữ nguyên, nếu không phải là số thì gán cho bằng 0
Như vậy bạn đã tạo được khối ô đồng nhất gồm toàn giá trị số để sử dụng SUMPRODUCT.