Phân tích dữ liệu với nhiều điều kiện trong Excel từng là một thách thức lớn. Tôi đã dành hàng giờ để xây dựng công thức mảng phức tạp, nhấn tổ hợp phím Ctrl+Shift+Enter mỗi lần chỉnh sửa, và chờ đợi Excel tính toán trên bộ dữ liệu lớn. Hàm MAXIFS xuất hiện từ Excel 2019 đã thay đổi hoàn toàn cách làm việc này, giúp tìm giá trị lớn nhất với nhiều điều kiện trở nên đơn giản và nhanh chóng hơn gấp nhiều lần.

Hàm MAXIFS hoạt động như thế nào
Hàm MAXIFS trả về giá trị lớn nhất trong một phạm vi dữ liệu dựa trên một hoặc nhiều điều kiện. Khác với công thức mảng MAX IF truyền thống, MAXIFS là hàm tích hợp sẵn không yêu cầu nhập công thức mảng.
Cú pháp cơ bản:
=MAXIFS(phạm_vi_tìm_max, phạm_vi_điều_kiện_1, điều_kiện_1, [phạm_vi_điều_kiện_2], [điều_kiện_2], ...)
Các tham số chính:
- Phạm vi tìm max: Vùng chứa các giá trị cần tìm giá trị lớn nhất
- Phạm vi điều kiện: Vùng dữ liệu để đánh giá điều kiện
- Điều kiện: Tiêu chí lọc dữ liệu, có thể là số, văn bản, hoặc biểu thức
Hàm hỗ trợ tối đa 126 cặp phạm vi và điều kiện. Tất cả các phạm vi phải có cùng kích thước và hình dạng, nếu không Excel sẽ trả về lỗi #VALUE!.
Ví dụ thực tế với một điều kiện
Giả sử bạn có bảng dữ liệu doanh số bán hàng với ba cột: Khu vực (A2:A10), Sản phẩm (B2:B10), và Doanh số (C2:C10). Để tìm doanh số cao nhất của sản phẩm A, công thức đơn giản là:
=MAXIFS(C2:C10, B2:B10, "A")
Công thức này quét cột Sản phẩm, tìm tất cả hàng có giá trị “A”, sau đó trả về giá trị lớn nhất từ cột Doanh số tương ứng. Không cần thiết lập công thức mảng, không cần Ctrl+Shift+Enter.
Để linh hoạt hơn, đặt điều kiện tìm kiếm vào ô riêng, ví dụ ô E1, và tham chiếu đến ô đó:
=MAXIFS(C2:C10, B2:B10, E1)
Khi thay đổi giá trị trong E1, kết quả tự động cập nhật ngay lập tức.
Làm việc với nhiều điều kiện
Sức mạnh thực sự của MAXIFS nằm ở khả năng xử lý nhiều điều kiện cùng lúc. Tiếp tục với ví dụ trên, nếu muốn tìm doanh số cao nhất của sản phẩm A tại khu vực Miền Bắc, công thức sẽ là:
=MAXIFS(C2:C10, B2:B10, "A", A2:A10, "Miền Bắc")
Hàm đánh giá cả hai điều kiện. Chỉ những hàng thỏa mãn đồng thời cả hai điều kiện mới được xem xét để tìm giá trị lớn nhất.
Sử dụng toán tử logic:
MAXIFS hỗ trợ các toán tử so sánh trong điều kiện. Để tìm doanh số cao nhất lớn hơn 100 triệu của sản phẩm A:
=MAXIFS(C2:C10, B2:B10, "A", C2:C10, ">100000000")
Để tìm doanh số cao nhất trong khoảng từ 50 đến 200 triệu:
=MAXIFS(C2:C10, C2:C10, ">=50000000", C2:C10, "<=200000000")
Lưu ý rằng khi sử dụng toán tử logic với số hoặc biểu thức, toàn bộ điều kiện phải được đặt trong dấu ngoặc kép. Khi kết hợp với tham chiếu ô, sử dụng ký tự nối:
=MAXIFS(C2:C10, C2:C10, ">"&E1)
So sánh MAXIFS với công thức mảng MAX IF
Trước Excel 2019, người dùng phải tạo công thức mảng kết hợp MAX và IF để đạt được kết quả tương tự. Công thức điển hình trông như thế này:
=MAX(IF(B2:B10="A", C2:C10))
Sau khi nhập công thức, bạn phải nhấn Ctrl+Shift+Enter để Excel nhận diện đây là công thức mảng. Excel tự động thêm dấu ngoặc nhọn {} bao quanh công thức.
Vấn đề với phương pháp cũ:
Công thức mảng MAX IF có nhiều hạn chế trong thực tế. Mỗi lần chỉnh sửa công thức, bạn phải nhớ nhấn Ctrl+Shift+Enter thay vì Enter thông thường. Nếu quên, công thức sẽ trả về kết quả sai hoặc lỗi. Khi sao chép công thức sang ô khác, dấu ngoặc nhọn có thể bị mất và công thức ngừng hoạt động như mảng.
Hiệu suất tính toán là vấn đề lớn hơn. Theo tài liệu của Microsoft, công thức mảng buộc Excel phải tính toán tất cả các ô được tham chiếu, ngay cả khi ô trống hoặc không liên quan. Với bộ dữ liệu 10,000 hàng, công thức mảng MAX IF có thể mất 15-20 giây để tính toán, trong khi MAXIFS hoàn thành trong vòng 0.5-1 giây.
Thêm nhiều điều kiện vào công thức mảng làm tăng độ phức tạp đáng kể. Để tìm giá trị lớn nhất với hai điều kiện, công thức mảng trở thành:
=MAX(IF((B2:B10="A")*(A2:A10="Miền Bắc"), C2:C10))
Cú pháp này khó hiểu và dễ gây lỗi. Với MAXIFS, cùng một logic được thể hiện rõ ràng và trực quan hơn nhiều.
Tối ưu hiệu suất khi làm việc với dữ liệu lớn
Khi xử lý bảng tính với hàng nghìn hoặc hàng chục nghìn hàng, cách bạn thiết lập công thức MAXIFS ảnh hưởng trực tiếp đến tốc độ tính toán.
Sử dụng bảng có cấu trúc:
Chuyển đổi phạm vi dữ liệu thành Table bằng cách chọn dữ liệu và nhấn Ctrl+T. Khi làm việc với Table, công thức MAXIFS tự động điều chỉnh khi thêm hoặc xóa hàng, và Excel tối ưu tính toán tốt hơn.
Với Table có tên “DuLieuBanHang”, công thức trở thành:
=MAXIFS(DuLieuBanHang[Doanh số], DuLieuBanHang[Sản phẩm], "A", DuLieuBanHang[Khu vực], "Miền Bắc")
Cú pháp này dễ đọc hơn nhiều so với tham chiếu ô A2:C10000.
Sắp xếp điều kiện theo độ hạn chế:
MAXIFS đánh giá các điều kiện từ trái sang phải. Đặt điều kiện lọc nhiều dữ liệu nhất ở vị trí đầu tiên giúp Excel giảm số lượng ô cần kiểm tra ở các điều kiện tiếp theo. Ví dụ, nếu điều kiện “Miền Bắc” chỉ chiếm 10% dữ liệu, đặt nó trước điều kiện “Sản phẩm A” chiếm 40% dữ liệu.
Tránh tham chiếu cột đầy đủ:
Không sử dụng tham chiếu như C:C hoặc 2:2 trong MAXIFS. Điều này buộc Excel phải quét toàn bộ cột, bao gồm cả hàng triệu ô trống. Luôn giới hạn phạm vi đến vùng dữ liệu thực tế.
Xử lý lỗi thường gặp
Lỗi #VALUE!:
Lỗi này xuất hiện khi kích thước và hình dạng của phạm vi tìm max và các phạm vi điều kiện không giống nhau. Ví dụ, nếu phạm vi tìm max là C2:C10 (9 ô) nhưng phạm vi điều kiện là B2:B11 (10 ô), Excel trả về #VALUE!. Kiểm tra kỹ tất cả các phạm vi có cùng số hàng và cột.
Lỗi #NAME?:
Nếu nhập công thức MAXIFS trong Excel 2016 trở về trước, Excel không nhận diện hàm này và trả về lỗi #NAME?. MAXIFS chỉ khả dụng từ Excel 2019 và Microsoft 365. Người dùng phiên bản cũ hơn phải sử dụng công thức mảng MAX IF.
Kết quả bằng 0:
Khi không có ô nào thỏa mãn tất cả các điều kiện, MAXIFS trả về 0 thay vì lỗi. Điều này có thể gây nhầm lẫn nếu 0 là giá trị hợp lệ trong dữ liệu. Để phân biệt, bọc MAXIFS trong hàm IF:
=IF(COUNTIFS(B2:B10, "A", A2:A10, "Miền Bắc")=0, "Không có dữ liệu", MAXIFS(C2:C10, B2:B10, "A", A2:A10, "Miền Bắc"))
Ứng dụng thực tế trong phân tích dữ liệu
Tìm hiệu suất tốt nhất theo nhóm:
Trong phân tích nhân sự, tìm mức lương cao nhất của từng phòng ban:
=MAXIFS([Lương], [Phòng ban], [@Phòng ban])
Kéo công thức xuống để tự động tính cho tất cả phòng ban. Kết hợp với định dạng có điều kiện để làm nổi bật các hàng có lương bằng giá trị lớn nhất.
Phân tích xu hướng theo thời gian:
Với dữ liệu doanh số theo tháng, tìm doanh số cao nhất của từng sản phẩm trong quý cụ thể:
=MAXIFS([Doanh số], [Sản phẩm], "A", [Tháng], ">=1", [Tháng], "<=3")
Điều này giúp xác định tháng có hiệu suất tốt nhất trong quý để phân tích yếu tố thành công.
Theo dõi KPI và ngưỡng:
Tìm giá trị cao nhất trong số các chỉ số vượt ngưỡng mục tiêu:
=MAXIFS([KPI thực tế], [Tên KPI], "Tỷ lệ chuyển đổi", [KPI thực tế], ">="&[KPI mục tiêu])
Công thức này trả về con số tốt nhất trong số các lần đạt hoặc vượt mục tiêu.
Kết hợp MAXIFS với các hàm khác
MAXIFS trở nên mạnh mẽ hơn khi kết hợp với các hàm Excel khác.
Tìm thông tin liên quan đến giá trị lớn nhất:
Sau khi tìm được giá trị lớn nhất, sử dụng INDEX MATCH để lấy thông tin từ cột khác:
=INDEX([Tên nhân viên], MATCH(MAXIFS([Doanh số], [Phòng ban], "Kinh doanh"), [Doanh số], 0))
Công thức này trả về tên nhân viên có doanh số cao nhất trong phòng Kinh doanh.
So sánh với trung bình:
Tính toán mức độ vượt trội của giá trị lớn nhất so với trung bình:
=(MAXIFS([Doanh số], [Khu vực], "Miền Nam") - AVERAGEIFS([Doanh số], [Khu vực], "Miền Nam")) / AVERAGEIFS([Doanh số], [Khu vực], "Miền Nam")
Kết quả cho biết giá trị cao nhất vượt trung bình bao nhiêu phần trăm.
Tạo bảng tổng hợp động:
Kết hợp với UNIQUE (Excel 365) để tạo bảng tổng hợp tự động:
=MAXIFS([Doanh số], [Sản phẩm], UNIQUE([Sản phẩm]))
Công thức này trả về mảng chứa doanh số cao nhất của từng sản phẩm duy nhất trong dữ liệu.
Những điểm cần nhớ khi sử dụng
MAXIFS không phân biệt chữ hoa chữ thường trong điều kiện văn bản. Điều kiện “Miền Bắc”, “miền bắc”, và “MIỀN BẮC” được xem là giống nhau. Nếu cần so sánh phân biệt chữ hoa thường, sử dụng công thức mảng MAX IF với hàm EXACT.
Hàm tự động bỏ qua ô trống trong phạm vi tìm max, nhưng không bỏ qua các giá trị văn bản hoặc lỗi. Nếu phạm vi chứa giá trị phi số, có thể gây lỗi. Sử dụng IFERROR để xử lý:
=IFERROR(MAXIFS(C2:C10, B2:B10, "A"), "Lỗi dữ liệu")
Khi sao chép công thức có MAXIFS, nhớ khóa các phạm vi bằng ký hiệu $ nếu không muốn chúng thay đổi. Ví dụ, $C$2:$C$10 giữ cố định phạm vi, trong khi C2:C10 điều chỉnh tương đối.
Các hàm trong họ MAXIFS bao gồm MINIFS, SUMIFS, AVERAGEIFS, và COUNTIFS đều hoạt động theo cùng nguyên tắc. Sau khi thành thạo MAXIFS, bạn dễ dàng áp dụng logic tương tự cho các hàm còn lại.
Tăng tốc quy trình phân tích của bạn
Việc thay thế công thức mảng MAX IF bằng MAXIFS đã giúp tôi giảm thời gian xây dựng báo cáo phân tích từ 2 giờ xuống còn 45 phút mỗi tuần. Công thức đơn giản hơn, không còn lo lắng về việc nhấn đúng tổ hợp phím, và tốc độ tính toán nhanh hơn rõ rệt với bộ dữ liệu lớn.
MAXIFS có sẵn trong Excel 2019, Excel 2021, và Microsoft 365 trên cả Windows và Mac. Người dùng Excel 2016 trở về trước cần nâng cấp hoặc tiếp tục sử dụng công thức mảng truyền thống. Nếu làm việc trong môi trường có nhiều phiên bản Excel khác nhau, kiểm tra khả năng tương thích trước khi chia sẻ file chứa MAXIFS.
Để làm chủ hoàn toàn hàm này, hãy thực hành với dữ liệu thực tế của bạn. Bắt đầu với một điều kiện đơn giản, sau đó dần dần thêm nhiều điều kiện phức tạp hơn. Thử nghiệm kết hợp với các hàm khác như INDEX, MATCH, hoặc SUMIFS để xây dựng các giải pháp phân tích toàn diện hơn.
