10 Lỗi Phổ Biến Nhất Trong Google Sheets & Cách Khắc Phục Chi Tiết

Bạn đang nhập công thức trong Google Sheets và đột nhiên thấy #REF!, #N/A, hay #VALUE! xuất hiện thay vì kết quả mong muốn? Đừng lo - đây là những lỗi cực kỳ phổ biến mà 99% người dùng Google Sheets đều gặp phải ít nhất một lần. Bài viết này sẽ giúp bạn hiểu rõ nguyên nhân gốc rễ của từng lỗi và cách khắc phục nhanh nhất.
Tại sao bạn cần hiểu các lỗi trong Google Sheets?
10 loại
Lỗi phổ biến nhất chiếm 95% các trường hợp gặp sự cố
80%
Người dùng không biết nguyên nhân gốc rễ khi gặp lỗi
5 phút
Thời gian trung bình để fix nếu biết cách
Bảng Tổng Quan 10 Lỗi Phổ Biến Nhất
Trước khi đi vào chi tiết, hãy xem qua bảng tổng quan để nắm được toàn cảnh các lỗi bạn có thể gặp trong Google Sheets:
| STT | Lỗi | Mô tả ngắn | Mức độ | Fix nhanh |
|---|---|---|---|---|
| 1 | #REF! | Tham chiếu không hợp lệ | Cao | IFERROR, kiểm tra range |
| 2 | #N/A | Không tìm thấy giá trị | Cao | IFNA, TRIM, kiểm tra data type |
| 3 | #VALUE! | Sai kiểu dữ liệu | Trung bình | VALUE(), TEXT(), TO_DATE() |
| 4 | #DIV/0! | Chia cho 0 | Trung bình | IF(B2=0, 0, A2/B2) |
| 5 | #NAME? | Hàm không tồn tại | Thấp | Kiểm tra chính tả, autocomplete |
| 6 | #NUM! | Số không hợp lệ | Thấp | Validate input, ABS() |
| 7 | #ERROR! | Lỗi cú pháp/parse | Trung bình | Kiểm tra dấu ngoặc, separator |
| 8 | Circular | Tham chiếu vòng | Cao | Tìm dependency chain |
| 9 | Loading... | Hiệu suất chậm | Trung bình | Cache data, giảm IMPORTRANGE |
| 10 | Validation | Nhập liệu sai quy tắc | Thấp | Clear validation, re-apply |
Bây giờ hãy đi vào chi tiết từng lỗi, nguyên nhân gốc rễ và cách khắc phục cụ thể.
Lỗi #1: #REF! - Tham Chiếu Không Hợp Lệ
Mức độ nghiêm trọng: CAO
Lỗi #REF! là một trong những lỗi phổ biến và nguy hiểm nhất vì nó có thể lan truyền sang nhiều ô khác tham chiếu đến ô bị lỗi.
Nguyên nhân gây ra lỗi #REF!
Lỗi #REF! xuất hiện khi một công thức tham chiếu đến ô hoặc vùng dữ liệu không còn tồn tại. Đây là các nguyên nhân phổ biến nhất:
Nguyên nhân 1: Xóa hàng hoặc cột được tham chiếu
Khi bạn xóa hàng hoặc cột mà các công thức khác đang tham chiếu đến, Google Sheets không thể tìm thấy dữ liệu gốc và trả về #REF!.
// Ví dụ: Ô C1 chứa công thức =A1+B1 // Bạn xóa cột B // Kết quả: C1 hiển thị =A1+#REF! (vì B1 không còn tồn tại)
Nguyên nhân 2: VLOOKUP với col_index vượt quá phạm vi
Khi tham số col_index_num trong VLOOKUP lớn hơn số cột thực tế của vùng dữ liệu.
// Vùng A1:C10 chỉ có 3 cột (A, B, C)
=VLOOKUP("Sản phẩm A", A1:C10, 5, FALSE)
// Lỗi #REF! vì col_index = 5 nhưng range chỉ có 3 cột
// Fix: Đổi col_index về giá trị hợp lệ (1, 2, hoặc 3)
=VLOOKUP("Sản phẩm A", A1:C10, 3, FALSE)
Nguyên nhân 3: Di chuyển ô/range bằng cách kéo thả sai
Khi bạn di chuyển (cut & paste) một vùng dữ liệu mà các công thức khác đang tham chiếu đến, Google Sheets có thể mất liên kết và gây lỗi #REF!.
Nguyên nhân 4: INDIRECT tham chiếu sheet đã bị xóa
Khi dùng hàm INDIRECT để tham chiếu đến sheet khác, nếu sheet đó bị đổi tên hoặc xóa, kết quả sẽ là #REF!.
// Sheet "Thang1" đã bị xóa hoặc đổi tên
=INDIRECT("Thang1!A1") // Kết quả: #REF!
// Fix: Kiểm tra tên sheet chính xác
=INDIRECT("Tháng 1!A1") // Nếu tên có dấu cách hoặc tiếng Việt
Cách khắc phục lỗi #REF!
3 Cách Fix Nhanh:
Dùng IFERROR để bắt lỗi
=IFERROR(A1+B1, "Lỗi tham chiếu - kiểm tra lại công thức")
=IFERROR(VLOOKUP("SP001", A:C, 3, FALSE), "Không tìm thấy")
Ctrl+Z (Undo) ngay lập tức
Nếu vừa xóa hàng/cột gây lỗi, nhấn Ctrl+Z ngay để khôi phục. Google Sheets lưu lịch sử thay đổi nên bạn có thể undo nhiều bước.
Dùng INDIRECT để tạo tham chiếu linh hoạt
// Thay vì tham chiếu trực tiếp Sheet1!A1
// Dùng INDIRECT để tham chiếu qua tên
=INDIRECT("'" & A1 & "'!B2")
// A1 chứa tên sheet, B2 là ô cần lấy
Mẹo phòng tránh #REF!
Trước khi xóa bất kỳ hàng/cột nào, hãy kiểm tra xem có công thức nào đang tham chiếu đến nó không bằng cách: Click vào ô, nhìn thanh công thức, hoặc dùng Ctrl+' (backtick) để hiện tất cả công thức trên sheet.
Lỗi #2: #N/A - Không Tìm Thấy Giá Trị
Mức độ nghiêm trọng: CAO
Lỗi #N/A là lỗi phổ biến nhất khi sử dụng các hàm tra cứu (VLOOKUP, HLOOKUP, INDEX/MATCH, XLOOKUP). Thường do dữ liệu không khớp chứ không phải do công thức sai.
Nguyên nhân gây ra lỗi #N/A
Nguyên nhân 1: VLOOKUP/INDEX MATCH không tìm thấy giá trị khớp
Đây là nguyên nhân phổ biến nhất. Giá trị tìm kiếm không tồn tại trong cột tra cứu.
// Cột A chứa: SP001, SP002, SP003
=VLOOKUP("SP004", A:B, 2, FALSE)
// Kết quả: #N/A vì "SP004" không có trong cột A
// Fix 1: Dùng IFERROR
=IFERROR(VLOOKUP("SP004", A:B, 2, FALSE), "Chưa có sản phẩm này")
// Fix 2: Dùng IFNA (chỉ bắt lỗi N/A, không bắt lỗi khác)
=IFNA(VLOOKUP("SP004", A:B, 2, FALSE), "Không tìm thấy")
Nguyên nhân 2: Dữ liệu bị khoảng trắng ẩn (leading/trailing spaces)
Đây là lỗi rất hay gặp và khó phát hiện. Ô A1 chứa "SP001 " (có dấu cách cuối) sẽ không khớp với "SP001".
// "SP001 " (có space) khác "SP001" (không space)
=VLOOKUP("SP001", A:B, 2, FALSE) // #N/A vì A1 = "SP001 "
// Fix: Dùng TRIM để loại bỏ khoảng trắng
=VLOOKUP(TRIM("SP001"), A:B, 2, FALSE)
// Hoặc TRIM cả vùng dữ liệu nguồn bằng ARRAYFORMULA
// Tạo cột phụ: =ARRAYFORMULA(TRIM(A2:A100))
Nguyên nhân 3: Khác kiểu dữ liệu (Text vs Number)
Ô chứa số 123 (number) và ô chứa "123" (text) là khác nhau trong Google Sheets. VLOOKUP sẽ không khớp nếu kiểu dữ liệu khác nhau.
// A1 = 123 (number), tìm "123" (text) sẽ #N/A
=VLOOKUP("123", A:B, 2, FALSE) // #N/A!
// Fix 1: Chuyển sang cùng kiểu
=VLOOKUP(VALUE("123"), A:B, 2, FALSE) // Chuyển text thành number
=VLOOKUP(TEXT(123, "0"), A:B, 2, FALSE) // Chuyển number thành text
// Fix 2: Dùng TO_TEXT hoặc VALUE
=VLOOKUP(TO_TEXT(A1), C:D, 2, FALSE)
Nguyên nhân 4: FILTER trả về kết quả rỗng
Khi hàm FILTER không tìm thấy bất kỳ hàng nào thỏa điều kiện, nó sẽ trả về #N/A thay vì mảng rỗng.
// Không có đơn hàng nào trong tháng 13 =FILTER(A:B, MONTH(A:A)=13) // #N/A // Fix: Bọc IFERROR =IFERROR(FILTER(A:B, MONTH(A:A)=13), "Không có dữ liệu")
Cách khắc phục lỗi #N/A - Chiến lược toàn diện
Workflow debug #N/A:
- Bước 1: Kiểm tra giá trị tìm kiếm có tồn tại không (Ctrl+F để search)
- Bước 2: Dùng TRIM() để loại bỏ khoảng trắng ẩn
- Bước 3: Kiểm tra kiểu dữ liệu bằng ISNUMBER() hoặc ISTEXT()
- Bước 4: Nếu vẫn lỗi, thử EXACT(A1, B1) để so sánh chính xác từng ký tự
- Bước 5: Dùng LEN() để kiểm tra độ dài - nếu khác nhau thì có ký tự ẩn
- Bước 6: Dùng CLEAN() + TRIM() để loại bỏ mọi ký tự ẩn
// Công thức "siêu an toàn" cho VLOOKUP - bắt mọi lỗi
=IFNA(
VLOOKUP(
TRIM(CLEAN(A1)),
B:C,
2,
FALSE
),
"Không tìm thấy: " & A1
)
Lỗi #3: #VALUE! - Sai Kiểu Dữ Liệu
Mức độ nghiêm trọng: TRUNG BÌNH
Lỗi #VALUE! xuất hiện khi bạn cố gắng thực hiện phép tính trên kiểu dữ liệu không tương thích, ví dụ cộng text với number.
Nguyên nhân gây ra lỗi #VALUE!
Nguyên nhân 1: Phép tính giữa text và number
// A1 = "abc" (text), B1 = 100 (number) =A1 + B1 // Kết quả: #VALUE! =A1 * 2 // Kết quả: #VALUE! // Fix: Chuyển đổi kiểu dữ liệu =VALUE(A1) + B1 // Nếu A1 là số dạng text như "100" =IF(ISNUMBER(A1), A1 + B1, "A1 không phải số")
Nguyên nhân 2: DATEVALUE với format ngày sai
// A1 = "21/02/2026" nhưng locale expect "2026-02-21" =DATEVALUE(A1) // #VALUE! nếu format không khớp // Fix: Dùng DATE kết hợp với MID, LEFT, RIGHT =DATE( RIGHT(A1, 4), // Năm: 2026 MID(A1, 4, 2), // Tháng: 02 LEFT(A1, 2) // Ngày: 21 ) // Hoặc đơn giản hơn: =DATEVALUE(TEXT(A1, "YYYY-MM-DD"))
Nguyên nhân 3: Kết hợp mảng có kích thước khác nhau
// SUMPRODUCT yêu cầu các mảng cùng kích thước =SUMPRODUCT(A1:A10, B1:B5) // #VALUE! vì 10 rows vs 5 rows // Fix: Đảm bảo cùng kích thước =SUMPRODUCT(A1:A10, B1:B10)
Nguyên nhân 4: Ô chứa ký tự đặc biệt không nhìn thấy
Khi copy dữ liệu từ web hoặc file khác, có thể có ký tự Unicode ẩn (non-breaking space, zero-width character) khiến phép tính bị lỗi.
// A1 trông như "100" nhưng thực ra là "100" (có zero-width space) =A1 + 50 // #VALUE! // Fix: Dùng CLEAN + TRIM + SUBSTITUTE =VALUE(TRIM(CLEAN(SUBSTITUTE(A1, CHAR(160), "")))) // CHAR(160) = non-breaking space // CLEAN() loại bỏ ký tự không in được // TRIM() loại bỏ khoảng trắng thừa
Công thức fix #VALUE! toàn diện
// Hàm helper: Chuyển bất kỳ giá trị nào thành số an toàn
// Bước 1: SUBSTITUTE loại non-breaking space
// Bước 2: CLEAN loại ký tự ẩn
// Bước 3: TRIM loại khoảng trắng
// Bước 4: SUBSTITUTE loại dấu chấm phân cách nghìn (1.000 -> 1000)
// Bước 5: VALUE chuyển thành số
// Bước 6: IFERROR trả về 0 nếu vẫn lỗi
=IFERROR(
VALUE(
SUBSTITUTE(
TRIM(CLEAN(SUBSTITUTE(A1, CHAR(160), ""))),
".",
""
)
),
0
)
Lỗi #4: #DIV/0! - Chia Cho 0
Mức độ nghiêm trọng: TRUNG BÌNH
Lỗi #DIV/0! xảy ra khi mẫu số (số chia) bằng 0 hoặc rỗng. Đây là lỗi dễ hiểu và dễ fix nhất trong các lỗi Google Sheets.
Nguyên nhân gây ra lỗi #DIV/0!
Nguyên nhân 1: Chia trực tiếp cho 0
=100/0 // #DIV/0! =A1/B1 // #DIV/0! nếu B1 = 0 // Fix đơn giản: =IF(B1=0, 0, A1/B1) =IF(B1=0, "N/A", A1/B1) =IFERROR(A1/B1, 0)
Nguyên nhân 2: Mẫu số là ô rỗng
Ô rỗng trong Google Sheets được coi là 0 khi dùng trong phép tính, nên chia cho ô rỗng cũng gây lỗi #DIV/0!.
// B1 là ô trống =A1/B1 // #DIV/0! vì B1 rỗng = 0 // Fix: Kiểm tra cả rỗng lẫn 0 =IF(OR(B1=0, ISBLANK(B1)), "Chưa có dữ liệu", A1/B1)
Nguyên nhân 3: AVERAGE trên vùng rỗng
// Tất cả ô trong A1:A10 đều rỗng =AVERAGE(A1:A10) // #DIV/0! vì không có giá trị nào để tính TB // Fix: =IF(COUNTA(A1:A10)=0, 0, AVERAGE(A1:A10)) =IFERROR(AVERAGE(A1:A10), "Chưa có dữ liệu")
Nguyên nhân 4: Hàm QUOTIENT, MOD, DIVIDE
=QUOTIENT(10, 0) // #DIV/0! =MOD(10, 0) // #DIV/0! // Fix pattern chung cho mọi phép chia: =IFERROR(phep_chia_o_day, gia_tri_mac_dinh)
Ứng dụng thực tế: Tính tỷ lệ phần trăm an toàn
// Tính tỷ lệ tăng trưởng doanh thu // A = Doanh thu tháng trước, B = Doanh thu tháng này // Cách SAI (dễ lỗi #DIV/0!): =(B2-A2)/A2*100 // Cách ĐÚNG (an toàn): =IF(A2=0, IF(B2>0, "Mới phát sinh", "0%"), TEXT((B2-A2)/A2, "0.0%") ) // Hoặc đơn giản hơn: =IFERROR(TEXT((B2-A2)/A2, "+0.0%;-0.0%"), "N/A")
Lỗi #5: #NAME? - Hàm Không Tồn Tại
Mức độ nghiêm trọng: THẤP
Lỗi #NAME? xuất hiện khi Google Sheets không nhận ra tên hàm hoặc tên vùng (named range) trong công thức. Thường do gõ sai chính tả.
Nguyên nhân gây ra lỗi #NAME?
Nguyên nhân 1: Gõ sai tên hàm
=VLOKUP(A1, B:C, 2, FALSE) // #NAME? - sai chính tả =VLOOUP(A1, B:C, 2, FALSE) // #NAME? - sai chính tả =SUMIF(A:A, ">100") // OK - đúng tên hàm // Fix: Gõ đúng tên hàm, dùng autocomplete =VLOOKUP(A1, B:C, 2, FALSE) // Đúng!
Nguyên nhân 2: Locale khác nhau (dấu phẩy vs chấm phẩy)
Google Sheets dùng locale để xác định dấu phân cách tham số. Locale tiếng Việt thường dùng dấu chấm phẩy (;) thay vì dấu phẩy (,).
// Locale EN (US): dùng dấu phẩy
=VLOOKUP("SP001", A:C, 2, FALSE)
// Locale VI (Việt Nam): dùng dấu chấm phẩy
=VLOOKUP("SP001"; A:C; 2; FALSE)
// Cách kiểm tra: File > Settings > Locale
Nguyên nhân 3: Named range không tồn tại
// Tham chiếu đến named range đã bị xóa =SUM(DoanhThu) // #NAME? nếu "DoanhThu" không tồn tại // Kiểm tra: Data > Named ranges // Fix: Tạo lại named range hoặc đổi về tham chiếu trực tiếp =SUM(B2:B100)
Nguyên nhân 4: Quên dấu ngoặc kép cho text
// Thiếu dấu ngoặc kép cho chuỗi text
=IF(A1=Hello, "Yes", "No") // #NAME? vì Hello không có ""
=IF(A1="Hello", "Yes", "No") // Đúng!
=VLOOKUP(SP001, A:C, 2, FALSE) // #NAME?
=VLOOKUP("SP001", A:C, 2, FALSE) // Đúng!
Mẹo tránh lỗi #NAME?
- - Luôn dùng autocomplete: Gõ vài ký tự đầu của tên hàm rồi chọn từ dropdown
- - Nếu copy công thức từ internet, kiểm tra locale separator (dấu , hoặc ;)
- - Kiểm tra tất cả chuỗi text đã có dấu ngoặc kép "" chưa
- - Google Sheets không phân biệt HOA/thường cho tên hàm (SUM = sum = Sum)
Lỗi #6: #NUM! - Số Không Hợp Lệ
Mức độ nghiêm trọng: THẤP
Lỗi #NUM! xảy ra khi kết quả của phép tính là một số không hợp lệ (quá lớn, quá nhỏ, hoặc không tồn tại trong toán học).
Nguyên nhân và cách khắc phục #NUM!
Nguyên nhân 1: Căn bậc hai số âm
=SQRT(-16) // #NUM! - không thể căn bậc hai số âm trong số thực // Fix: Dùng ABS() hoặc kiểm tra trước =SQRT(ABS(A1)) =IF(A1 >= 0, SQRT(A1), "Không hợp lệ")
Nguyên nhân 2: LOG hoặc LN của 0 hoặc số âm
=LOG(0) // #NUM! - log(0) không xác định =LOG(-5) // #NUM! - log số âm không xác định =LN(0) // #NUM! // Fix: =IF(A1 > 0, LOG(A1), "Không hợp lệ") =IFERROR(LOG(A1), 0)
Nguyên nhân 3: Kết quả vượt giới hạn Google Sheets
Google Sheets hỗ trợ số từ khoảng -1.79769 x 10^308 đến 1.79769 x 10^308. Vượt giới hạn sẽ lỗi #NUM!.
=10^309 // #NUM! vì vượt giới hạn =10^308 // OK // Fix: Kiểm tra giới hạn trước khi tính =IF(A1 > 308, "Quá lớn", 10^A1)
Nguyên nhân 4: IRR/XIRR không hội tụ
// IRR yêu cầu ít nhất 1 giá trị âm và 1 giá trị dương =IRR(A1:A5) // #NUM! nếu tất cả đều dương hoặc tất cả đều âm // Fix: Kiểm tra dữ liệu đầu vào =IF(AND(MIN(A1:A5) < 0, MAX(A1:A5) > 0), IRR(A1:A5), "Dữ liệu không hợp lệ cho IRR" )
Lỗi #7: #ERROR! - Lỗi Cú Pháp / Parse
Mức độ nghiêm trọng: TRUNG BÌNH
Lỗi #ERROR! là lỗi đặc thù của Google Sheets (Excel không có lỗi này). Nó xuất hiện khi Google Sheets không thể phân tích (parse) công thức của bạn.
Nguyên nhân gây ra lỗi #ERROR!
Nguyên nhân 1: Thiếu hoặc thừa dấu ngoặc
// Thiếu dấu ngoặc đóng =IF(A1>0, "Dương", "Âm" // #ERROR! thiếu ) =SUM(A1:A10 // #ERROR! thiếu ) // Thừa dấu ngoặc =SUM(A1:A10)) // #ERROR! thừa ) // Fix: Đếm số ngoặc mở = số ngoặc đóng =IF(A1>0, "Dương", "Âm") // Đúng!
Nguyên nhân 2: Dấu phân cách sai theo locale
Đây là lỗi CỰC KỲ PHỔ BIẾN khi copy công thức từ internet. Locale US dùng dấu phẩy (,), locale VN dùng dấu chấm phẩy (;).
// Locale VN mà dùng dấu phẩy: =IF(A1>0, "Dương", "Âm") // #ERROR! trên locale VN // Fix cho locale VN: =IF(A1>0; "Dương"; "Âm") // Đúng! // Cách kiểm tra locale: File > Settings > Locale // Cách đổi: Chọn "United States" nếu muốn dùng dấu phẩy
Nguyên nhân 3: Dấu ngoặc kép sai
// Dùng dấu ngoặc kép thông minh (smart quotes) thay vì thẳng =IF(A1>0, "Dương", "Âm") // Dấu " " cong - #ERROR! =IF(A1>0, "Dương", "Âm") // Dấu " " thẳng - OK! // Nguyên nhân: Copy từ Word, web, hoặc PDF thường có smart quotes // Fix: Xóa dấu ngoặc kép và gõ lại bằng tay
Nguyên nhân 4: Sử dụng ký tự đặc biệt trong công thức
// Dùng dấu = hai lần ==SUM(A1:A10) // #ERROR! // Dùng ký tự không hợp lệ =SUM(A1:A10)% // #ERROR! // Fix: Chỉ dùng 1 dấu = ở đầu =SUM(A1:A10) // Đúng!
Mẹo debug #ERROR! nhanh
- 1. Đếm số dấu ngoặc mở "(" phải bằng số dấu ngoặc đóng ")"
- 2. Kiểm tra locale: File > Settings > Locale
- 3. Nếu copy từ web, xóa toàn bộ công thức và gõ lại bằng tay
- 4. Bắt đầu công thức từ phần đơn giản nhất, thêm dần từng phần
- 5. Google Sheets highlight dấu ngoặc tương ứng khi click - tận dụng tính năng này
Lỗi #8: Circular Dependency - Tham Chiếu Vòng
Mức độ nghiêm trọng: CAO
Circular dependency (tham chiếu vòng) xảy ra khi công thức trong ô trực tiếp hoặc gián tiếp tham chiếu lại chính ô đó. Google Sheets sẽ hiện cảnh báo "Circular dependency detected" và ô hiển thị giá trị 0 hoặc lỗi.
Nguyên nhân gây ra Circular Dependency
Nguyên nhân 1: Tự tham chiếu trực tiếp
// Ô A1 chứa công thức: =A1+1 // A1 tham chiếu chính A1 -> vòng lặp vô hạn! // Ô B5 chứa: =SUM(B1:B10) // B5 nằm trong range B1:B10 -> circular dependency! // Fix: Đổi range để không bao gồm ô chứa công thức // B5: =SUM(B1:B4) + SUM(B6:B10) // Hoặc đặt công thức SUM ở ô ngoài range, ví dụ B11
Nguyên nhân 2: Tham chiếu vòng gián tiếp (chuỗi dependency)
// A1 = B1 + 10 // B1 = C1 * 2 // C1 = A1 - 5 // A1 -> B1 -> C1 -> A1 (vòng lặp!) // Fix: Phá vỡ chuỗi bằng cách thay 1 ô bằng giá trị cố định // C1 = 100 (giá trị cố định thay vì =A1-5)
Nguyên nhân 3: ARRAYFORMULA tạo vòng lặp
// Cột A: Dữ liệu gốc // Cột B: =ARRAYFORMULA(A:A * 2) -> Tràn xuống cả cột B // Cột C: =ARRAYFORMULA(B:B + A:A) -> OK // Nhưng nếu cột A có công thức tham chiếu cột C -> Circular! // Fix: Giới hạn range của ARRAYFORMULA =ARRAYFORMULA(A2:A100 * 2) // Thay vì A:A
Cách tìm và sửa Circular Dependency
Workflow debug Circular Dependency:
- Bước 1: Khi thấy cảnh báo, Google Sheets sẽ highlight ô gây lỗi bằng viền đỏ nhấp nháy. Ghi nhớ ô đó.
- Bước 2: Click vào ô, xem công thức ở thanh Formula Bar. Ghi lại các ô mà nó tham chiếu.
- Bước 3: Lần lượt click vào từng ô được tham chiếu, kiểm tra xem có ô nào tham chiếu ngược lại không.
- Bước 4: Vẽ sơ đồ dependency: A1 -> B1 -> C1 -> ? Nếu quay lại A1 thì đó là circular.
- Bước 5: Phá vỡ vòng lặp bằng cách thay một trong các ô bằng giá trị cố định hoặc đổi công thức.
Iterative Calculation - Khi nào dùng?
Google Sheets cho phép bật Iterative Calculation (File > Settings > Calculation > Iterative calculation) để cho phép tham chiếu vòng có chủ ý. Tuy nhiên, hãy cực kỳ cẩn thận vì:
- - Chỉ dùng khi bạn thực sự hiểu mình đang làm gì (ví dụ: running total)
- - Set Max iterations thấp (ví dụ: 1-10) để tránh vòng lặp vô hạn
- - Nó ảnh hưởng đến TOÀN BỘ spreadsheet, không chỉ 1 ô
Lỗi #9: Loading... / Đang Tải - Vấn Đề Hiệu Suất
Mức độ nghiêm trọng: TRUNG BÌNH
Khi ô hiển thị "Loading..." hoặc "Đang tải..." kéo dài, đó là dấu hiệu sheet đang quá tải. Không phải lỗi công thức nhưng ảnh hưởng nghiêm trọng đến trải nghiệm sử dụng.
Nguyên nhân gây ra tình trạng Loading...
Nguyên nhân 1: Quá nhiều IMPORTRANGE
Mỗi IMPORTRANGE tạo một kết nối đến spreadsheet khác. Nhiều IMPORTRANGE cùng lúc sẽ khiến Google Sheets phải đợi response từ nhiều nguồn.
// 10 IMPORTRANGE cùng lúc -> rất chậm
=IMPORTRANGE("spreadsheet_id_1", "Sheet1!A:D")
=IMPORTRANGE("spreadsheet_id_2", "Sheet1!A:D")
// ... x10
// Fix: Gộp data vào 1 spreadsheet trung gian
// Hoặc dùng Apps Script để import theo lịch (trigger)
// Hoặc copy-paste values thay vì IMPORTRANGE liên tục
Nguyên nhân 2: IMAGE, GOOGLEFINANCE, IMPORTDATA gọi external
// Mỗi hàm này gọi ra internet -> chậm
=IMAGE("https://example.com/image.png")
=GOOGLEFINANCE("GOOG", "price")
=IMPORTDATA("https://api.example.com/data.csv")
=IMPORTHTML("https://example.com", "table", 1)
// Fix:
// 1. Giảm số lượng external calls
// 2. Cache data bằng cách paste values định kỳ
// 3. Dùng Apps Script với time-based trigger thay vì hàm real-time
Nguyên nhân 3: File quá lớn (nhiều dữ liệu + công thức)
Google Sheets có giới hạn 10 triệu ô. Nhưng thực tế, khi vượt quá 50,000 hàng với nhiều công thức phức tạp, hiệu suất đã giảm đáng kể.
// Dấu hiệu file quá lớn: // - Mở file mất > 10 giây // - Cuộn sheet bị giật // - Gõ vào ô bị delay // - Tính toán lại (recalculate) mất > 5 giây // Fix: // 1. Archive dữ liệu cũ sang sheet/file khác // 2. Thay ARRAYFORMULA trên toàn cột bằng range cụ thể // 3. Xóa conditional formatting không cần thiết // 4. Giảm số sheet trong cùng 1 file // 5. Paste values cho dữ liệu không cần cập nhật
Nguyên nhân 4: ARRAYFORMULA + VLOOKUP trên range lớn
// ARRAYFORMULA kết hợp VLOOKUP trên hàng nghìn dòng -> cực chậm =ARRAYFORMULA(VLOOKUP(A2:A10000, OtherSheet!A:D, 3, FALSE)) // Fix 1: Dùng INDEX/MATCH thay VLOOKUP (nhanh hơn) =ARRAYFORMULA(INDEX(OtherSheet!C:C, MATCH(A2:A10000, OtherSheet!A:A, 0))) // Fix 2: Giới hạn range =ARRAYFORMULA(VLOOKUP(A2:A500, OtherSheet!A1:D1000, 3, FALSE)) // Fix 3: Dùng XLOOKUP (nhanh hơn VLOOKUP) =ARRAYFORMULA(XLOOKUP(A2:A10000, OtherSheet!A:A, OtherSheet!C:C))
Checklist tối ưu hiệu suất Google Sheets
Nên làm:
- - Dùng range cụ thể thay vì toàn cột (A2:A1000 thay vì A:A)
- - Dùng INDEX/MATCH thay VLOOKUP
- - Paste values cho dữ liệu tĩnh
- - Archive data cũ sang file riêng
- - Dùng QUERY thay cho nhiều IF/VLOOKUP lồng nhau
Không nên:
- - Dùng ARRAYFORMULA trên toàn cột (A:A)
- - Dùng nhiều hơn 5 IMPORTRANGE trong 1 file
- - Conditional formatting trên toàn sheet
- - Volatile functions (NOW, TODAY, RAND) quá nhiều
- - INDIRECT trên range lớn (rất chậm)
Lỗi #10: Data Validation Errors - Nhập Liệu Sai Quy Tắc
Mức độ nghiêm trọng: THẤP
Lỗi Data Validation không hiển thị mã lỗi (#REF, #N/A...) mà thường thể hiện qua: góc đỏ trên ô, tooltip cảnh báo, hoặc từ chối nhập liệu. Tuy mức độ thấp nhưng gây khó chịu cho người dùng cuối.
Các dạng lỗi Data Validation thường gặp
Dạng 1: Input không nằm trong danh sách dropdown
// Dropdown cho phép: "Pending", "Processing", "Completed" // Nhập: "pending" (viết thường) -> lỗi validation (case-sensitive) // Fix 1: Bỏ chọn "Reject input" trong validation settings // Data > Data validation > On invalid data > Show warning // Fix 2: Tạo dropdown không phân biệt HOA/thường // Dùng custom formula: =REGEXMATCH(UPPER(A1), "^(PENDING|PROCESSING|COMPLETED)$")
Dạng 2: Số vượt ngoài khoảng cho phép
// Validation: Number between 1 and 100 // Nhập: 150 -> rejected // Fix: Mở rộng khoảng nếu cần // Hoặc dùng custom formula linh hoạt hơn: // =AND(ISNUMBER(A1), A1 >= 1, A1 <= 1000)
Dạng 3: Ngày tháng sai format
// Validation: Date is valid date // Nhập: "21-02-2026" nhưng sheet expect "2026-02-21" // Fix: Đặt format ngày cho cột trước khi set validation // Format > Number > Date // Hoặc dùng custom formula: // =AND(ISNUMBER(A1), A1 > DATE(2020,1,1), A1 < DATE(2030,12,31))
Dạng 4: Custom formula validation luôn trả FALSE
// Custom formula sai logic
// Ví dụ: Muốn validate email
=REGEXMATCH(A1, "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
// Lỗi phổ biến: Tham chiếu sai ô (dùng A1 cho tất cả thay vì ô tương đối)
// Fix: Đảm bảo custom formula tham chiếu đúng ô đầu tiên của vùng validation
// Nếu validate từ B2:B100, formula phải bắt đầu từ B2:
=REGEXMATCH(B2, "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}")
Cách xử lý Data Validation lỗi hàng loạt
Khi cả cột bị lỗi validation:
- Bước 1: Chọn toàn bộ vùng bị lỗi
- Bước 2: Data > Data validation > Remove validation (xóa validation hiện tại)
- Bước 3: Kiểm tra lại dữ liệu trong cột, sửa các giá trị không hợp lệ
- Bước 4: Áp dụng lại validation rule mới
- Bước 5: Đặt "On invalid data" thành "Show warning" thay vì "Reject input" để không chặn người dùng
Bảng Tổng Hợp: Hàm Fix Nhanh Cho Mọi Lỗi
Dưới đây là bảng tổng hợp các hàm quan trọng nhất để xử lý và phòng tránh lỗi trong Google Sheets. Hãy bookmark bảng này để tra cứu nhanh khi gặp lỗi.
| Hàm | Mô tả | Fix lỗi nào | Ví dụ |
|---|---|---|---|
| IFERROR | Trả về giá trị thay thế nếu có BẤT KỲ lỗi nào | Tất cả (#REF, #N/A, #VALUE, #DIV/0, #NUM) | =IFERROR(A1/B1, 0) |
| IFNA | Trả về giá trị thay thế CHỈ khi lỗi #N/A | #N/A | =IFNA(VLOOKUP(...), "N/A") |
| ISERROR | Trả về TRUE/FALSE nếu ô có lỗi | Tất cả (kiểm tra) | =IF(ISERROR(A1), "Lỗi", A1) |
| ISNA | Trả về TRUE/FALSE nếu ô là #N/A | #N/A (kiểm tra) | =IF(ISNA(A1), "Missing", A1) |
| ISBLANK | Kiểm tra ô có rỗng không | #DIV/0! (phòng tránh) | =IF(ISBLANK(B1), 0, A1/B1) |
| ISNUMBER | Kiểm tra ô có phải số không | #VALUE!, #N/A (phòng tránh) | =IF(ISNUMBER(A1), A1*2, 0) |
| ISTEXT | Kiểm tra ô có phải text không | #VALUE!, #N/A (phòng tránh) | =IF(ISTEXT(A1), A1, TEXT(A1,"0")) |
| TRIM | Loại bỏ khoảng trắng thừa | #N/A (khoảng trắng ẩn) | =VLOOKUP(TRIM(A1), ...) |
| CLEAN | Loại bỏ ký tự không in được | #VALUE!, #N/A (ký tự ẩn) | =VALUE(CLEAN(A1)) |
| VALUE | Chuyển text thành số | #VALUE!, #N/A (kiểu dữ liệu) | =VALUE("123") -> 123 |
| TEXT | Chuyển số/ngày thành text | #VALUE! (kiểu dữ liệu) | =TEXT(123, "000") -> "123" |
Tips Debug Công Thức Chuyên Nghiệp
Ngoài việc hiểu từng lỗi, bạn cần nắm vững kỹ thuật debug để nhanh chóng tìm ra vấn đề trong những công thức phức tạp.
Tip 1: Evaluate Formula Step by Step (F9 Trick)
Đây là kỹ thuật debug mạnh nhất mà ít người biết. Bạn có thể đánh giá từng phần của công thức riêng lẻ.
Cách thực hiện:
- 1. Double-click vào ô chứa công thức (vào chế độ edit)
- 2. Bôi đen (select) một phần của công thức mà bạn muốn kiểm tra
- 3. Nhấn F9 - phần được chọn sẽ hiển thị kết quả thay vì công thức
- 4. Nhấn Esc để quay lại (KHÔNG nhấn Enter vì sẽ thay đổi công thức)
// Ví dụ: =IF(VLOOKUP(A1, B:C, 2, FALSE) > 100, "Cao", "Thấp") // Bước 1: Bôi đen VLOOKUP(A1, B:C, 2, FALSE) -> F9 -> thấy kết quả = 150 // Bước 2: Bôi đen 150 > 100 -> F9 -> thấy TRUE // => Biết chắc VLOOKUP trả về đúng, vấn đề (nếu có) ở chỗ khác // Nhấn Esc để không thay đổi công thức gốc!
Tip 2: Hiển Thị Tất Cả Công Thức
Thay vì click từng ô để xem công thức, bạn có thể hiện tất cả công thức cùng lúc.
Cách thực hiện:
- - Nhấn Ctrl + ' (phím backtick, bên trái phím 1) để toggle hiển thị công thức
- - Hoặc vào View > Show > Formulas
- - Tất cả ô sẽ hiện công thức thay vì kết quả
- - Nhấn lại Ctrl + ' để quay về hiển thị kết quả
Tip 3: Check Dependencies (Precedents & Dependents)
Kiểm tra xem ô đang phụ thuộc vào những ô nào (precedents) và ô nào phụ thuộc vào ô hiện tại (dependents).
Cách thực hiện:
- - Click vào ô chứa công thức, các ô được tham chiếu sẽ được highlight bằng khung màu
- - Dùng Ctrl + [ để nhảy đến ô precedent (ô mà công thức tham chiếu)
- - Double-click vào ô để thấy tất cả tham chiếu được tô màu
- - Nếu tham chiếu cross-sheet, tên sheet sẽ hiển thị trong công thức
Tip 4: Tách Công Thức Phức Tạp Thành Nhiều Bước
Khi công thức quá dài và phức tạp, hãy tách thành nhiều ô trung gian (helper columns) để dễ debug.
// Công thức phức tạp (khó debug):
=IF(IFERROR(VLOOKUP(TRIM(A1), IMPORTRANGE("id","Sheet1!A:D"), 3, FALSE), 0) > 1000, "VIP", "Normal")
// Tách thành helper columns:
// Cột B (Clean): =TRIM(A1)
// Cột C (Lookup): =IFERROR(VLOOKUP(B1, DataRange, 3, FALSE), 0)
// Cột D (Result): =IF(C1 > 1000, "VIP", "Normal")
// Giờ bạn dễ dàng thấy lỗi ở bước nào!
// Sau khi xong, có thể gộp lại hoặc giữ helper columns
Tip 5: Dùng Hàm ERROR.TYPE Để Xác Định Loại Lỗi
// ERROR.TYPE trả về số tương ứng với loại lỗi: // 1 = #NULL! // 2 = #DIV/0! // 3 = #VALUE! // 4 = #REF! // 5 = #NAME? // 6 = #NUM! // 7 = #N/A // 8 = #ERROR! // Ví dụ: Xử lý từng loại lỗi khác nhau =SWITCH(ERROR.TYPE(A1), 2, "Chia cho 0 - kiểm tra mẫu số", 3, "Sai kiểu dữ liệu - kiểm tra format", 4, "Tham chiếu hỏng - kiểm tra range", 7, "Không tìm thấy - kiểm tra giá trị tra cứu", "Lỗi khác: " & A1 )
Câu Hỏi Thường Gặp (FAQ)
Hỏi: Có cách nào ẩn tất cả lỗi trên sheet không?
Có, bạn có thể bọc toàn bộ công thức trong IFERROR. Tuy nhiên, không khuyến khích làm điều này vì bạn sẽ không biết khi nào dữ liệu có vấn đề. Thay vào đó, hãy dùng IFERROR với thông báo cụ thể: =IFERROR(cong_thuc, "Lỗi: kiểm tra dữ liệu nguồn") để vừa ẩn lỗi vừa biết có vấn đề xảy ra.
Hỏi: IFERROR và IFNA khác nhau thế nào? Khi nào dùng cái nào?
IFERROR bắt tất cả các loại lỗi (#REF, #N/A, #VALUE, #DIV/0, #NUM, #NAME, #ERROR). IFNA chỉ bắt lỗi #N/A. Nên dùng IFNA khi dùng VLOOKUP/INDEX MATCH vì bạn muốn biết nếu xảy ra lỗi khác (ví dụ #REF! do xóa cột). Dùng IFERROR khi bạn muốn bắt mọi lỗi có thể xảy ra.
Hỏi: File Google Sheets bị chậm, không tải được. Phải làm sao?
Thử các bước sau theo thứ tự: (1) Tắt tất cả tab trình duyệt khác, (2) Xóa cache trình duyệt, (3) Mở file ở chế độ Incognito, (4) Kiểm tra có bao nhiêu IMPORTRANGE/IMAGE đang chạy, (5) Copy sheet sang file mới (Paste Special > Values Only cho data tĩnh), (6) Nếu file trên 50,000 dòng, cân nhắc archive dữ liệu cũ hoặc chuyển sang phần mềm chuyên dụng.
Hỏi: Tại sao công thức copy từ internet bị lỗi #ERROR! trên máy tôi?
Nguyên nhân phổ biến nhất là khác locale. Đa số hướng dẫn trên internet dùng locale US (dấu phẩy phân cách tham số), nhưng nếu Google Sheets của bạn đặt locale Việt Nam, bạn cần đổi dấu phẩy (,) thành dấu chấm phẩy (;). Kiểm tra: File > Settings > Locale. Ngoài ra, smart quotes (dấu ngoặc kép cong) copy từ web cũng gây lỗi - hãy xóa và gõ lại bằng tay.
Hỏi: Có tool nào giúp debug công thức Google Sheets tự động không?
Google Sheets không có tool debug tích hợp như Excel (Evaluate Formula). Tuy nhiên bạn có thể: (1) Dùng F9 trick để evaluate từng phần công thức, (2) Dùng add-on "Formula Helper" hoặc "Power Tools" từ Google Workspace Marketplace, (3) Dùng helper columns để tách công thức phức tạp, (4) Dùng Apps Script để viết hàm debug tùy chỉnh ghi log từng bước tính toán.
Nắm Vững Lỗi Google Sheets = Tiết Kiệm Hàng Giờ Mỗi Tuần
Hiểu rõ 10 lỗi phổ biến này giúp bạn debug nhanh gấp 10 lần. Bookmark bài viết này để tra cứu khi cần. Nếu bạn thấy Google Sheets đã đạt giới hạn cho nhu cầu của mình, hãy khám phá các phần mềm chuyên dụng của SheetStore.
Tóm tắt nhanh - Cheat Sheet xử lý lỗi:
#REF! -> Undo ngay hoặc kiểm tra range bị xóa
#N/A -> TRIM + check data type + IFNA
#VALUE! -> VALUE()/TEXT() + CLEAN()
#DIV/0! -> IF(B=0, 0, A/B)
#NAME? -> Check chính tả + locale + ""
#NUM! -> Validate input (ABS, IF > 0)
#ERROR! -> Đếm ngoặc + check separator
Circular -> Tìm dependency chain, phá vòng
Chia sẻ bài viết:
Tuân Hoang
Đội ngũ SheetStore
Bạn thấy bài viết hữu ích?
Đăng ký nhận thông báo khi có bài viết mới.