hitava

Mẹo Google Sheets · 15 phút đọc

Hàm IMPORTRANGE trong Google Sheets: lấy dữ liệu từ file khác, gộp nhiều file chi nhánh và sửa lỗi #REF!

IMPORTRANGE lấy một vùng ô từ file Google Sheets khác về file đang mở: =IMPORTRANGE("link hoặc ID file"; "'Đơn hàng'!A1:D"). Lần đầu ô báo #REF!, bạn bấm "Cho phép truy cập" một lần là dữ liệu hiện ra và tự cập nhật khi file nguồn đổi. Bài này đi qua cú pháp, bước cấp quyền, cách lọc bằng QUERY và FILTER, cách gộp nhiều file chi nhánh vào một bảng (kể cả dấu \ và ; theo vùng Việt Nam), các lỗi #REF! hay gặp, giới hạn tốc độ và điều cần biết về bảo mật.

Đăng HiTaVaIMPORTRANGEQUERYGoogle SheetsCông thức
Ba file Doanh thu Quận 1, Quận 3, Thủ Đức có mũi tên vào File tổng hợp với công thức ghép ba IMPORTRANGE trong ngoặc nhọn và bảng 3 chi nhánh, tổng 9 đơn, 9.150.000

Hàm IMPORTRANGE là gì, dùng khi nào

Trong cùng một file, bạn lấy dữ liệu trang khác bằng 'Đơn hàng'!A2:D. Khi dữ liệu nằm ở file khác — mỗi chi nhánh một file, kế toán giữ file lương riêng, đội bán hàng có file riêng — thì cần IMPORTRANGE. Hàm này kéo một vùng ô từ file nguồn về file đích; file nguồn đổi số thì file đích đổi theo.

Đối số
Link hoặc ID file nguồn; "Tên trang!vùng ô"
Lần đầu
Bấm "Cho phép truy cập" một lần cho mỗi file nguồn
Giới hạn
10 MB dữ liệu nhận về mỗi yêu cầu
Cập nhật
Khi file nguồn đổi, và tự kiểm tra mỗi giờ khi file đang mở

Ví dụ trong bài: một cửa hàng có 3 chi nhánh Quận 1, Quận 3, Thủ Đức. Mỗi chi nhánh có một file riêng, trang Đơn hàng gồm A = Ngày, B = Mã đơn, C = Nhân viên, D = Doanh thu. Chủ cửa hàng muốn một file tổng hợp tự cập nhật mà không phải chép tay mỗi tối.

Cú pháp hàm IMPORTRANGE

Tên đối số theo trợ giúp tiếng Việt của Google.
=IMPORTRANGE(url_bảng_tính; chuỗi_dải_ô)
Đối sốNghĩaVí dụ
url_bảng_tínhLink của file nguồn, đặt trong dấu ngoặc kép hoặc trỏ tới ô chứa link. Chỉ dán phần ID (chuỗi giữa /d/ và /edit) cũng được"https://docs.google.com/spreadsheets/d/1AbC…/edit" hoặc B1
chuỗi_dải_ôTên trang, dấu !, rồi vùng ô, đặt trong ngoặc kép. Bỏ tên trang thì lấy trang đầu tiên của file"'Đơn hàng'!A1:D"

Cách gọn nhất là để link mỗi file ở một ô riêng, ví dụ B1 là link file Quận 1, rồi viết công thức trỏ tới ô đó. Đổi file nguồn chỉ cần dán link mới vào B1.

Gõ ở A3 trang tổng hợp. Tên trang có dấu cách nên bọc trong nháy đơn. A1:D lấy từ dòng tiêu đề tới hết trang, 4 cột.
=IMPORTRANGE(B1; "'Đơn hàng'!A1:D")

Thử lại: file Quận 1 có 3 đơn: 02/10/2026 · Q1-01 · Lan · 1.200.000; 05/10/2026 · Q1-02 · Minh · 850.000; 09/10/2026 · Q1-03 · Lan · 2.000.000. Sau khi cho phép truy cập, A3:D3 là dòng tiêu đề, A4:D6 là 3 đơn trên. Chi nhánh thêm đơn thứ 4 thì nó tự hiện ở dòng 7.

Thay vì A1:D, bạn có thể dùng tên của dải ô được đặt tên trong file nguồn, ví dụ "DonHang". Dải ô được đặt tên đi theo dữ liệu khi người ta đổi tên trang hay chèn cột, nên ít gãy hơn gõ tay "'Đơn hàng'!A1:D".

