Sửa lỗi "Circular dependency detected" trong Google Sheets

beginner📗 Google Sheets2026-03-23| Google Sheets (trình duyệt web, mọi hệ điều hành) — Google Workspace / tài khoản Google cá nhân

Error Message

Circular dependency detected. To resolve with iterative calculation, see File > Settings.
#google-sheets#circular-dependency#formula#iteration

Chuyện gì đang xảy ra

Bạn vừa chỉnh sửa một công thức, và Google Sheets ngay lập tức báo lỗi:

Circular dependency detected. To resolve with iterative calculation, see File > Settings.

Lỗi này có nghĩa là một trong các công thức của bạn đang tham chiếu ngược lại chính nó — trực tiếp, hoặc qua một chuỗi các ô khác. Lấy ví dụ đơn giản nhất: =A1+1 nằm ngay trong ô A1. Hoặc hình dung một chuỗi dài hơn: A1 tham chiếu đến B1, và B1 lại tham chiếu ngược về A1. Dù theo cách nào, Sheets cũng không thể tính ra giá trị mà không lặp vô tận.

Google Sheets mặc định chặn những trường hợp này — phần lớn chỉ là gõ nhầm vùng dữ liệu. Tổng lũy kế và bộ tính toán vay vốn là những ngoại lệ điển hình: chúng thực sự cần tính toán lặp, tức là Sheets chạy lại công thức một số lần cố định thay vì lặp mãi không dừng.

Bước 1 — Tìm vòng tham chiếu vòng

Trước khi thay đổi bất kỳ cài đặt nào, hãy xác định xem vòng lặp đó là cố ý hay do công thức bị sai. Bật tính toán lặp ngay lập tức là cách phổ biến để che giấu một lỗi logic thực sự.

Nhấp vào ô bị lỗi và theo dõi các tham chiếu trên thanh công thức. Với bảng tính phức tạp, hãy truy vết thủ công:

  • Nhấp vào ô đang hiển thị lỗi.
  • Đọc công thức trên thanh công thức.
  • Mở từng ô được tham chiếu và kiểm tra đang tham chiếu đến đâu.
  • Tiếp tục truy vết — bạn sẽ tìm ra vòng lặp chỉ sau vài bước.

Hai kiểu lỗi xuất hiện thường xuyên nhất:

-- Ô chứa công thức nằm trong chính vùng tính của nó
A1: =SUM(A1:A10)   ← A1 là một phần của A1:A10

-- Hai ô tham chiếu lẫn nhau
B2: =C2 * 1.1
C2: =B2 - 5        ← B2 → C2 → B2

Đã tìm ra nguyên nhân? Sửa vùng dữ liệu hoặc tham chiếu trực tiếp — không cần thay đổi bất kỳ cài đặt nào.

Bước 2 — Sửa tham chiếu vòng do nhầm lẫn

Chín trong mười trường hợp, vòng lặp chỉ là do vùng dữ liệu rộng hơn một hàng so với cần thiết. Dưới đây là các kiểu lỗi thường gặp:

Vùng dữ liệu bao gồm chính ô chứa công thức

-- Lỗi: A11 nằm trong vùng mà nó đang tính tổng
A11: =SUM(A1:A11)

-- Sửa: dừng vùng dữ liệu trước một hàng
A11: =SUM(A1:A10)

Vòng lặp gián tiếp qua nhiều ô

-- Lỗi
D2: =E2 + F2
F2: =D2 * 0.9      ← vòng lặp trở lại D2

-- Sửa: thay tham chiếu gây vòng lặp bằng một ô nhập liệu cố định
F2: =InputValue * 0.9   ← InputValue chứa một số bình thường, không phải công thức

INDIRECT hoặc named range tự tham chiếu ngược lại

Đang dùng INDIRECT()? Kiểm tra kỹ chuỗi bạn đang xây dựng. Trong một số điều kiện hàng hoặc cột nhất định, nó có thể âm thầm phân giải về chính ô đang chứa nó.

