Lỗi
Bạn viết công thức FILTER, nhấn Enter, và Sheets trả về thông báo này:
FILTER has mismatched range sizes. Expected row count: 100, column count: 1. Actual row count: 50, column count: 1.
Các con số thay đổi tùy dữ liệu của bạn. Nhưng vấn đề vẫn như vậy: vùng bạn đang lọc và vùng điều kiện có kích thước khác nhau.
Nguyên nhân
FILTER(range, condition1, [condition2, ...]) có một yêu cầu nghiêm ngặt — mỗi mảng điều kiện phải có đúng cùng kích thước với vùng dữ liệu. Nếu dữ liệu của bạn là A2:C100 (99 hàng), mỗi điều kiện cũng phải bao gồm 99 hàng. Không có ngoại lệ.
Bốn tình huống thường gây ra lỗi này:
- Điều kiện tham chiếu đến một sheet khác hoặc vùng được đặt tên có ít hàng hơn.
- Bạn đã cố định vùng như
D2:D50nhưng dữ liệu chạy đến hàng 100. - Cột phụ dùng làm điều kiện được thêm sau và chỉ điền xuống một phần.
- Hai mảng được tính toán — chẳng hạn từ các lệnh
ARRAYFORMULAlồng nhau — trả về số lượng hàng khác nhau.
Cách khắc phục: Từng bước
Bước 1 — Xác nhận sự không khớp bằng ROWS()
Trước khi chỉnh sửa bất cứ điều gì, hãy xác minh thực sự có sự không khớp kích thước. Nhập hai công thức này vào các ô trống:
=ROWS(A2:A100) // vùng dữ liệu
=ROWS(D2:D50) // vùng điều kiện
Nếu chúng trả về các số khác nhau — chẳng hạn 99 và 49 — đó chính là nguyên nhân.
Bước 2 — Đặt cả hai vùng có cùng kích thước rõ ràng
Cách khắc phục trực tiếp: mở rộng vùng điều kiện để khớp với vùng dữ liệu.
Trước (bị lỗi):
=FILTER(A2:C100, D2:D50="Yes")
Sau (đã sửa):
=FILTER(A2:C100, D2:D100="Yes")
Cả hai vùng giờ bao gồm hàng 2–100. Đó là 99 hàng mỗi vùng. Kích thước khớp nhau, lỗi biến mất.
Bước 3 — Chuyển sang vùng mở (không cố định hàng cuối)
Cố định hàng cuối rất dễ gây lỗi. Dữ liệu tăng lên nhưng công thức không thay đổi — và lỗi quay lại. Vùng mở giải quyết vấn đề này vĩnh viễn:
=FILTER(A2:C, D2:D="Yes")
Bỏ số hàng và Sheets sẽ mở rộng cả hai vùng đến nơi dữ liệu kết thúc. A2:C và D2:D sẽ luôn có cùng độ dài, bất kể bạn thêm bao nhiêu hàng.
Bước 4 — Sửa điều kiện được xây dựng từ công thức
Đôi khi điều kiện của bạn không phải là tham chiếu ô trực tiếp — mà là một mảng được tính toán. Cả hai mảng vẫn phải trả về cùng số hàng.
Bị lỗi — các mảng trả về số hàng khác nhau:
=FILTER(A2:C, ARRAYFORMULA(LEN(B2:B50)>3))
Đã sửa — giữ các vùng nhất quán:
=FILTER(A2:C, ARRAYFORMULA(LEN(B2:B)>3))
Cách sửa vẫn là ý tưởng tương tự: dùng vùng mở ở phía điều kiện.
Bước 5 — Kết hợp nhiều điều kiện
Mỗi điều kiện trong FILTER nhiều điều kiện phải khớp với vùng dữ liệu. Thiếu một cái là lỗi xuất hiện.
=FILTER(A2:C, D2:D="Yes", E2:E>100, F2:F<>"")
Nếu E2:E chỉ bao gồm 80 hàng trong khi dữ liệu có 99 hàng, điều đó đủ để gây lỗi. Chạy =ROWS() trên từng điều kiện riêng lẻ để tìm ra cái nào bị sai.
Bước 6 — Tham chiếu từ sheet khác
Lấy điều kiện từ sheet khác là một trong những nguyên nhân khó phát hiện hơn. Sheet2 có thể có số hàng khác với sheet hiện tại của bạn — và bạn sẽ không nhận ra cho đến khi lỗi xuất hiện.
// Sai: Sheet2 chỉ có 50 hàng dữ liệu trạng thái
=FILTER(A2:C100, Sheet2!B2:B50="Active")
// Đã sửa: dùng vùng mở ở cả hai phía
=FILTER(A2:C, Sheet2!B2:B="Active")
Danh sách kiểm tra nhanh
- Chạy
=ROWS(vùng_dữ_liệu)và=ROWS(vùng_điều_kiện)— các số có khớp không? - Có cột phụ nào được dùng làm điều kiện không? Kiểm tra xem chúng đã được điền đến hàng dữ liệu cuối cùng chưa.
- Dùng vùng được đặt tên làm điều kiện? Xác minh kích thước thực của nó trong Dữ liệu → Vùng được đặt tên.
- Có vùng nào đang lấy từ sheet khác với số hàng khác không?
- Lồng
ARRAYFORMULA,MAP, hoặcREDUCEbên trong điều kiện? Kiểm tra công thức riêng lẻ trước để xác nhận kích thước đầu ra.
Phòng tránh
Một vài thói quen nhất quán giúp giảm tỷ lệ gặp lỗi này xuống gần bằng không:
- Mặc định dùng vùng mở (
A2:A, không phảiA2:A100) cho cả đối số dữ liệu lẫn điều kiện. - Khi thêm cột phụ làm điều kiện, hãy điền toàn bộ cột trước khi đưa vào
FILTER. - Kiểm tra điều kiện dựa trên
ARRAYFORMULAtrong một ô riêng trước. Xác nhận nó trả về số hàng bạn mong đợi trước khi dùng làm điều kiện. - Bất cứ khi nào bạn kết hợp các vùng từ sheet khác hoặc vùng được đặt tên, hãy chạy kiểm tra nhanh
=ROWS()cho cả hai phía trước khi hoàn thiện công thức.
Xác minh kết quả
Ba kiểm tra nhanh sau khi cập nhật công thức:
- Ô phải hiển thị kết quả đã lọc — không phải lỗi.
- Kiểm tra nhanh số lượng:
=ROWS(FILTER(A2:C, D2:D="Yes"))phải trả về một số hợp lý với dữ liệu của bạn. - Thêm một hàng mới ở cuối và xác nhận bộ lọc vẫn nhận ra hàng đó. Nếu có, vùng mở của bạn đang hoạt động đúng.