Lấy vừa đủ, đừng lấy cả trang

Viết "'Đơn hàng'!A:Z" khi chỉ cần 4 cột là kéo về cả nghìn ô trống, làm file chậm và dễ chạm giới hạn 10 MB. Chỉ lấy đúng các cột cần dùng.

Cấp quyền IMPORTRANGE: bấm "Cho phép truy cập"

Lần đầu file đích lấy dữ liệu từ một file nguồn mới, Google không trả dữ liệu ngay mà hỏi quyền. Sau vài giây ô công thức báo #REF!; di chuột hoặc bấm vào ô sẽ thấy dòng "Bạn cần phải kết nối các trang tính này" và nút Cho phép truy cập.

Ba bước: gõ =IMPORTRANGE(B1; "'Đơn hàng'!A1:D"), ô báo #REF! với hộp Bạn cần phải kết nối các trang tính này và nút Cho phép truy cập, rồi bảng 3 đơn Q1-01 Lan 1.200.000, Q1-02 Minh 850.000, Q1-03 Lan 2.000.000
Mỗi cặp file đích – file nguồn chỉ cần cho phép một lần.
  • Bạn phải có ít nhất quyền xem file nguồn. Không có quyền thì Google báo bạn không có quyền truy cập trang tính; mở link file nguồn, xin quyền và chờ chủ file chấp nhận.
  • Mỗi file nguồn cho phép một lần. File tổng hợp lấy từ 3 chi nhánh thì phải bấm cho phép 3 lần, mỗi file một lần. Lần sau thêm IMPORTRANGE khác từ cùng file đó thì không phải bấm nữa.
  • Quyền đi theo người bấm. Theo Google, quyền này còn hiệu lực cho tới khi người đã bấm cho phép bị gỡ khỏi file nguồn.

Ghép nhiều IMPORTRANGE mà không thấy nút cho phép

Khi ba IMPORTRANGE nằm chung một công thức {…}, chỉ cần một file chưa cho phép là cả công thức báo #REF!, và có lúc không hiện nút. Cách xử lý: gõ riêng từng =IMPORTRANGE(B1; "A1"), =IMPORTRANGE(B2; "A1")… vào ô trống, bấm cho phép từng cái, rồi xoá các ô đó. Công thức gộp sẽ chạy.

IMPORTRANGE kết hợp QUERY và FILTER

Thường bạn không cần cả bảng mà chỉ một phần: đơn trên 1 triệu, đơn của một nhân viên, tổng theo người. Bọc IMPORTRANGE trong QUERY. Vì dữ liệu lúc này là mảng chứ không phải dải ô thường, QUERY không hiểu cột A, B mà phải gọi theo vị trí Col1, Col2, Col3, Col4.

Số 1 ở cuối: dòng đầu tiên lấy về là tiêu đề.
=QUERY(IMPORTRANGE(B1; "'Đơn hàng'!A1:D"); "select Col2, Col3, Col4 where Col4 >= 1000000"; 1)

Thử lại: trong 3 đơn của Quận 1, chỉ Q1-01 (1.200.000) và Q1-03 (2.000.000) từ 1 triệu trở lên. Kết quả: dòng tiêu đề + 2 dòng: Q1-01 · Lan · 1.200.000 và Q1-03 · Lan · 2.000.000.

Cộng doanh thu theo nhân viên.
=QUERY(IMPORTRANGE(B1; "'Đơn hàng'!A1:D"); "select Col3, sum(Col4) where Col3 is not null group by Col3 label sum(Col4) 'Doanh thu'"; 1)

Thử lại: Lan = 1.200.000 + 2.000.000 = 3.200.000, Minh = 850.000. Viết WHERE, GROUP BY, lọc theo ngày trong QUERY có ở bài hàm QUERY trong Google Sheets.

Muốn dùng FILTER, đặt kết quả IMPORTRANGE vào một tên bằng LET để khỏi gọi hai lần, rồi lấy cột thứ 3 bằng INDEX(d; 0; 3):

A2:D bỏ dòng tiêu đề vì FILTER không cần.
=LET(d; IMPORTRANGE(B1; "'Đơn hàng'!A2:D"); FILTER(d; INDEX(d; 0; 3)="Lan"))

Thử lại: ra 2 dòng của Lan: Q1-01 và Q1-03.

SUMIFS, COUNTIF không nhận kết quả IMPORTRANGE

