Hướng dẫn

Cách Dùng Hàm IMPORTRANGE Trong Google Sheets Từ A-Z [2026]

Tuân HoangTuân Hoang
29 tháng 9, 2026
9 phút đọc
Ảnh minh họa bài viết: Cách Dùng Hàm IMPORTRANGE Trong Google Sheets Từ A-Z [2026]

IMPORTRANGE là hàm hay bị dùng sai nhất trong nhóm hàm kéo dữ liệu chéo file của Google Sheets. Không phải vì cú pháp khó — thực ra chỉ có 3 tham số — mà vì lỗi #REF! đầu tiên luôn xuất hiện và hầu hết người mới không biết đó là bước cấp quyền bắt buộc chứ không phải sai công thức. Bài này đi thẳng vào cách dùng đúng, các lỗi thường gặp và khi nào IMPORTRANGE không phải lựa chọn tốt.

Cú pháp và cách hoạt động thực tế của IMPORTRANGE

Công thức có dạng:

=IMPORTRANGE("URL_hoặc_ID_file_nguồn", "TenSheet!A1:E100")

Tham số đầu là URL đầy đủ của file nguồn (dán cả link từ thanh địa chỉ trình duyệt là được, không cần cắt ra ID) hoặc chỉ ID file — chuỗi ký tự nằm giữa /d/ và /edit trong URL. Tham số thứ hai là chuỗi chỉ định tên sheet và vùng ô, viết liền dấu chấm than, không có khoảng trắng thừa.

Ví dụ cụ thể: giả sử có file "Kho_Tong" chứa sheet "TonKho", muốn kéo cột A đến D từ dòng 2 đến 500 sang file báo cáo:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1aBcD.../edit", "TonKho!A2:D500")

Lần đầu chạy, ô sẽ hiện lỗi #REF! Resource at url not found hoặc dòng chữ yêu cầu cấp quyền truy cập. Đây không phải lỗi công thức — click vào ô, sẽ thấy nút "Cho phép truy cập" (Allow access), bấm một lần là xong, những công thức IMPORTRANGE khác trỏ tới cùng file nguồn sau đó chạy luôn không cần cấp lại.

Lỗi thường gặp và cách sửa từng lỗi

Phần lớn câu hỏi về IMPORTRANGE trên các nhóm Google Sheets xoay quanh 4-5 lỗi lặp đi lặp lại. Liệt kê theo đúng thông báo lỗi để dễ tra:

  • #REF! Resource at url not found: chưa cấp quyền truy cập (xem mục trên), hoặc tài khoản đang mở Sheets không có quyền xem file nguồn — kiểm tra lại bằng cách mở trực tiếp URL nguồn bằng đúng tài khoản đó.
  • #N/A hoặc dòng trống dù file nguồn có dữ liệu: sai tên sheet — tên sheet có dấu cách hoặc ký tự đặc biệt phải khớp chính xác từng chữ, kể cả hoa thường đôi khi gây lỗi trên một số phiên bản.
  • #REF! Range not found: vùng ô vượt quá kích thước thật của sheet nguồn (ví dụ trỏ tới cột Z nhưng sheet nguồn chỉ có tới cột J), hoặc sheet nguồn đã bị đổi tên/xoá sau khi công thức được tạo.
  • Dữ liệu bị cắt ở một dòng cố định: đây không phải lỗi mà là giới hạn — nếu vùng chỉ định là toàn cột kiểu A:D và sheet nguồn có hàng chục nghìn dòng, đôi khi Sheets trả kết quả chậm hoặc timeout; nên giới hạn theo số dòng thực tế thay vì kéo cả cột.
  • Công thức chạy được trên máy này nhưng người khác mở lên báo lỗi quyền: mỗi người dùng cần tự cấp quyền truy cập một lần cho tài khoản Google của họ, quyền cấp không dùng chung cho cả file.

Ví dụ xử lý lỗi tên sheet có dấu cách

Nếu sheet nguồn tên "Đơn Hàng T9" (có khoảng trắng), công thức phải giữ nguyên dấu cách trong chuỗi:

=IMPORTRANGE("URL_file", "Đơn Hàng T9!A1:F200")

Gõ nhầm thành "DonHangT9" hoặc thiếu dấu cách sẽ luôn trả lỗi #N/A dù URL và quyền truy cập đều đúng.

Kết hợp IMPORTRANGE với QUERY để lọc dữ liệu trước khi kéo về

