Menu

Hàm SUMPRODUCT trong Excel: nhân, cộng và đếm có điều kiện

=SUMPRODUCT(B2:B6,C2:C6) nhân từng số lượng với đơn giá rồi cộng các kết quả. Với điều kiện như (A2:A7="North")*C2:C7, hàm tính tổng và đếm ở những chỗ SUMIFS không làm được: theo tháng, so cột với cột, với OR.

Mọi bảng tính trên trang này đều trực tiếp: đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

=SUMPRODUCT(B2:B6,C2:C6) nhân từng số lượng ở cột B với đơn giá bên cạnh ở cột C, rồi cộng các kết quả lại. Hàm cho tổng tiền đơn hàng trong một ô, không cần cột thành tiền từng dòng.

Tổng tiền đơn hàng
F2
ABCDEF
1ItemQtyPriceLine totalTotal
2Pen4$1.50$6.00$30.70
3Notebook2$3.25$6.50$30.70
4Folder5$0.80$4.00
5Stapler1$7.90$7.90
6Marker3$2.10$6.30
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

F2 và F3 hiện cùng $30.70. Cột thành tiền D chỉ ở đó để cho thấy SUMPRODUCT làm gì: 4 × 1.50, 2 × 3.25, cứ thế, rồi một phép SUM. Đổi một số lượng và cả hai tổng đều thay đổi theo.

Cú pháp hàm SUMPRODUCT

=SUMPRODUCT(array1, [array2], [array3], ...)
  • Mỗi mảng là một vùng hoặc một phép tính tạo ra mảng, và tất cả phải cùng kích thước, nếu không SUMPRODUCT trả về #VALUE!.
  • Với hai mảng trở lên, các giá trị ở cùng vị trí được nhân với nhau, rồi các tích được cộng lại.
  • Với một mảng, hàm chỉ cộng mảng đó lại, và đó là lý do các dạng có điều kiện bên dưới hoạt động: =SUMPRODUCT((A2:A7="North")*C2:C7) chỉ có một mảng, đã được nhân sẵn.
  • Văn bản truyền vào như một đối số riêng được tính là 0. Văn bản nằm trong một phép tính * gây ra #VALUE!.

SUMPRODUCT làm việc với mảng trên mọi phiên bản Excel mà không cần Ctrl+Shift+Enter (Cmd+Shift+Enter trên Mac), vì vậy nó từng là công cụ chuẩn để tính tổng có điều kiện trước khi có SUMIFS, và đến giờ vẫn vậy với những trường hợp SUMIFS không xử lý được.

SUMPRODUCT có điều kiện

Một phép so sánh trên vùng, A2:A7="North", trả về một TRUE hoặc FALSE cho mỗi dòng. Nhân với nó sẽ giữ các dòng TRUE (×1) và biến các dòng còn lại thành 0 (×0). Nhân hai phép so sánh với nhau để có AND.

Tính tổng và đếm có điều kiện
F2
ABCDEF
1RegionProductSalesFormulaResult
2NorthApple120North sales230
3SouthPear45North Apple sales150
4NorthPear80Count North3
5EastApple55Count over 504
6SouthApple200Without --0
7NorthApple30
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

F2 cộng ba dòng North: 230. F3 nhân hai điều kiện, nên một dòng chỉ được tính khi cả hai đều đúng: 150. Để đếm thay vì cộng, bỏ các giá trị đi và biến TRUE/FALSE thành số bằng -- (hai dấu trừ): F4 đếm được 3 dòng North. F6 cho thấy vì sao -- quan trọng: SUMPRODUCT không cộng các giá trị TRUE, nên công thức thiếu nó trả về 0.

Bốn công thức đầu cho cùng kết quả với SUMIF, SUMIFS và COUNTIF. Phần tiếp theo mới là chỗ SUMPRODUCT thật sự có ích.

Những điều kiện SUMIFS không diễn đạt được

SUMIFS so một cột với một tiêu chí cố định. Nó không lấy được tháng của một ngày, không so được hai cột với nhau, và không nhân số lượng với đơn giá trước khi cộng. SUMPRODUCT làm được, vì mỗi điều kiện chỉ là một phép tính bình thường.

Vượt qua giới hạn của SUMIFS
G2
ABCDEFG
1RegionDateTargetActualFormulaResult
2North2026-01-05100120February sales135
3South2026-01-126045Rows over target3
4North2026-02-039080North or East sales285
5East2026-02-185055Above target by75
6South2026-03-02150200
7North2026-03-204030
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.
  • G2 lấy MONTH của mọi ngày và giữ các dòng tháng 2: 80 + 55 = 135. Công thức này cộng tháng 2 của mọi năm; thêm *(YEAR(B2:B7)=2026) nếu chỉ muốn một năm.
  • G3 so hai cột theo từng dòng và đếm các dòng mà Actual vượt Target.
  • G4 là một phép OR: cộng hai điều kiện cho 1 khi một trong hai đúng (2 khi cả hai cùng đúng, đó là lý do có >0). North hoặc East: 285.
  • G5 cộng phần mỗi dòng vượt mục tiêu, chỉ với những dòng đã vượt.

SUMPRODUCT cho tổng và trung bình có trọng số