SUMIF, SUMIFS, COUNTIF, COUNTIFS chỉ nhận dải ô thật, đưa mảng IMPORTRANGE vào thì báo lỗi. Dùng QUERY như trên, hoặc =LET(d; IMPORTRANGE(B1; "'Đơn hàng'!A2:D"); SUM(FILTER(INDEX(d; 0; 4); INDEX(d; 0; 3)="Lan"))) ra 3.200.000. Còn nếu cần dùng SUMIFS nhiều lần, lấy dữ liệu về một trang riêng rồi viết SUMIFS, COUNTIFS trên trang đó.

Gộp nhiều file chi nhánh bằng IMPORTRANGE

Để xếp dữ liệu 3 chi nhánh chồng lên nhau thành một bảng, đặt các IMPORTRANGE trong ngoặc nhọn, cách nhau bằng dấu chấm phẩy. B1, B2, B3 là link 3 file.

Dải mở A2:D lấy cả các dòng trống cuối mỗi file; QUERY với where Col1 is not null bỏ chúng đi để các chi nhánh nằm liền nhau.
=QUERY({IMPORTRANGE(B1; "'Đơn hàng'!A2:D"); IMPORTRANGE(B2; "'Đơn hàng'!A2:D"); IMPORTRANGE(B3; "'Đơn hàng'!A2:D")}; "select * where Col1 is not null"; 0)

Thử lại: Quận 1 có 3 đơn, Quận 3 có 2 đơn (600.000 và 1.500.000), Thủ Đức có 4 đơn (900.000, 700.000, 1.100.000, 300.000). Kết quả là 9 dòng liền nhau, tổng cột thứ 4 là 4.050.000 + 2.100.000 + 3.000.000 = 9.150.000. Không có QUERY bọc ngoài thì giữa các chi nhánh là cả trăm dòng trống.

Bảng so sánh vùng Việt Nam và vùng Hoa Kỳ: đối số cách bằng ; và ,; xếp chồng xuống dưới đều dùng ;; ghép sang phải dùng \ và ,; số thập phân 0,9 và 0.9
Vùng Việt Nam ghép cột trong ngoặc nhọn bằng dấu \ chứ không phải dấu phẩy.

Vì sao là dấu \? Theo trợ giúp của Google, ở những vùng dùng dấu phẩy làm dấu thập phân, dấu phẩy ghép cột trong mảng được thay bằng dấu gạch chéo ngược. Vùng Việt Nam viết số là 1.234,5 nên thuộc nhóm này. Dấu ; để xếp xuống dòng dưới thì giống nhau ở mọi vùng. Kiểm vùng của file ở Tệp › Cài đặt.

Bảng gộp cần biết dòng nào của chi nhánh nào. Ghép thêm một cột chữ bên phải mỗi phần bằng dấu \ :

Mỗi phần thành 5 cột: 4 cột dữ liệu + cột Chi nhánh (Col5). Cách hoạt động của ARRAYFORMULA ở dòng này có ở bài hàm ARRAYFORMULA.
=QUERY({
LET(q; IMPORTRANGE(B1; "'Đơn hàng'!A2:D"); {q \ ARRAYFORMULA(IF(INDEX(q; 0; 1)=""; ""; "Quận 1"))});
LET(q; IMPORTRANGE(B2; "'Đơn hàng'!A2:D"); {q \ ARRAYFORMULA(IF(INDEX(q; 0; 1)=""; ""; "Quận 3"))});
LET(q; IMPORTRANGE(B3; "'Đơn hàng'!A2:D"); {q \ ARRAYFORMULA(IF(INDEX(q; 0; 1)=""; ""; "Thủ Đức"))})
}; "select * where Col1 is not null"; 0)

ARRAYFORMULA ở đây biến chữ "Quận 1" thành cả một cột dài bằng dữ liệu, dòng trống thì để trống — cách hoạt động có ở bài hàm ARRAYFORMULA trong Google Sheets. Đặt công thức trên ở trang Gộp, rồi làm báo cáo từ trang đó thay vì gọi IMPORTRANGE lại lần nữa:

Trang Gộp là dải ô thường nên gọi cột bằng chữ A, B, C.
=QUERY('Gộp'!A1:E; "select E, count(B), sum(D) where A is not null group by E label E 'Chi nhánh', count(B) 'Số đơn', sum(D) 'Doanh thu'"; 0)
Chi nhánhSố đơnDoanh thu
Quận 134.050.000
Quận 322.100.000
Thủ Đức43.000.000
Thử lại: kết quả của công thức trên với số liệu ví dụ, tổng 9 đơn, 9.150.000.

