Hai năm trước, việc xếp hạng doanh số nhân viên cuối tháng tốn của tôi gần 45 phút. Sắp xếp thủ công, copy từng giá trị top vào bảng mới, kiểm tra tên tương ứng. Nay cùng một file 500 dòng, tôi có bảng xếp hạng hoàn chỉnh trong 3 giây nhờ hàm LARGE kết hợp INDEX MATCH.

Cách cũ làm tôi mất cả buổi sáng
Trước khi biết hàm LARGE, quy trình tạo báo cáo Top 10 nhân viên của tôi như sau: Sắp xếp cột doanh thu từ cao xuống thấp, ghi nhớ 10 giá trị đầu, tạo bảng mới, copy thủ công từng giá trị và tên. Mỗi tháng data thay đổi, phải làm lại toàn bộ.
Thực tế tệ hơn khi phải tạo nhiều bảng xếp hạng khác nhau: Top 5 miền Bắc, Top 3 sản phẩm A, Top 10 quý này. File Excel có 8 sheets khác nhau, mỗi sheet phải sắp xếp và copy riêng. Một lần tôi quên cập nhật sheet Top 5, gửi sếp số liệu cũ từ tháng trước.
Vấn đề lớn nhất là công thức không tự động. Khi nhập doanh số tuần mới vào sheet gốc, 8 bảng xếp hạng không tự cập nhật. Phải mở từng sheet, sắp xếp lại, copy lại. Tháng 12 năm ngoái với 500 nhân viên, tôi mất cả buổi sáng chỉ để update báo cáo.
Hàm LARGE tìm top số trong 1 giây
Hàm LARGE trả về giá trị lớn thứ k trong tập dữ liệu. Cú pháp đơn giản: =LARGE(array, k) với array là vùng dữ liệu và k là thứ hạng cần tìm.
Ví dụ cơ bản:
Giả sử doanh thu tháng 10 của 10 nhân viên nằm trong vùng D2:D11. Để tìm doanh thu cao nhất, dùng công thức:
=LARGE(D2:D11, 1)
Kết quả trả về giá trị lớn nhất trong vùng. Tìm doanh thu cao thứ 2:
=LARGE(D2:D11, 2)
Công thức này nhanh hơn cách sắp xếp thủ công và quan trọng hơn, tự động cập nhật khi data thay đổi. Thay số trong cột doanh thu, kết quả thay đổi ngay lập tức.
So sánh với hàm MAX:
Hàm MAX chỉ tìm được giá trị lớn nhất: =MAX(D2:D11). Khi cần top 2, top 3, MAX không làm được. Phải dùng LARGE với k thay đổi: k=1 cho top 1, k=2 cho top 2, k=10 cho giá trị nhỏ nhất trong 10 số.
Điều này cho phép tạo bảng xếp hạng hoàn chỉnh. Trong cột Thứ hạng điền 1, 2, 3… đến 10. Cột Doanh thu dùng công thức =LARGE($D$2:$D$11, A2) với A2 là thứ hạng. Kéo công thức xuống, có ngay top 10 tự động.
Vấn đề là tìm được top số nhưng không biết tên
Hàm LARGE chỉ trả về con số. Biết doanh thu cao nhất là 85 triệu nhưng không biết nhân viên nào đạt được. Đây là lúc cần kết hợp INDEX và MATCH.
Hàm MATCH tìm vị trí của giá trị trong dãy. Cú pháp: =MATCH(lookup_value, lookup_array, 0). Số 0 nghĩa là tìm chính xác.
Hàm INDEX trả về giá trị tại vị trí cụ thể. Cú pháp: =INDEX(array, row_number).
Kết hợp cả 3 hàm:
Giả sử tên nhân viên ở cột C (C2:C11) và doanh thu ở cột D (D2:D11). Công thức tìm tên nhân viên có doanh thu cao nhất:
=INDEX(C2:C11, MATCH(LARGE(D2:D11, 1), D2:D11, 0))
Cách hoạt động:
LARGE(D2:D11, 1)tìm doanh thu cao nhất, giả sử 85 triệuMATCH(85000000, D2:D11, 0)tìm 85 triệu nằm ở vị trí thứ mấy trong cột D, giả sử vị trí 5INDEX(C2:C11, 5)lấy tên ở hàng 5 của cột C
Để tạo bảng top 10 đầy đủ, dùng công thức:
=INDEX($C$2:$C$11, MATCH(LARGE($D$2:$D$11, A2), $D$2:$D$11, 0))
A2 chứa thứ hạng (1, 2, 3…). Kéo công thức xuống, có ngay danh sách 10 tên theo thứ tự doanh thu. Khi data thay đổi, bảng tự cập nhật hoàn toàn.
Tô màu tự động top 3 bằng Conditional Formatting
Thay vì tạo bảng xếp hạng riêng, có thể tô màu trực tiếp trên sheet gốc. Những nhân viên top 1, 2, 3 được highlight khác màu ngay trong danh sách 500 người.
Các bước thực hiện:
Bước 1: Chọn vùng doanh thu cần tô màu, ví dụ D2:D501 cho 500 nhân viên.
Bước 2: Vào Home > Conditional Formatting > New Rule.
Bước 3: Chọn “Use a formula to determine which cells to format”.
Bước 4: Nhập công thức cho top 1 (tô màu vàng):
=D2=LARGE($D$2:$D$501, 1)
Lưu ý ô D2 không có dấu $ trước D, nhưng vùng tham chiếu $D$2:$D$501 có dấu $ để cố định. Điều này cho phép công thức áp dụng đúng cho từng hàng.
Bước 5: Click Format, chọn màu vàng, OK.
Bước 6: Lặp lại cho top 2 (màu xanh dương):
=D2=LARGE($D$2:$D$501, 2)
Bước 7: Lặp lại cho top 3 (màu xanh lá):
=D2=LARGE($D$2:$D$501, 3)
Kết quả: Trong danh sách 500 dòng, 3 ô có doanh thu cao nhất tự động highlight. Khi nhập doanh thu mới hoặc sửa số cũ, màu sắc thay đổi theo thời gian thực.
Phương pháp này đặc biệt hữu ích cho dashboard. Sếp mở file, nhìn thấy ngay top performer mà không cần cuộn tìm hoặc đọc bảng xếp hạng riêng.
Tính thưởng tự động theo thứ hạng
Kết hợp hàm IF với LARGE để tính thưởng: Top 1 nhận 5 triệu, top 2 nhận 3 triệu, top 3 nhận 2 triệu, còn lại không thưởng.
Công thức trong cột Thưởng (cột E):
=IF(D2=LARGE($D$2:$D$501, 1), 5000000, IF(D2=LARGE($D$2:$D$501, 2), 3000000, IF(D2=LARGE($D$2:$D$501, 3), 2000000, 0)))
Cách hoạt động:
- Kiểm tra doanh thu ở hàng hiện tại có bằng top 1 không
- Nếu đúng, trả về 5 triệu
- Nếu không, kiểm tra có bằng top 2 không
- Tiếp tục cho đến top 3
- Nếu không phải top 3, trả về 0
Copy công thức xuống 500 hàng, mỗi nhân viên có số tiền thưởng tương ứng. Tổng cột Thưởng cho biết tổng chi phí khen thưởng tháng đó.
Phương pháp này linh hoạt hơn nhiều. Muốn thưởng top 5 thay vì top 3, chỉ cần thêm 2 điều kiện IF. Muốn thay đổi số tiền thưởng, sửa con số trong công thức. Không cần kiểm tra thủ công từng người.
Xử lý trường hợp doanh thu trùng nhau
Vấn đề xuất hiện khi 2 nhân viên có doanh thu bằng nhau. Giả sử 2 người cùng đạt 85 triệu, ai được xếp hạng 1?
Hàm LARGE trả về cùng một giá trị cho cả 2 vị trí:
LARGE(D2:D11, 1)= 85 triệuLARGE(D2:D11, 2)= 85 triệu (nếu không có giá trị nào ở giữa)
Hàm MATCH chỉ tìm kết quả đầu tiên phù hợp. Nếu 85 triệu xuất hiện ở hàng 3 và hàng 7, MATCH luôn trả về hàng 3. Kết quả: Tên hàng 3 xuất hiện 2 lần trong bảng top.
Giải pháp 1: Chấp nhận cùng thứ hạng
Cách đơn giản nhất là chấp nhận 2 người cùng đạt hạng 1. Dùng công thức COUNTIF để đếm số người đạt từng mức doanh thu:
=COUNTIF($D$2:$D$11, LARGE($D$2:$D$11, 1))
Nếu kết quả là 2, có 2 người cùng đạt top 1. Hiển thị chú thích “Có 2 nhân viên đạt thành tích này”.
Giải pháp 2: Dùng thêm tiêu chí phụ
Khi doanh thu bằng nhau, xét tiêu chí phụ như số đơn hàng hoặc thời gian làm việc. Điều này yêu cầu công thức phức tạp hơn với mảng hoặc hàm bổ trợ như RANK.
Trong thực tế, tôi dùng giải pháp 1 cho đơn giản. Trường hợp 2 người cùng doanh thu rất hiếm, xảy ra khoảng 1-2 lần trong năm. Khi đó kiểm tra thủ công và cộng thêm cột ghi chú.
Lỗi NUM khi k lớn hơn số dữ liệu
Lỗi #NUM! xuất hiện trong 2 trường hợp:
Trường hợp 1: k âm hoặc bằng 0
Công thức =LARGE(D2:D11, 0) hoặc =LARGE(D2:D11, -1) trả về lỗi #NUM!. Giá trị k phải là số nguyên dương từ 1 trở lên.
Trường hợp 2: k lớn hơn số điểm dữ liệu
Trong vùng D2:D11 có 10 giá trị. Công thức =LARGE(D2:D11, 15) yêu cầu giá trị lớn thứ 15, không tồn tại, gây lỗi #NUM!.
Lỗi này thường xảy ra khi copy công thức quá nhiều hàng. Tạo bảng top 10 nhưng kéo công thức xuống 20 hàng, 10 hàng cuối đều lỗi.
Cách khắc phục:
Dùng hàm IFERROR để bắt lỗi và hiển thị ô trống thay vì #NUM!:
=IFERROR(LARGE($D$2:$D$11, A2), "")
Khi A2 vượt quá 10, công thức trả về ô trống thay vì báo lỗi. Bảng trông sạch hơn và chuyên nghiệp hơn.
Kết hợp với bộ lọc và PivotTable
Hàm LARGE hoạt động độc lập với bộ lọc. Khi lọc hiển thị chỉ 50 trong 500 nhân viên, công thức =LARGE($D$2:$D$501, 1) vẫn tính trên toàn bộ 500 người, không chỉ 50 người đang hiển thị.
Để tính top trong dữ liệu đã lọc, cần dùng hàm AGGREGATE thay vì LARGE. Cú pháp:
=AGGREGATE(14, 5, $D$2:$D$501, 1)
Số 14 nghĩa là hàm LARGE, số 5 nghĩa là bỏ qua hàng ẩn. Tham số cuối là k (thứ hạng cần tìm).
Với PivotTable, cách tốt nhất là dùng tính năng Value Field Settings > Show Values As > Rank. Điều này tạo cột xếp hạng tự động mà không cần công thức.
Tuy nhiên, trong báo cáo thực tế, tôi thường tạo bảng xếp hạng riêng bằng LARGE thay vì dùng PivotTable. Lý do: Báo cáo dạng bảng thông thường dễ format và gửi email hơn PivotTable, đặc biệt khi người nhận không quen Excel.
Từ 45 phút xuống 3 giây
File của tôi hiện có 500 nhân viên với dữ liệu cập nhật hàng tuần. Sheet Dashboard chứa 5 bảng xếp hạng khác nhau: Top 10 toàn công ty, Top 5 từng chi nhánh (3 chi nhánh), Top 3 từng nhóm sản phẩm (2 nhóm).
Mỗi bảng dùng công thức LARGE kết hợp INDEX MATCH. Khi nhập doanh thu tuần mới vào sheet gốc, nhấn F9 để tính toán lại. Trong 3 giây, toàn bộ 5 bảng xếp hạng cập nhật hoàn chỉnh với tên và số liệu đúng.
Trước đây làm thủ công mất 45 phút mỗi tuần, tương đương 3 giờ mỗi tháng hoặc 36 giờ mỗi năm. Tiết kiệm được gần 1 tuần làm việc chỉ nhờ một hàm Excel đơn giản.
Hàm LARGE hoạt động trên Excel 2010 trở lên, bao gồm Excel 365. Không cần cài đặt add-in hoặc macro. Công thức đơn giản, dễ kiểm tra lỗi, và quan trọng nhất, đồng nghiệp khác có thể đọc hiểu và sửa khi cần.
