Menu

Hàm AVERAGEIF, AVERAGEIFS: tính trung bình có điều kiện

=AVERAGEIF(A2:A7,"North",C2:C7) tính trung bình các giá trị trong C2:C7 ở những hàng có cột A là North. Tìm hiểu AVERAGEIFS cho nhiều điều kiện, trung bình bỏ qua số 0, cách xử lý #DIV/0!, cùng MAXIFS và MINIFS.

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.

=AVERAGEIF(A2:A7,"North",C2:C7) tính trung bình doanh số trong C2:C7 ở những hàng có cột A là North. Hàm này hoạt động giống SUMIF, chỉ khác là nó chia tổng cho số hàng khớp điều kiện.

Trung bình theo điều kiện
F2
ABCDEF
1RegionProductSalesConditionAverage
2NorthApple120North90
3SouthPear45North, Apple80
4NorthPear110Over 50120
5EastApple55
6SouthApple195
7NorthApple40
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 tính trung bình ba hàng North, 120, 110 và 40, và hiện 90. F3 cần hai điều kiện, North và Apple, nên dùng AVERAGEIFS: (120 + 40) / 2 = 80. F4 không có vùng tính trung bình riêng, nên nó tính trung bình chính những giá trị doanh số khớp điều kiện.

Cú pháp AVERAGEIF và AVERAGEIFS

=AVERAGEIF(range, criteria, [average_range])
=AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)

Thứ tự đối số là cái bẫy quen thuộc giống SUMIF và SUMIFS: AVERAGEIF đặt vùng cần tính trung bình ở cuối (và cho phép bỏ trống), còn AVERAGEIFS đặt nó ở đầu. Điều kiện được viết giống nhau ở cả hai hàm: "North", ">50", "<>0", "*apple*", hoặc một toán tử nối với một ô, ">"&F5. Ô trống và văn bản trong vùng tính trung bình đều bị bỏ qua.

Tính trung bình và bỏ qua số 0

AVERAGE tính số 0 là một giá trị, nên hai học sinh vắng mặt bị 0 điểm sẽ kéo điểm trung bình của lớp xuống. Ô trống thì khác: AVERAGE bỏ qua chúng. =AVERAGEIF(B2:B7,"<>0") bỏ qua luôn cả số 0.

Trung bình không tính số 0
E3
ABCDE
1StudentScoreMethodResult
2Ana80AVERAGE48
3Ben0Ignore zeros80
4Cara90Count of zeros2
5DanCount of numbers5
6Eva70
7Finn0
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.

AVERAGE lấy 240 chia cho 5, vì ô trống của Dan bị bỏ qua nhưng hai số 0 vẫn được tính, nên hiện 48. AVERAGEIF với "<>0" lấy 240 chia cho 3 và hiện 80. Gõ 60 vào B5 thì cả hai đều thay đổi; gõ 0 vào B5 thì chỉ AVERAGE thay đổi. Muốn bỏ qua cả số 0 lẫn số âm, hãy dùng ">0".

Vì sao AVERAGEIF trả về #DIV/0!

Khi không có gì khớp điều kiện, AVERAGEIF không có gì để chia và trả về #DIV/0!. Bọc nó trong IFERROR để hiện một dấu gạch, một thông báo hoặc một ô trống thay thế.

Không có giá trị khớp, cùng MAXIFS và MINIFS
F2
ABCDEF
1RegionProductSalesFormulaResult
2NorthApple120West average#DIV/0!
3SouthPear45With IFERRORNo sales
4NorthPear110North max120
5EastApple55North min40
6SouthApple195Apple max195
7NorthApple40
#DIV/0! Công thức chia cho 0 hoặc cho một ô trống.

Không có hàng West nào, nên F2 hiện #DIV/0! và F3 hiện thông báo. Đổi A3 thành West thì cả hai đều hiện 45.

MAXIFS và MINIFS

