Vấn đề
Có thể bạn đã xây dựng một công thức trông rất ổn, nhưng Google Sheets liên tục báo lỗi NO_COLUMN: A. Điều này thường xảy ra nhất khi bạn kết hợp hàm QUERY với IMPORTRANGE hoặc dữ liệu nằm trong dấu ngoặc nhọn {}.
Thông báo lỗi khá trực diện: Error: Unable to parse query string... NO_COLUMN: A. Nó gây bối rối vì cột A rõ ràng tồn tại trong trang tính nguồn của bạn. Tuy nhiên, cách Google diễn giải dữ liệu sẽ thay đổi ngay khi nó đi qua một hàm hoặc một mảng.
Một công thức lỗi điển hình
Giả sử bạn đang lấy 500 hàng dữ liệu bán hàng từ một bảng theo dõi khách hàng tiềm năng bên ngoài:
=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1abc123", "Leads!A:C"), "SELECT A WHERE B = 'Đã đóng'")
Ngay cả khi phần IMPORTRANGE tự hoạt động hoàn hảo, hàm QUERY bao ngoài vẫn thất bại. Nó sẽ không nhận diện 'A' hoặc 'B' là các định danh cột hợp lệ.
Tại sao lỗi này xảy ra: Dải ô so với Mảng
Để khắc phục điều này, bạn cần hiểu cách công cụ QUERY xác định dữ liệu. Nó sử dụng hai "ngôn ngữ" khác nhau tùy thuộc vào nguồn dữ liệu.
- Ngữ cảnh Dải ô (Range): Nếu bạn tham chiếu trực tiếp một dải ô như
A1:C10, Google Sheets biết lưới vật lý của trang tính. Nó hiểu rằng 'A' là cột đầu tiên. - Ngữ cảnh Mảng (Array): Các hàm như
IMPORTRANGE,FILTER, hoặc dấu ngoặc nhọn{Sheet1!A:B}biến dữ liệu thành một Mảng. Ở trạng thái này, dữ liệu chỉ là một khối giá trị trôi nổi. Nó mất đi sự kết nối với các cột được đánh dấu bằng chữ cái của trang tính.
Công cụ QUERY không thể tìm thấy "Cột A" trong một mảng vì mảng đó không biết nó đến từ một trang tính nào. Nó chỉ biết rằng mình có cột thứ nhất, thứ hai và thứ ba.
Giải pháp: Chuyển sang cú pháp ColX
Bất cứ khi nào nguồn của hàm QUERY là một hàm hoặc một mảng, bạn phải thay thế các chữ cái cột (A, B, C) bằng các tham chiếu Col1, Col2, Col3.
Công thức đã sửa
Dưới đây là ví dụ lỗi trước đó sau khi đã được sửa:
=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1abc123", "Leads!A:C"), "SELECT Col1 WHERE Col2 = 'Đã đóng'")
Quy tắc nghiêm ngặt cho cú pháp ColX
Google rất khắt khe về cách bạn viết các tham chiếu này. Một lỗi đánh máy nhỏ cũng sẽ kích hoạt một lỗi mới.
- Phân biệt chữ hoa chữ thường: Bạn phải sử dụng
Col1. Viếtcol1hoặcCOL1sẽ dẫn đến lỗi cú pháp. - Chỉ số tương đối:
Col1tham chiếu đến cột đầu tiên trong dải ô bạn đã chọn. Nếu dải ô của bạn làC:E, thìCol1thực tế là cột C. - Không dùng dấu ngoặc đơn: Hãy coi
Col1như một từ khóa dành riêng. Đừng bao quanh nó bằng dấu ngoặc đơn trong chuỗi truy vấn của bạn.
Các tình huống phổ biến gây ra lỗi
1. Sử dụng IMPORTRANGE
Đây là nguyên nhân chính. IMPORTRANGE luôn xuất ra một mảng, vì vậy bạn không bao giờ có thể sử dụng các chữ cái cột với nó.
-- Lỗi
=QUERY(IMPORTRANGE("URL", "A:Z"), "SELECT A, C")
-- Hoạt động
=QUERY(IMPORTRANGE("URL", "A:Z"), "SELECT Col1, Col3")
2. Xếp chồng nhiều dải ô
Khi bạn xếp chồng dữ liệu từ hai trang tính bằng dấu ngoặc nhọn, bạn đang tạo ra một mảng ảo.
-- Lỗi
=QUERY({North_Sales!A:B; South_Sales!A:B}, "SELECT A WHERE B > 5000")
-- Hoạt động
=QUERY({North_Sales!A:B; South_Sales!A:B}, "SELECT Col1 WHERE Col2 > 5000")
Danh sách kiểm tra nhanh
Nếu công thức vẫn không hoạt động, hãy kiểm tra qua ba bước sau:
- Kiểm tra quyền truy cập: Nếu bạn thấy lỗi
#REF!, hãy di chuột qua ô đó. Có thể bạn cần nhấp vào "Cho phép truy cập" (Allow Access) để các trang tính có thể kết nối với nhau. - Đếm số cột: Nếu dải ô của bạn là
A:B(hai cột) nhưng truy vấn của bạn yêu cầuCol3, công thức sẽ bị lỗi. - Kiểm tra nguồn dữ liệu: Xóa phần
QUERY()và chỉ chạy riêng hàmIMPORTRANGE(). Nếu dữ liệu thô không hiển thị, vấn đề nằm ở URL nguồn hoặc dải ô, không phải ở cú pháp truy vấn.
Nguyên tắc cốt lõi
Chỉ sử dụng các chữ cái cột (A, B, C) cho các dải ô trực tiếp, đơn giản như A1:D100. Đối với mọi trường hợp khác—bao gồm các hàm, dấu ngoặc nhọn và nhập dữ liệu—hãy luôn sử dụng định dạng Col1, Col2. Điều này giúp công thức của bạn ổn định và ngăn lỗi NO_COLUMN xuất hiện khi nguồn dữ liệu của bạn thay đổi.

