Menu

Lỗi #REF! trong Excel: nguyên nhân và cách sửa

#REF! nghĩa là công thức tham chiếu đến một ô không còn tồn tại, thường do một hàng, cột hoặc trang tính mà công thức dùng đã bị xóa: =B2*C2 thành =B2*#REF!. Lỗi này cũng xuất hiện khi VLOOKUP hoặc INDEX yêu cầu một cột hay hàng nằm ngoài vùng.

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.

#REF! nghĩa là công thức tham chiếu đến một ô không có ở đó. Nguyên nhân thường gặp là một hàng, cột hoặc trang tính đã bị xóa: khi cột C bị xóa, Excel viết lại =B2*C2 thành =B2*#REF!, và từ đó kết quả luôn là #REF!. Nhấn Ctrl+Z (Cmd+Z trên Mac) ngay sau khi xóa để lấy lại cả cột lẫn công thức.

Sau khi một cột bị xóa
D2
ABCD
1ProductPriceQtyTotal
2Apple1.210#REF!
3Pear1.520#REF!
4Plum0.815#REF!
5Bread2.45#REF!
#REF! Công thức tham chiếu đến một ô không tồn tại.

Cột số lượng đã bị xóa rồi được gõ lại, nhưng công thức vẫn ghi #REF!: Excel không bao giờ tự sửa một tham chiếu đã mất. Bấm vào D2, thay #REF! bằng C2 rồi nhấn Enter. Cả cột thay đổi theo, và D2 hiện 12.

#REF! xuất hiện trong công thức như thế nào

Excel ghi #REF! vào công thức mỗi khi một ô mà công thức dùng biến mất:

Bạn đã làm gì=B2*C2 ở D2 trở thành
Xóa cột C=B2*#REF!
Xóa hàng 2công thức bị xóa cùng hàng của nó; công thức ở các hàng khác trỏ đến hàng 2 nhận #REF!
Xóa trang tính mà công thức tham chiếu=#REF!B2*2 (với công thức như =Prices!B2*2)
Cắt một ô rồi dán đè lên một ô mà công thức dùng#REF! thay cho tham chiếu bị ghi đè

Xóa các ô bên trong một vùng thì an toàn: =SUM(B2:D2) thành =SUM(B2:C2) khi cột C bị xóa. Xóa ô đầu hoặc ô cuối của vùng chỉ làm vùng thu nhỏ lại. Vì vậy =SUM(B2:D2) an toàn hơn =B2+C2+D2, công thức sẽ thành =B2+#REF!+C2.

Vì sao VLOOKUP trả về #REF!

Đối số thứ ba của VLOOKUP đếm số cột bên trong vùng bảng. Nếu nó lớn hơn số cột trong vùng, kết quả là #REF!.

Số cột nằm ngoài vùng
F2
ABCDEF
1ProductPriceStockLook forStock
2Apple1.240Pear#REF!
3Pear1.525
4Plum0.860
5Bread2.412
6Milk1.130
#REF! Công thức tham chiếu đến một ô không tồn tại.

A2:C6 có ba cột, nên cột 4 không tồn tại. Đổi 4 thành 3 và F2 hiện 25. Lỗi này hay gặp nhất sau khi xóa một cột khỏi bảng tra cứu: vùng thu nhỏ lại, còn số cột viết cứng trong công thức thì không. XLOOKUP hoặc INDEX kết hợp MATCH tránh được lỗi này vì chúng chỉ rõ cột trả về, như =XLOOKUP(E2,A2:A6,C2:C6). Xem VLOOKUP để biết các đối số còn lại.

#REF! với INDEX và OFFSET

INDEX trả về #REF! khi số hàng hoặc số cột nằm ngoài vùng, còn OFFSET trả về lỗi này khi dịch lên trên hàng 1 hoặc sang trái cột A.

Vị trí nằm ngoài vùng
B2
ABC
1ScoreResultWhat it asks for
288#REF!6th value of 5
372953rd value of 5
495#REF!2 rows above A2
564814 rows below A2
681
#REF! Công thức tham chiếu đến một ô không tồn tại.

A2:A6 có năm điểm số, nên INDEX(A2:A6,6) là #REF! trong khi INDEX(A2:A6,3) trả về 95. Hàng 0 không tồn tại, nên OFFSET(A2,-2,0) là #REF!, còn OFFSET(A2,4,0) rơi vào A6: 81. Khi vị trí đến từ một công thức khác (một hàm MATCH, một hàm COUNT), hãy kiểm tra công thức đó trước. Xem thêm ở trang INDEX.