Bước 3 — Bật tính toán lặp (khi cố ý)

Đôi khi tham chiếu vòng là có chủ ý. Công thức lãi kép, tổng lũy kế tự cộng dồn, mô hình khấu hao vay vốn — những trường hợp này thực sự cần đọc kết quả trước đó của chính chúng. Đó chính là mục đích của tính toán lặp.

  • Vào File → Settings (hoặc File → Spreadsheet settings).
  • Nhấp vào tab Calculation.
  • Tích vào Enable iterative calculation.
  • Đặt Max iterations — giá trị mặc định 50 phù hợp với hầu hết trường hợp.
  • Đặt Threshold — mức thay đổi nhỏ đến đâu thì được coi là "hội tụ" (mặc định 0.05). Giá trị nhỏ hơn cho độ chính xác cao hơn.
  • Nhấp Save settings.

Sau khi bật, Sheets sẽ tính toán lại tối đa Max iterations lần — hoặc dừng sớm khi kết quả thay đổi ít hơn Threshold, tùy điều kiện nào đến trước.

Lưu ý quan trọng: cài đặt này áp dụng cho toàn bộ bảng tính, không chỉ một công thức. Chỉ bật khi bạn biết chính xác công thức nào cần nó — và tại sao.

Bước 4 — Xây dựng công thức lặp an toàn

Công thức lặp có thể vượt kiểm soát nếu không cẩn thận. Mỗi lần tải lại trang tính hoặc chỉnh sửa một ô không liên quan đều có thể kích hoạt thêm một lần tích lũy. Một ô điều khiển đơn giản sẽ ngăn điều này:

-- Tổng lũy kế chỉ cộng dồn khi có yêu cầu
-- A1 (ô kích hoạt): đặt TRUE khi muốn cộng, FALSE khi không
-- B1 (ô tích lũy):
=IF(A1=TRUE, B1 + C1, B1)

-- Chỉ cộng C1 vào B1 khi A1 là TRUE
-- Chuyển A1 về FALSE sau mỗi lần tích lũy

Dùng một ô kích hoạt riêng biệt nghĩa là công thức chỉ chạy khi bạn muốn. Không có lần cộng ngẫu nhiên nào mỗi khi ai đó nhấp vào trang tính hoặc một ô không liên quan tính toán lại.

Kiểm tra kết quả

Chạy kiểm tra nhanh trước khi kết thúc:

  • Ô phải hiển thị một con số, không phải thông báo lỗi.
  • Nhấp vào ô — thanh công thức phải hiển thị công thức gọn gàng, không có dấu cảnh báo.
  • Chỉnh sửa một ô không liên quan để kích hoạt tính toán lại. Ô đã sửa phải cập nhật đúng mà không xuất hiện lỗi trở lại.
  • Nếu tính toán lặp đang bật, hãy theo dõi xem kết quả có ổn định không — nó không được tiếp tục thay đổi mỗi lần nhấn F5 hoặc tương tác với trang tính.

Bài học rút ra

  • Vùng SUM là nguyên nhân số 1. Luôn kiểm tra vùng SUM hoặc AVERAGE của bạn kết thúc trước hàng chứa công thức.
  • Tính toán lặp không phải là giải pháp tạm thời. Bật nó lên mà không hiểu vòng lặp thường chỉ che giấu một lỗi logic thực sự và sẽ gây rắc rối về sau.
  • Cài đặt này áp dụng cho toàn bộ bảng tính, không phải cho từng phiên. Tất cả mọi người mở file đều dùng chung — kể cả cộng tác viên không biết nó đang bật.
  • Trong các bảng tính dùng chung, hãy để lại một chú thích hoặc một ô ghi chú riêng giải thích rằng tính toán lặp đang được bật có chủ ý. Đồng nghiệp tương lai của bạn sẽ cảm ơn bạn.

Related Error Notes