Chào các anh chị em trong diễn đàn,
Hôm nay mình muốn chia sẻ một chút kinh nghiệm về hàm INDIRECT trong Excel, một hàm rất mạnh mẽ nhưng cũng tiềm ẩn nhiều rủi ro nếu không cẩn thận. Gần đây mình có gặp một vài trường hợp file bị lỗi #REF! hoặc chạy chậm bất thường mà nguyên nhân sâu xa lại đến từ việc lạm dụng INDIRECT.
INDIRECT cho phép chúng ta tham chiếu đến một ô hoặc một vùng dữ liệu dựa trên một chuỗi văn bản. Điều này rất hữu ích khi chúng ta cần tạo các báo cáo động, hoặc khi tên sheet/vùng dữ liệu thay đổi thường xuyên. Tuy nhiên, nhược điểm của nó là:
- Tính toán lại liên tục: Mỗi khi có thay đổi nhỏ trong workbook,
INDIRECTcó thể kích hoạt tính toán lại toàn bộ các ô phụ thuộc, dẫn đến file chậm. - Khó debug: Khi tham chiếu bị lỗi (ví dụ: tên sheet không tồn tại, hoặc chuỗi văn bản không đúng định dạng),
INDIRECTsẽ trả về lỗi#REF!và việc dò tìm nguyên nhân đôi khi rất mất thời gian. - Không tối ưu hiệu năng: So với các hàm khác như
INDEX/MATCHhoặcOFFSET(khi dùng với mục đích tương tự),INDIRECTthường kém hiệu quả hơn về tốc độ xử lý, đặc biệt với các file lớn.
Lời khuyên của mình:
- Hãy cố gắng hạn chế sử dụng
INDIRECTnếu có thể. Thử tìm các giải pháp thay thế dùngINDEX,MATCH,OFFSET, hoặc thậm chí là Power Query. - Nếu bắt buộc phải dùng, hãy đảm bảo rằng chuỗi văn bản mà
INDIRECTnhận vào luôn chính xác và ổn định. - Kiểm tra kỹ các tham chiếu trả về
#REF!, có thể bạn cần kiểm tra lại tên sheet, tên cột/hàng hoặc đường dẫn file (nếu tham chiếu đến file ngoài).
Hy vọng chia sẻ này giúp ích cho mọi người trong quá trình làm việc với Excel.
Trân trọng!