Các file phải cùng cấu trúc cột

Xếp chồng bằng dấu ; thì mọi phần phải có cùng số cột. Chi nhánh Thủ Đức tự thêm cột "Ghi chú" và bạn lấy A2:E của file đó trong khi hai file kia là A2:D, công thức báo #VALUE! vì mảng thiếu giá trị ở một số dòng. Giữ một file mẫu chung cho mọi chi nhánh và khoá dòng tiêu đề.

Lỗi #REF! trong IMPORTRANGE và các lỗi hay gặp

Dấu hiệuNguyên nhânCách sửa
#REF!, có nút Cho phép truy cậpLần đầu lấy từ file nguồn nàyBấm Cho phép truy cập
#REF!, báo không có quyền truy cậpBạn chưa có quyền xem file nguồnXin quyền chủ file nguồn
#REF! sau khi chi nhánh đổi tên trangChuỗi "'Đơn hàng'!A1:D" không còn khớpSửa tên trang, hoặc dùng dải ô được đặt tên
#REF!, báo sẽ ghi đè dữ liệuVùng kết quả bên dưới, bên phải có ô đã có chữXoá ô chặn, để trống vùng tràn
Công thức gộp {…} báo #REF!Một trong các file chưa được cho phépGõ riêng từng IMPORTRANGE để bấm cho phép
#VALUE! khi gộpCác file khác số cộtLấy cùng số cột ở mọi file
Báo lỗi đang tải mãiQuá nhiều hàm IMPORT trong các file của bạnGiảm số IMPORTRANGE, gộp về một trang
Báo lỗi kết quả quá lớnVượt 10 MB mỗi yêu cầuThu hẹp vùng ô, tóm tắt ở file nguồn trước
Báo không được tham chiếu ô có NOW, RANDĐối số trỏ tới ô dùng hàm thay đổi liên tụcDán giá trị thay cho công thức; TODAY thì được

Nếu IMPORTRANGE từng chạy rồi bỗng báo không lấy được dữ liệu, hỏi chủ file nguồn xem họ có bật tuỳ chọn tắt tải xuống, in và sao chép không. Theo Google, khi tuỳ chọn này bật, IMPORTRANGE mới không lấy được dữ liệu từ file đó; công thức đã có từ trước vẫn chạy.

Giới hạn và tốc độ của IMPORTRANGE

  • 10 MB mỗi yêu cầu. Dữ liệu được tải về máy bạn, nên mạng chậm thì file đích cũng chậm.
  • Cập nhật: file nguồn có thay đổi thì file đích đang mở tự làm mới (thanh tải màu xanh). Ngoài ra Google tự kiểm tra mỗi giờ khi file đang mở. Mở lại file không chắc làm mới ngay.
  • Chuỗi nhiều tầng thì chậm. File A lấy từ B, B lấy từ C: mỗi tầng phải chờ tầng trước tính xong. Hai file lấy vòng của nhau thì không ra kết quả.
  • Hạn mức tính theo người tạo file, cộng dồn mọi hàm IMPORT trong mọi file họ tạo. Công thức có đối số thay đổi liên tục dễ bị Google hạn chế.

Mẹo giữ file nhẹ: tóm tắt ngay trong file nguồn (một trang Tổng hợp nhỏ do chi nhánh tự tính), rồi chỉ IMPORTRANGE vùng tóm tắt đó; mỗi file nguồn chỉ gọi IMPORTRANGE một lần về một trang riêng, các báo cáo khác tham chiếu trang đó. Bài Google Sheets hay Excel có nói khi nào Google Sheets bắt đầu chậm vì nhiều IMPORTRANGE.

Nếu bạn gộp file chỉ vì mỗi cửa hàng có một file riêng, cách bền hơn là để mọi cửa hàng ghi vào cùng một file có cột Kho/Cửa hàng ngay từ đầu. Khi đó báo cáo theo từng cửa hàng chỉ là một bộ lọc, không có bước cấp quyền, không chờ đồng bộ.

Bảng tồn kho của mẫu Bán hàng 360 PRO: mã hàng son môi, các cột Tồn CH-NT, Tồn KHO-BT, Tồn XUONG, Tồn kho 4, Tồn kho 5, Tồn tổng, Đang chuyển, Giá trị tồn, Giá vốn bình quân, Bán 30/60/90 ngày; dòng TỔNG giá trị tồn 1.246.617.637
Tồn từng cửa hàng, kho, xưởng nằm cạnh nhau trong một file của mẫu Bán hàng 360 PRO.