Các ô từ F4 đến F6 trong trang tính trên tìm giá trị lớn nhất và nhỏ nhất theo điều kiện. Chúng dùng thứ tự đối số giống AVERAGEIFS, vùng cần tìm đặt đầu tiên: =MAXIFS(C2:C7,A2:A7,"North") trả về 120 và =MINIFS(C2:C7,A2:A7,"North") trả về 40. Khác với AVERAGEIF, chúng trả về 0 khi không có gì khớp, chứ không báo lỗi.

MAXIFS và MINIFS cần Excel 2019 trở lên, hoặc Microsoft 365. Trong Excel 2016 trở về trước, =MAX(IF(A2:A7="North",C2:C7)) cho kết quả tương tự; ở các phiên bản đó, nhấn Ctrl+Shift+Enter (Cmd+Shift+Enter trên Mac) để nhập công thức.

Luyện tập: trung bình với hai điều kiện

Đến lượt bạn: điểm trung bình lớp, không tính học sinh vắng
F2
ABCDEF
1StudentClassScoreConditionAverage
2AnaA80Class A, no zeros
3BenB75
4CaraA0
5DanB60
6EvaA90
7FinnB0
8GusA70
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 trung bình điểm của lớp A, bỏ qua các số 0 (học sinh vắng mặt). Viết công thức vào F2.

Trung bình của các trung bình: một lỗi thường gặp

Lấy trung bình của các giá trị trung bình từ những nhóm có kích thước khác nhau sẽ cho ra trung bình chung sai. North có ba hàng còn South có hai, nên trong trung bình của hai giá trị trung bình, mỗi hàng South chiếm tỷ trọng lớn hơn mức đáng có.

Trung bình của các trung bình
E4
ABCDE
1RegionSalesFormulaResult
2North120North90
3South45South120
4North110Average of the two105
5South195All rows102
6North40
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.

E4 hiện 105, còn E5 là trung bình thật của năm hàng, 102. Khi các nhóm có kích thước khác nhau, hãy tính trung bình trực tiếp trên các hàng bằng một hàm AVERAGEIFS, hoặc chia SUMIFS cho COUNTIFS với cùng các điều kiện:

=SUMIFS(B2:B6,A2:A6,"North")/COUNTIFS(A2:A6,"North")

Điểm số có trọng số theo tín chỉ hay theo số lượng lại là một phép tính khác: đó là trung bình có trọng số.

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

AVERAGEIF và AVERAGEIFS khác nhau thế nào?

AVERAGEIF nhận một điều kiện và đặt vùng cần tính trung bình ở cuối: =AVERAGEIF(A2:A7,"North",C2:C7). AVERAGEIFS nhận nhiều điều kiện và đặt vùng cần tính trung bình ở đầu: =AVERAGEIFS(C2:C7,A2:A7,"North",B2:B7,"Apple").

Làm sao để tính trung bình trong Excel mà bỏ qua số 0?

Dùng =AVERAGEIF(B2:B7,"<>0"). Công thức này chỉ tính trung bình các ô khác 0. Ô trống vốn đã bị AVERAGE và AVERAGEIF bỏ qua, nên chỉ những số 0 thật sự mới cần điều kiện này.

Vì sao AVERAGEIF trả về #DIV/0!?

Không có ô nào khớp điều kiện, nên Excel lấy tổng bằng 0 chia cho số lượng bằng 0. Bọc công thức lại để hiện nội dung khác: =IFERROR(AVERAGEIF(A2:A7,"West",C2:C7),"No data").

Làm sao để tìm giá trị lớn nhất theo điều kiện?

Dùng MAXIFS, với vùng cần tìm đặt đầu tiên: =MAXIFS(C2:C7,A2:A7,"North") trả về giá trị North lớn nhất. MINIFS hoạt động tương tự để tìm giá trị nhỏ nhất. Cả hai cần Excel 2019 trở lên, hoặc Microsoft 365.

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