Kéo nguyên vùng dữ liệu về rồi lọc bằng công thức khác trên sheet đích là cách làm phổ biến nhưng tốn tài nguyên nếu file nguồn có hàng chục nghìn dòng. Cách hiệu quả hơn là lồng QUERY quanh IMPORTRANGE để lọc ngay tại bước kéo dữ liệu.

Ví dụ: chỉ muốn lấy các đơn hàng có trạng thái "Đã giao" từ sheet "DonHang" của file nguồn, cột A là mã đơn, cột B là tên khách, cột C là trạng thái:

=QUERY(IMPORTRANGE("URL_file", "DonHang!A2:C1000"), "select Col1, Col2 where Col3 = 'Đã giao'", 0)

Lưu ý bên trong QUERY phải gọi cột theo Col1, Col2... chứ không dùng A, B, C như công thức thường, vì với IMPORTRANGE làm nguồn, QUERY coi kết quả trả về là một mảng độc lập không có tên cột gốc.

Cách kết hợp này cùng nhóm tư duy "lọc điều kiện trước khi lấy dữ liệu" với việc dùng XLOOKUP nhiều điều kiện khi cần tra cứu theo nhiều tiêu chí cùng lúc thay vì lọc cả bảng.

So sánh IMPORTRANGE với các hàm lấy dữ liệu chéo sheet khác

IMPORTRANGE không phải công cụ duy nhất để lấy dữ liệu từ nơi khác, và không phải lúc nào cũng là lựa chọn đúng. Bảng dưới so sánh theo tình huống sử dụng thực tế:

Tình huốngCông cụ phù hợpLý do
Lấy dữ liệu từ file Google Sheets khácIMPORTRANGEDuy nhất hỗ trợ kéo dữ liệu xuyên file, không cần mở file nguồn
Tra cứu 1 giá trị cụ thể trong cùng file hoặc sheet khác đã importXLOOKUPNhanh hơn, không kéo cả bảng, dễ đọc công thức
Đồng bộ 2 chiều, tự động cập nhật khi có sự kiện (thêm dòng, gửi email...)Apps ScriptIMPORTRANGE chỉ kéo 1 chiều và không kích hoạt được hành động
Lọc/tổng hợp dữ liệu sau khi đã kéo vềQUERY lồng IMPORTRANGEGiảm dữ liệu thừa, tránh sheet đích bị nặng

Điểm cần nói thẳng: IMPORTRANGE là công thức, nghĩa là nó tính toán lại mỗi khi file mở hoặc có thay đổi liên quan — với file nguồn lớn (chục nghìn dòng trở lên) hoặc nhiều công thức IMPORTRANGE cùng trỏ vào một file, Sheets sẽ chậm rõ rệt. Bài so sánh IMPORTRANGE và Apps Script đi sâu hơn vào ngưỡng nên chuyển sang script thay vì tiếp tục dùng công thức.

Dùng IMPORTRANGE để đồng bộ dữ liệu giữa các bộ phận

Tình huống hay gặp: một cửa hàng có file "Nhập kho" do bộ phận kho quản lý, và file "Báo cáo bán hàng" do bộ phận kinh doanh dùng, cần đối chiếu tồn kho ngay trên file báo cáo mà không cấp quyền chỉnh sửa file kho cho bên kinh doanh.

Giả sử thử hình dung một người quản lý tên Tuấn phụ trách file báo cáo, muốn hiển thị tồn kho hiện tại của từng mã hàng bên cạnh doanh số bán trong ngày. Cách làm:

  1. Trong file "Báo cáo bán hàng", tạo một sheet ẩn tên "Data_TonKho" chỉ dùng để chứa dữ liệu kéo về, không sửa tay vào sheet này.
  2. Tại ô A1 của sheet đó, nhập: =IMPORTRANGE("URL_file_Nhap_kho", "TonKho!A1:C500")
  3. Cấp quyền truy cập lần đầu như hướng dẫn ở phần lỗi #REF!.
  4. Trên sheet báo cáo chính, dùng XLOOKUP tra cứu tồn kho theo mã hàng từ sheet "Data_TonKho" thay vì tham chiếu trực tiếp IMPORTRANGE nhiều lần — cách này tương tự kỹ thuật mô tả trong bài dùng XLOOKUP lấy dữ liệu từ sheet khác.

Cách tách sheet trung gian này giúp chỉ có một công thức IMPORTRANGE duy nhất trong toàn file, giảm tải tính toán so với việc rải IMPORTRANGE ở nhiều ô khác nhau cùng trỏ về một nguồn.

Giới hạn thật của IMPORTRANGE cần biết trước khi dùng cho quy mô lớn