IMPORTRANGE có an toàn không: ai thấy được dữ liệu

Đây là chỗ nhiều người không ngờ. Theo trợ giúp của Google, sau khi đã cho phép, mọi người có quyền chỉnh sửa file đích đều dùng được IMPORTRANGE để lấy bất kỳ phần nào của file nguồn, không chỉ vùng bạn đã chọn.

Ví dụ: file lương của kế toán có trang Bảng lương và trang Tổng quỹ lương. Bạn IMPORTRANGE trang Tổng quỹ lương sang file báo cáo rồi chia sẻ quyền sửa file báo cáo cho trưởng nhóm. Trưởng nhóm chỉ cần sửa chuỗi thành "'Bảng lương'!A:Z" là thấy lương từng người, dù chưa bao giờ được chia sẻ file lương.

  • Người chỉ có quyền xem file đích thấy được những gì IMPORTRANGE đang hiện, dù họ không có quyền vào file nguồn.
  • Khoá ô, khoá trang không che dữ liệu. Bảo vệ trang tính chỉ chặn sửa, không chặn xem hay chặn lấy dữ liệu — xem cách khoá ô công thức trong Google Sheets.
  • Dùng file trung gian. Chỉ đưa phần được phép chia sẻ (ví dụ tổng quỹ lương theo phòng) sang một file riêng, rồi IMPORTRANGE từ file trung gian đó. File gốc nhạy cảm không bao giờ được kết nối trực tiếp.
  • Thu hồi quyền: quyền IMPORTRANGE còn tới khi người đã bấm cho phép bị gỡ khỏi file nguồn. Người đó nghỉ việc thì gỡ họ khỏi file nguồn.

Với dữ liệu khách hàng của đội bán hàng, thay vì chia file theo từng người rồi gộp lại, mẫu Quản lý Lead & Bán hàng PRO có portal trên điện thoại: mỗi nhân viên một link riêng, chỉ thấy lead của mình, không cần quyền mở trang tính (phần này dùng Apps Script, chỉ chạy trên Google Sheets).

Đọc tiếp

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

IMPORTRANGE dùng link hay ID file?

Cả hai đều được. Link đầy đủ dễ kiểm tra hơn; ID là chuỗi giữa /d/ và /edit trong link. Nên để link ở một ô riêng rồi trỏ công thức tới ô đó.

Vì sao IMPORTRANGE báo #REF!?

Hay gặp nhất là chưa bấm Cho phép truy cập, bạn chưa có quyền xem file nguồn, tên trang trong chuỗi sai, hoặc vùng kết quả bị ô có dữ liệu chặn. Di chuột vào ô lỗi để xem Google báo gì.

IMPORTRANGE bao lâu cập nhật một lần?

File nguồn có thay đổi thì file đích đang mở tự làm mới; ngoài ra Google kiểm tra mỗi giờ khi file đang mở. Dữ liệu lớn hoặc chuỗi nhiều file lấy của nhau sẽ chậm hơn.

Gộp nhiều file bằng IMPORTRANGE dùng dấu phẩy hay chấm phẩy?

Vùng Việt Nam: đối số trong hàm cách bằng ;, xếp chồng các file xuống dưới trong ngoặc nhọn bằng ;, ghép sang phải bằng \. Vùng Hoa Kỳ ghép sang phải bằng dấu phẩy. Kiểm vùng ở Tệp › Cài đặt.

Người khác có xem được dữ liệu file nguồn qua IMPORTRANGE không?

Có. Người có quyền sửa file đích lấy được bất kỳ phần nào của file nguồn đã cho phép; người có quyền xem file đích thấy phần đang hiện. Dữ liệu nhạy cảm nên đi qua một file trung gian.

IMPORTRANGE có chạy trong Excel không?

Không. Tải file về .xlsx thì IMPORTRANGE không chạy trong Excel; Excel lấy dữ liệu file khác bằng liên kết ngoài hoặc Power Query.

Nguồn tham khảo

Mẫu làm sẵn cho việc này

Mẫu khác liên quan: Quản lý Lead & Bán hàng PRO.

Đọc tiếp

Xem thêm mẹo và video hướng dẫn trên kênh YouTube HiTaVa, hoặc đọc các bài khác trong chủ đề Mẹo Google Sheets.

Cần hỏi thêm?Zalo 0935077673 (Hải Vân)