Sửa lỗi Google Sheets bị kẹt "Loading..." — Dữ liệu không cập nhật theo thời gian thực giữa các Sheet

intermediate📗 Google Sheets2026-03-21| Google Sheets (trình duyệt web: Chrome, Firefox, Safari, Edge) — Google Workspace / tài khoản Google cá nhân

Error Message

Loading...
#google-sheets#đồng-bộ#làm-mới#hiệu-suất

TL;DR

Vòng xoay Loading... bất tận thường có nghĩa là một công thức — IMPORTRANGE, QUERY, hoặc ARRAYFORMULA — không thể tải hoặc làm mới dữ liệu từ sheet khác. Ba cách sửa nhanh nhất: cấp lại quyền cho IMPORTRANGE bằng cách nhấp vào ô và chọn Allow access, chuyển chế độ tính toán lại sang File → Settings → On change and every minute, hoặc tải cứng tab bằng Ctrl+Shift+R / Cmd+Shift+R.

Chuyện Gì Đang Xảy Ra

Google Sheets không có cơ chế đồng bộ đẩy tự động giữa các bảng tính. Tất cả đều hoạt động theo kiểu kéo dữ liệu — các công thức tự động lấy dữ liệu khi cần. Vì vậy khi bạn thấy Loading... đứng yên trên màn hình, công thức đang bị kẹt giữa chừng. Có sáu nguyên nhân phổ biến:

  • IMPORTRANGE chưa được cấp quyền — bảng tính nguồn chưa cho phép truy cập. Công thức cứ chờ mãi. Mãi mãi.
  • Chế độ tính toán lại đặt thành "On change only" — Sheets sẽ không tải lại dữ liệu ngoài trừ khi bạn chỉnh sửa gì đó trong sheet trước.
  • Tham chiếu vòng tròn — Sheet A tham chiếu Sheet B, Sheet B lại tham chiếu Sheet A. Vòng lặp đánh giá bị treo.
  • Vượt hạn mức — Google giới hạn IMPORTRANGE ở mức 50 tham chiếu chéo bảng tính mỗi spreadsheet. Vượt ngưỡng đó, các ô thừa sẽ bị kẹt.
  • Cache trình duyệt cũ — ứng dụng web Sheets tải trạng thái cache bị lỗi. Xảy ra thường xuyên hơn bạn nghĩ.
  • Sheet nguồn bị xóa hoặc quyền truy cập bị thu hồi — IMPORTRANGE mất kết nối mà không báo lỗi. Không có thông báo lỗi, chỉ là Loading....

Cách Sửa 1: Cấp Lại Quyền Truy Cập IMPORTRANGE

Bắt đầu từ đây — cách này giải quyết vấn đề khoảng 70% trường hợp. Nhấp vào ô đang hiển thị Loading... hoặc #REF!. Một hộp thoại sẽ xuất hiện yêu cầu bạn chọn Allow access. Không thấy hộp thoại? Làm theo các bước sau:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/SOURCE_SHEET_ID/edit", "Sheet1!A1:D100")
  • Xóa công thức khỏi ô.
  • Dán lại và nhấn Enter.
  • Nhấp vào ô lần nữa — lần này Allow access sẽ xuất hiện.
  • Nhấp vào đó. Dữ liệu sẽ tải trong vài giây.

Việc cấp quyền chỉ cần thực hiện một lần cho mỗi cặp nguồn-đích. Bạn không cần làm lại trừ khi quyền truy cập bị thu hồi.

Cách Sửa 2: Thay Đổi Cài Đặt Tính Toán Lại

Mặc định, Sheets chỉ tính toán lại khi bạn thực hiện chỉnh sửa. Điều đó có nghĩa là công thức IMPORTRANGE có thể bị cũ trong nhiều giờ nếu không ai động vào sheet. Chuyển sang chế độ tự động làm mới:

  • Mở bảng tính đích.
  • Vào File → Settings.
  • Trong tab Calculation, đổi Recalculation từ On change thành On change and every minute.
  • Nhấp Save settings.

Mỗi phút là tốc độ nhanh nhất mà Sheets hỗ trợ theo cách thông thường. Cần nhanh hơn? Xem Cách Sửa 5.

Cách Sửa 3: Tải Cứng Tab Trình Duyệt

Cache cũ có thể khiến Sheets hoạt động như thể công thức bị lỗi trong khi thực ra vẫn ổn. Tải lại thông thường (F5) không đủ — bạn cần bỏ qua hoàn toàn cache:

  • Windows/Linux: Ctrl+Shift+R
  • macOS: Cmd+Shift+R

Sheet tải đúng sau đó? Cache là nguyên nhân. Đồng thời, hãy tắt các tiện ích mở rộng trình duyệt — trình chặn quảng cáo và công cụ bảo mật thường chặn các yêu cầu Google Workspace và gây lỗi âm thầm.

Cách Sửa 4: Kiểm Tra Tham Chiếu Vòng Tròn

Tham chiếu vòng tròn rất khó phát hiện. Không giống Excel, Sheets không phải lúc nào cũng hiển thị lỗi rõ ràng — nó chỉ treo ở Loading.... Cách truy tìm:

  • Vào Tools → Check for errors (nếu có trong phiên bản của bạn) hoặc truy vết thủ công chuỗi công thức.
  • Tìm công thức nào trong Sheet A tham chiếu Sheet B, trong khi Sheet B lại tham chiếu Sheet A.

Phá vỡ vòng lặp bằng cách thêm một cột phụ với giá trị tĩnh. Hoặc tái cấu trúc luồng dữ liệu để nó chỉ di chuyển theo một chiều — nguồn cung cấp cho đích, không bao giờ ngược lại.

Cách Sửa 5: Thay IMPORTRANGE Bằng Apps Script Để Đồng Bộ Thời Gian Thực

IMPORTRANGE cập nhật tối đa mỗi phút một lần. Với các dashboard hoặc pipeline dữ liệu cần làm mới nhanh hơn, Apps Script với trigger theo thời gian là lựa chọn phù hợp hơn nhiều:

// Trong bảng tính đích → Extensions → Apps Script
function syncFromSource() {
  const sourceId = 'YOUR_SOURCE_SPREADSHEET_ID';
  const sourceSheet = SpreadsheetApp.openById(sourceId).getSheetByName('Sheet1');
  const destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Destination');

  const data = sourceSheet.getRange('A1:D100').getValues();
  destSheet.getRange('A1:D100').setValues(data);
}

Thiết lập trigger để chạy theo lịch:

  • Trong trình chỉnh sửa Apps Script, nhấp Triggers (biểu tượng đồng hồ ở thanh bên trái).
  • Thêm trigger → syncFromSource → Time-driven → Minutes timer → Every minute.
  • Lưu lại. Script chạy độc lập — không cần giữ tab trình duyệt mở.

Cách này cũng tránh được hạn mức 50 ô IMPORTRANGE và xử lý tập dữ liệu lớn (chẳng hạn 5.000+ hàng) đáng tin cậy hơn nhiều so với công thức thông thường.

Cách Sửa 6: Giữ Số Lượng IMPORTRANGE Dưới Giới Hạn

Google giới hạn IMPORTRANGE ở mức 50 tham chiếu chéo bảng tính mỗi spreadsheet. Vượt quá ngưỡng đó, các ô dư sẽ treo ở Loading... mà không có giải thích. Chạy script này để đếm số lượng bạn đang dùng:

function countImportRange() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = sheet.getSheets();
  let count = 0;
  allSheets.forEach(s => {
    const formulas = s.getDataRange().getFormulas().flat();
    count += formulas.filter(f => f.toUpperCase().includes('IMPORTRANGE')).length;
  });
  Logger.log('Total IMPORTRANGE cells: ' + count);
}

Vượt quá 50? Hãy hợp nhất lại. Dùng một IMPORTRANGE duy nhất để kéo một vùng rộng — chẳng hạn từ cột A đến Z của toàn bộ sheet nguồn — rồi dùng QUERY hoặc INDEX/MATCH để trích xuất đúng phần mỗi khu vực cần. Một lần nhập, nhiều nơi sử dụng.

Kiểm Tra Kết Quả Sau Khi Sửa

  • Các ô đang hiển thị Loading... giờ đã hiển thị dữ liệu thực.
  • Chỉnh sửa một giá trị trong sheet nguồn, chờ tối đa 60 giây — sheet đích tự động cập nhật.
  • Không còn ô nào hiển thị #REF!, #ERROR!, hoặc Loading... trong vùng bị ảnh hưởng.
  • Dùng Apps Script? Kiểm tra Extensions → Apps Script → Executions để xác nhận hàm đồng bộ chạy đúng lịch và không có lỗi.

Tóm Tắt Nhanh

  • IMPORTRANGE bị treo → nhấp vào ô → Allow access
  • Dữ liệu không tự động làm mới → File → Settings → Recalculation: every minute
  • Lỗi trình duyệt → Ctrl+Shift+R / Cmd+Shift+R (tải cứng)
  • Tham chiếu vòng tròn → truy vết và phá vỡ vòng lặp công thức
  • Vượt quá 50 ô IMPORTRANGE → hợp nhất bằng QUERY trên ít vùng hơn
  • Cần đồng bộ nhanh hơn 1 phút → Apps Script với trigger theo thời gian

Related Error Notes