IMPORTRANGE không có giới hạn số dòng cố định được công bố chính thức, nhưng thực tế sẽ chậm hoặc treo khi vùng dữ liệu lớn kết hợp với nhiều công thức khác trong cùng file (VLOOKUP/XLOOKUP/QUERY xử lý tiếp trên dữ liệu vừa kéo về). Vài giới hạn thực tế cần lưu ý:

  • IMPORTRANGE không đồng bộ theo thời gian thực tuyệt đối — có độ trễ vài giây đến vài phút tùy tải hệ thống của Google, không dùng cho các tình huống cần dữ liệu tức thời như xác nhận thanh toán.
  • Không kéo được định dạng (màu nền, viền, font) — chỉ kéo giá trị và công thức tính ra giá trị, không kéo công thức gốc.
  • Không hoạt động khi file nguồn bị xoá hoặc đổi quyền chia sẻ — công thức sẽ báo lỗi ngay lập tức, không có cơ chế dự phòng.
  • Không nên dùng để đồng bộ 2 chiều — nếu cần cả 2 file cùng cập nhật qua lại lẫn nhau, phải dùng Apps Script với trigger, IMPORTRANGE chỉ kéo một chiều từ nguồn sang đích.

Với các phép tính điều kiện phức tạp sau khi đã kéo dữ liệu về bằng IMPORTRANGE — ví dụ phân loại tồn kho theo nhiều mức cảnh báo — có thể tham khảo cách lồng điều kiện trong bài IF lồng nhau xử lý điều kiện để tránh công thức QUERY trở nên quá dài khó bảo trì.

Khi nào nên cân nhắc giải pháp khác thay vì IMPORTRANGE

Với nhu cầu quản lý bán hàng cần đồng bộ tồn kho, đơn hàng, công nợ giữa nhiều bộ phận theo thời gian thực và có phân quyền rõ ràng, việc ghép nhiều IMPORTRANGE chồng chéo giữa các file thường trở thành gánh nặng bảo trì — mỗi lần đổi cấu trúc sheet nguồn là phải rà lại toàn bộ công thức phụ thuộc. Trường hợp này, Phần Mềm Quản Lý Bán Hàng Bằng Google Sheets xử lý đồng bộ dữ liệu nội bộ trong cùng một hệ thống thay vì phải nối nhiều file rời rạc bằng IMPORTRANGE.

Ngược lại, nếu chỉ cần kéo báo cáo tổng hợp một chiều từ vài file rời rạc để xem nhanh, IMPORTRANGE vẫn là cách nhẹ nhàng nhất — không cần cài đặt gì thêm, chỉ cần nhớ cấp quyền đúng lần đầu và tránh kéo nguyên cột không giới hạn dòng.

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

Lỗi #REF! Resource at url not found khi mới dùng IMPORTRANGE là do đâu?

Đây không phải lỗi công thức mà là bước cấp quyền bắt buộc. Click vào ô sẽ thấy nút "Cho phép truy cập", bấm một lần là xong. Nếu vẫn lỗi, kiểm tra tài khoản đang mở Sheets có quyền xem file nguồn không bằng cách mở trực tiếp URL nguồn bằng đúng tài khoản đó.

Vì sao công thức IMPORTRANGE chạy được trên máy mình nhưng người khác mở lên lại báo lỗi?

Vì quyền truy cập cấp cho IMPORTRANGE không dùng chung cho cả file — mỗi người dùng phải tự cấp quyền truy cập một lần cho tài khoản Google riêng của họ khi mở file có công thức đó lần đầu.

Tại sao IMPORTRANGE báo #N/A dù URL và quyền truy cập đều đúng?

Thường do sai tên sheet trong tham số thứ hai — tên sheet có dấu cách hoặc ký tự đặc biệt phải khớp chính xác từng chữ. Ví dụ sheet tên "Đơn Hàng T9" phải giữ nguyên dấu cách, gõ thành "DonHangT9" hoặc thiếu dấu cách sẽ luôn trả lỗi #N/A.

Trong QUERY lồng IMPORTRANGE, vì sao phải gọi cột là Col1, Col2 thay vì A, B, C?

Vì khi dùng IMPORTRANGE làm nguồn, QUERY coi kết quả trả về là một mảng độc lập không có tên cột gốc, nên phải gọi theo Col1, Col2... Ví dụ lọc đơn hàng "Đã giao": select Col1, Col2 where Col3 = 'Đã giao'.

Bạn muốn áp dụng ngay mà không phải tự xây từ đầu?

Khám phá các mẫu Google Sheets và phần mềm quản lý dựng sẵn cho doanh nghiệp Việt tại SheetStore Marketplace.

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

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.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận