Chuyện gì đang xảy ra
Bạn đã thêm công thức IMPORTRANGE để kéo dữ liệu từ một bảng tính khác, nhưng thay vì dữ liệu, bạn thấy:
Error: Result too large
Google Sheets giới hạn một bảng tính tối đa 10 triệu ô. IMPORTRANGE có giới hạn riêng của nó và thường chạm ngưỡng trước đó — thường khoảng 1–2 triệu ô, hoặc khi mảng trả về quá rộng hay quá dài so với sheet đích.
Một số nguyên nhân phổ biến gây ra lỗi này:
- Import toàn bộ sheet với hàng trăm cột và hàng nghìn hàng (ví dụ:
Sheet1!A:ZZ) - Bảng tính nguồn đã tăng trưởng đáng kể kể từ khi bạn thiết lập công thức lần đầu
- Lồng IMPORTRANGE bên trong QUERY hoặc FILTER mà không giới hạn số hàng/cột
- Nhiều lệnh IMPORTRANGE trong một sheet cộng lại vượt quá giới hạn
Quy trình gỡ lỗi
Bước 1: Kiểm tra vùng dữ liệu của bạn có bao nhiêu ô
Mở bảng tính nguồn và đếm xem bạn đang thực sự import bao nhiêu. Nếu bạn đang dùng vùng mở như A:Z, hãy nhân số cột với số hàng.
=IMPORTRANGE("spreadsheet_url", "Sheet1!A:Z")
Một nguồn có 50.000 hàng và 26 cột cho bạn 1,3 triệu ô. Như vậy đã gần chạm giới hạn rồi.
Bước 2: Kiểm tra dữ liệu hiện có trong sheet đích
Sheet đích có thể đã gần chạm ngưỡng 10 triệu ô trước khi IMPORTRANGE thêm bất cứ thứ gì. Một sheet với 10.000 hàng × 1.000 cột đã đạt 10 triệu — không còn chỗ trống nữa. Kiểm tra số hàng và cột theo cách thủ công, hoặc qua Tiện ích mở rộng → Apps Script.
Bước 3: Thử nghiệm với vùng nhỏ hơn
Thu hẹp phạm vi import xuống một phần nhỏ để xác nhận IMPORTRANGE hoạt động bình thường:
=IMPORTRANGE("spreadsheet_url", "Sheet1!A1:D100")
Dữ liệu trả về được? Vấn đề là kích thước vùng dữ liệu — không phải quyền truy cập hay URL sai.
Giải pháp
Giải pháp 1: Giới hạn vùng một cách rõ ràng (cách nhanh nhất)
Thay thế các tham chiếu cột không giới hạn bằng vùng có ranh giới cụ thể. Đừng kéo tất cả mọi thứ:
// Trước — kéo mọi hàng trong các cột A đến Z
=IMPORTRANGE("spreadsheet_url", "Sheet1!A:Z")
// Sau — chỉ kéo hàng 1–5000, cột A–F
=IMPORTRANGE("spreadsheet_url", "Sheet1!A1:F5000")
Đặt giới hạn hàng và cột khớp với dữ liệu thực tế trong nguồn — không phải những gì nó có thể chứa trong tương lai.
Giải pháp 2: Dùng QUERY để lọc bên trong IMPORTRANGE
Bọc IMPORTRANGE bằng QUERY để chỉ kéo các cột và hàng bạn cần. Một công thức xử lý cả lọc dữ liệu lẫn giới hạn hàng.
// Chỉ import cột 1, 2 và 5 khi cột 3 không trống
=QUERY(
IMPORTRANGE("spreadsheet_url", "Sheet1!A:E"),
"SELECT Col1, Col2, Col5 WHERE Col3 <> '' LIMIT 2000"
)
Ba mệnh đề QUERY đảm nhận phần nặng nhọc:
SELECT Col1, Col2— bỏ qua các cột không cần thiếtWHERE Col1 <> ''— bỏ qua các hàng trốngLIMIT 1000— giới hạn cứng số hàng trả về
Giải pháp 3: Dùng FILTER để giảm số hàng trước khi import
Chỉ cần các hàng thỏa điều kiện nào đó? FILTER có thể cắt giảm kết quả đáng kể:
// Chỉ import các hàng có cột C bằng "Active"
=FILTER(
IMPORTRANGE("spreadsheet_url", "Sheet1!A1:F5000"),
IMPORTRANGE("spreadsheet_url", "Sheet1!C1:C5000") = "Active"
)
Lưu ý: mỗi lệnh IMPORTRANGE được tính riêng vào hạn mức của bạn. Nếu hiệu suất giảm sút, hãy chuyển sang dùng QUERY — một lệnh xử lý tất cả.
Giải pháp 4: Chia nhỏ import ra nhiều sheet
Khi bạn thực sự cần toàn bộ dữ liệu, hãy chia theo nhóm cột. Tạo hai sheet trong file đích của bạn:
// Sheet: Import_Part1
=IMPORTRANGE("spreadsheet_url", "Sheet1!A:M")
// Sheet: Import_Part2
=IMPORTRANGE("spreadsheet_url", "Sheet1!N:Z")
Sau đó tham chiếu trực tiếp các sheet đó — Import_Part1!A:M — trong sheet phân tích của bạn, thay vì gọi IMPORTRANGE lại một lần nữa.
Giải pháp 5: Lọc trước tại bảng tính nguồn
Nếu bạn sở hữu file nguồn, hãy thực hiện lọc ở đó. Thêm một sheet "Export" chuyên dụng và đặt công thức QUERY vào đó:
// Trong bảng tính NGUỒN — sheet có tên "Export"
=QUERY(RawData!A:Z, "SELECT A, B, C, D WHERE A <> '' LIMIT 3000")
// Trong bảng tính ĐÍCH của bạn:
=IMPORTRANGE("source_spreadsheet_url", "Export!A:D")
File nguồn thực hiện phần xử lý. File đích của bạn chỉ import một kết quả nhỏ đã được lọc sẵn thay vì toàn bộ dữ liệu thô.
Các bước kiểm tra
- Áp dụng cách sửa của bạn — vùng có giới hạn, QUERY, hoặc FILTER.
- Chờ 10–20 giây. IMPORTRANGE có độ trễ mạng; hãy đợi để nó tính toán lại.
- Ô sẽ hiển thị vòng tròn tải, sau đó hiển thị dữ liệu (không còn lỗi nữa).
- Xác nhận số hàng:
=ROWS(IMPORTRANGE(...))— kiểm tra xem có khớp với kỳ vọng không. - Kiểm tra tổng số ô trong sheet đích:
số hàng × số cộtphải ở mức thấp hơn 10 triệu nhiều.
Vẫn thấy lỗi sau khi đã giới hạn vùng? Hãy tạo một bảng tính mới và thử nghiệm IMPORTRANGE ở đó. Nếu nó hoạt động trong file mới, sheet đích của bạn có thể đang gặp vấn đề về hạn mức.
Bài học rút ra
- Vùng cột không giới hạn là cái bẫy.
Sheet1!A:Ztrông có vẻ vô hại nhưng kéo mọi hàng mà sheet sẽ từng có — kể cả những hàng bạn chưa thêm vào. - QUERY là cách sửa sạch nhất về lâu dài. Nó lọc cả hàng lẫn cột trước khi kết quả đổ vào sheet của bạn. Không lãng phí ô, không bị vỡ bất ngờ khi nguồn tăng trưởng.
- Sự tăng trưởng của sheet nguồn sẽ phá vỡ các công thức đang hoạt động tốt. Một công thức xử lý ổn với 500 hàng sẽ thất bại khi lên đến 50.000 hàng. Hãy thêm giới hạn hàng cứng —
LIMIT 5000hoặc một số hàng cố định — để phát hiện sự tăng trưởng sớm. - Tránh dùng lặp lại IMPORTRANGE cho cùng một vùng. Bên trong FILTER, mỗi lệnh gọi được tính riêng vào hạn mức của bạn. Hãy gộp lại bằng QUERY để chỉ thực hiện một lần gọi duy nhất.