Số lượng nhân đơn giá là một tổng có trọng số, và bạn có thể thêm điều kiện vào đó. Cùng ý tưởng ấy chia cho tổng các trọng số sẽ cho trung bình có trọng số: =SUMPRODUCT(B2:B6,C2:C6)/SUM(B2:B6) là giá trung bình trên mỗi món đã bán.

Doanh thu theo khu vực
G2
ABCDEFG
1RegionProductQtyPriceFormulaResult
2NorthApple10$1.20North revenue$31.00
3SouthPear4$1.50All revenue$61.00
4NorthPear6$1.50Average price per item$1.36
5EastApple8$1.20
6SouthApple12$1.20
7NorthPlum5$2.00
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

North bán 10 quả táo giá 1.20,6quảle^giaˊ1.20, 6 quả lê giá 1.50 và 5 quả mận giá 2.00,ne^nG2hiện2.00, nên G2 hiện 31.00. Trung bình cộng thông thường của các giá sẽ coi mận bán chạy ngang táo; G4 nhân mỗi giá với số lượng của nó làm trọng số.

Luyện tập: doanh thu có điều kiện

Đến lượt bạn: doanh thu South
G2
ABCDEFG
1RegionProductQtyPriceFormulaResult
2NorthApple10$1.20South revenue
3SouthPear4$1.50
4NorthPear6$1.50
5EastApple8$1.20
6SouthApple12$1.20
7NorthPlum5$2.00
Bấm vào một ô để xem công thức. Đổi một số hoặc công thức, bảng tính sẽ tự tính lại.

Đến lượt bạn: Tính doanh thu South: số lượng nhân đơn giá, chỉ với các dòng South. Viết công thức ở G2.

SUMPRODUCT và SUMIFS, và hai lỗi thường gặp

Điều kiệnSUMIFSSUMPRODUCT
Cột bằng một giá trị=SUMIFS(C2:C7,A2:A7,"North")=SUMPRODUCT((A2:A7="North")*C2:C7)
Có chứa văn bản=SUMIFS(C2:C7,B2:B7,"*app*")=SUMPRODUCT(ISNUMBER(SEARCH("app",B2:B7))*C2:C7)
Tháng của một ngàykhông làm trực tiếp được=SUMPRODUCT((MONTH(B2:B7)=2)*D2:D7)
Cột so với cộtkhông làm được=SUMPRODUCT(--(D2:D7>C2:C7))
Số lượng × đơn giákhông làm được=SUMPRODUCT(C2:C7,D2:D7)

Hãy ưu tiên SUMIFS khi nó làm được việc. Hàm này dễ đọc hơn, nhanh hơn trên hàng chục nghìn dòng, và nhận được cả cột. =SUMPRODUCT((A:A="North")*C:C) nhân trên hơn một triệu dòng và trả về #VALUE! ngay khi gặp tiêu đề văn bản ở C1, nên hãy đưa cho SUMPRODUCT các vùng chính xác như A2:A500.

Hai lỗi bạn sẽ gặp:

  • #VALUE! do các vùng khác kích thước. =SUMPRODUCT(B2:B6,C2:C7) bị lỗi. Mọi vùng phải bao cùng các dòng.
  • #VALUE! do văn bản trong vùng được nhân. Một tiêu đề hay chữ "n/a" trong C2:C7 làm hỏng (A2:A7="North")*C2:C7, vì không thể nhân văn bản. Hãy bắt đầu vùng ở dưới tiêu đề, hoặc truyền các giá trị thành đối số riêng: =SUMPRODUCT(--(A2:A7="North"),C2:C7) tính văn bản trong cột C là 0.

Câu hỏi thường gặp

Hàm SUMPRODUCT trong Excel dùng để làm gì?

Hàm nhân các vùng theo từng dòng rồi cộng các tích lại. =SUMPRODUCT(B2:B6,C2:C6) là B2C2 + B3C3 + ... + B6*C6, ví dụ số lượng nhân đơn giá rồi cộng thành tổng tiền đơn hàng.

Làm sao để dùng SUMPRODUCT có điều kiện?

Nhân với một phép so sánh: =SUMPRODUCT((A2:A7="North")*C2:C7) cộng C2:C7 cho các dòng North. Phép so sánh cho TRUE hoặc FALSE, khi nhân sẽ thành 1 hoặc 0.

Dấu -- trong SUMPRODUCT nghĩa là gì?

Đó là hai dấu trừ, biến TRUE và FALSE thành 1 và 0. =SUMPRODUCT(--(C2:C7>50)) đếm các giá trị lớn hơn 50. Không có nó, SUMPRODUCT coi TRUE/FALSE là 0 và trả về 0.

Nên dùng SUMPRODUCT hay SUMIFS?

Dùng SUMIFS khi tiêu chí của nó diễn đạt được điều kiện: dễ đọc hơn và nhanh hơn trên vùng lớn. Dùng SUMPRODUCT khi điều kiện cần một phép tính, như tháng của một ngày, so cột này với cột khác, hay số lượng nhân đơn giá.

Vì sao SUMPRODUCT trả về #VALUE!?

Các vùng có kích thước khác nhau (B2:B6 với C2:C7), hoặc một vùng được nhân bằng * có chứa văn bản. Hãy cho mọi vùng cùng kích thước, và truyền các vùng có văn bản thành đối số riêng, khi đó văn bản được tính là 0.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu