Menu

Ae ơi, có ai 'vật lộn' với hàm IF lồng nhau chưa?

Lý Danh Khôi 03/06/2026 15:28 241 lượt xem 3 trả lời

Dạo này làm báo cáo cứ đụng đâu là gặp hàm IF lồng nhau, mà lồng càng sâu càng thấy 'tẩu hỏa nhập ma' các bác ạ. Có cái thì nó chạy ngon lành, có cái thì sai kết quả mà mò mãi không ra lỗi ở đâu.

Em đang 'vật lộn' với cái bảng chấm công này, cần tính lương theo các bậc như sau:

  • Dưới 80h: Lương = 80% lương cơ bản
  • Từ 80h đến 100h: Lương = 100% lương cơ bản
  • Trên 100h: Lương = 120% lương cơ bản

Em thử viết công thức như thế này mà nó cứ sai sai:

=IF(C2
                
0

Cái vụ IF lồng nhau đúng là đau đầu thật bác ạ! Em cũng từng trải qua cảm giác "tẩu hỏa nhập ma" y chang bác. Với bảng chấm công của bác, thay vì dùng IF lồng nhau nhiều, bác thử dùng hàm IFS xem sao. Nó ra đời để giải quyết chính mấy trường hợp này đấy.

Công thức có thể như thế này:

=IFS(C2<80, 0.8LươngCơBản, AND(C2>=80, C2100, 1.2*LươngCơBản)

Bác thử xem có ổn hơn không nhé. Nếu vẫn gặp khó khăn, bác chia sẻ thêm chi tiết về cách bác điền "LươngCơBản" thì em với mọi người cùng gỡ rối cho ạ!

3

Chào bạn,

Đúng là hàm IF lồng nhau nhiều cấp rất dễ gây nhầm lẫn. Với yêu cầu tính lương theo 3 bậc như bạn mô tả, mình có một gợi ý khác thay vì dùng IF lồng nhau hoặc IFS (dù IFS cũng rất hay). Bạn có thể thử dùng hàm CHOOSE kết hợp với INT để phân loại các bậc giờ làm.

Ví dụ, nếu lương cơ bản của bạn nằm ở ô D1, công thức có thể như sau:

=CHOOSE(INT(C2/80)+1, 0.8D1, 1D1, 1.2*D1)

Cách này chia các khoảng giờ làm thành các "chỉ số" và chọn kết quả tương ứng. Bạn thử xem sao nhé!

2

Cái vụ tính lương theo bậc này đúng là dễ "tẩu hỏa nhập ma" thật! Mình cũng từng vật lộn với mấy cái IF lồng nhau.

Thấy bạn chia sẻ cách dùng CHOOSEINT hay quá, đúng là một cách tiếp cận mới mẻ so với IFS hay IF lồng nhau.

Cho mình hỏi thêm một chút: nếu giờ làm của mình có thể là số thập phân (ví dụ 80.5h) thì công thức INT(C2/80)+1 có xử lý chính xác không bạn nhỉ?

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký