Chào mọi người,
Dạo gần đây mình thấy trên diễn đàn có nhiều bài viết chia sẻ về cách tự động điền số thứ tự (STT) khi sử dụng hàm FILTER. Tuy nhiên, phần lớn các cách đều có một vài hạn chế nhất định, ví dụ như công thức hơi dài hoặc chưa thực sự tối ưu khi dữ liệu thay đổi liên tục.
Hôm nay, mình muốn chia sẻ một cách làm mới mà mình tình cờ phát hiện ra, hy vọng sẽ giúp ích cho anh em trong quá trình xử lý dữ liệu.
Ý tưởng chính:
- Sử dụng hàm
ROWđể lấy số thứ tự của dòng hiện tại. - Kết hợp với hàm
FILTERđể chỉ lấy các dòng thỏa mãn điều kiện lọc. - Sử dụng hàm
IFERRORđể xử lý trường hợp không có dữ liệu trả về.
Công thức đề xuất:
=IFERROR(ROW(A1)/ROW(A1),"")Sau đó, bạn chỉ cần kéo công thức này xuống. Khi kết hợp với hàm FILTER, STT sẽ tự động nhảy theo dữ liệu được lọc.
Ví dụ cụ thể:
Giả sử bạn có bảng dữ liệu từ A1:C10 và muốn lọc theo cột B với điều kiện là "Nam". Công thức sẽ trông như sau:
=FILTER(A1:C10, B1:B10="Nam")Để có STT tự động đi kèm, bạn có thể đặt công thức STT ở cột D, ví dụ tại D1:
=IFERROR(ROW(A1)/ROW(A1),"")Sau đó, bạn sẽ kết hợp cả hai trong một ô, ví dụ tại E1 để có kết quả cuối cùng (bao gồm cả STT):
=LET(filtered_data, FILTER(A1:C10, B1:B10="Nam"), IF(ROWS(filtered_data)=0, "", SEQUENCE(ROWS(filtered_data))))Hoặc một cách khác đơn giản hơn nếu bạn chỉ cần STT:
=SEQUENCE(ROWS(FILTER(A1:C10, B1:B10=