INDIRECT cũng trả về #REF! khi chuỗi văn bản của nó không phải địa chỉ hợp lệ (=INDIRECT("ZZZ1"), vì cột cuối cùng là XFD) hoặc trỏ vào một workbook đang đóng.

#REF! khi sao chép công thức

Tham chiếu tương đối di chuyển theo công thức. Sao chép đủ xa lên trên hoặc sang ngang thì tham chiếu sẽ rơi ra ngoài trang tính:

C3:  =B2*2        (one row up, one column back)
copy C3 to B2:  =A1*2
copy C3 to A2:  =#REF!*2    (there is no column before A)

Điều tương tự xảy ra khi một công thức sao chép sang trang tính hoặc workbook khác trỏ đến những ô không tồn tại ở đó. Hãy khóa các ô không được di chuyển bằng $ (=$B$2*2), hoặc sao chép nội dung công thức từ thanh công thức thay vì sao chép ô. Trang tham chiếu tuyệt đối giải thích dấu $.

Tìm và xóa mọi #REF! trong workbook

  1. Nhấn Ctrl+F (Cmd+F trên Mac), gõ #REF!, mở Options, đặt Look in thành Formulas rồi bấm Find All. Danh sách hiện mọi công thức có tham chiếu bị hỏng.
  2. Để sửa nhiều chỗ cùng lúc, dùng Ctrl+H (Control+H trên Mac): tìm #REF! và thay bằng tham chiếu đúng, nhưng chỉ khi mọi kết quả tìm được đều cần cùng một ô.
  3. Kiểm tra Formulas > Name Manager: một tên có cột Refers To hiện #REF! sẽ làm hỏng mọi công thức dùng tên đó.
  4. Nếu dữ liệu đã xóa không còn và công thức cũng không cần nữa, hãy chọn các ô rồi thay công thức bằng giá trị (Copy, rồi Home > Paste > Values). Giá trị lỗi vẫn là lỗi, nên sau đó hãy xóa các ô đó.

Sửa một phép tra cứu trả về #REF!

Sửa phép tra cứu tồn kho
F2
ABCDEF
1ProductPriceStockLook forStock
2Apple1.240Plum
3Pear1.525
4Plum0.860
5Bread2.412
6Milk1.130
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: =VLOOKUP(E2,A2:C6,4,FALSE) đã trả về #REF!. Hãy viết ở F2 một phép tra cứu chạy đúng, trả về số lượng tồn kho của sản phẩm ở E2.

Mọi phép tra cứu trả về 60 ở đây và thay đổi theo dữ liệu đều đạt: VLOOKUP với cột 3, =XLOOKUP(E2,A2:A6,C2:C6) hoặc =INDEX(C2:C6,MATCH(E2,A2:A6,0)).

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

#REF! trong Excel nghĩa là gì?

Công thức trỏ đến một ô không tồn tại. Thường gặp nhất là một hàng, cột hoặc trang tính mà công thức dùng đã bị xóa, và Excel thay tham chiếu đó bằng #REF!, nên =B2*C2 thành =B2*#REF!. VLOOKUP và INDEX cũng trả về #REF! khi số cột hoặc số hàng lớn hơn vùng dữ liệu.

Làm sao để sửa #REF! sau khi xóa một cột?

Nhấn Ctrl+Z (Cmd+Z trên Mac) ngay để hoàn tác thao tác xóa. Nếu đã quá muộn, bấm vào công thức và thay #REF! bằng ô mà công thức cần dùng, rồi kéo công thức xuống lại.

Vì sao VLOOKUP trả về #REF!?

Số cột lớn hơn số cột trong vùng bảng. =VLOOKUP(E2,A2:C6,4,FALSE) yêu cầu cột thứ 4 của một vùng chỉ có 3 cột. Hãy dùng 3, hoặc mở rộng vùng thành A2:D6.

Làm sao để tìm mọi lỗi #REF! trong một workbook?

Nhấn Ctrl+F (Cmd+F trên Mac), tìm #REF!, đặt Look in thành Formulas rồi bấm Find All. Excel liệt kê mọi công thức chứa tham chiếu bị hỏng. Kiểm tra cả Formulas > Name Manager: các tên có thể trỏ đến #REF! sau khi xóa.

Làm sao để tránh #REF! khi xóa hàng hoặc cột?

Tham chiếu đến vùng thay vì từng ô riêng lẻ. =SUM(B2:D2) thu lại thành =SUM(B2:C2) khi cột C hoặc D bị xóa, còn =B2+C2+D2 thành =B2+#REF!+C2. Các hàm tra cứu chỉ rõ cột trả về, như =XLOOKUP(E2,A2:A6,C2:C6), vẫn đúng khi bạn chèn cột hoặc xóa những cột mà chúng không dùng.

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