Câu trả lời ngắn
=ArrayFormula(vlookup(ROW(1:10),{IF(LEN(A1:A10)>0,ROW(1:10),""),A1:A10},2))
Giải trình
Giả sử dữ liệu đầu vào trong Column A
bảng dưới đây và công thức trên nằm trong ô B1
.
Lưu ý: Để giúp đánh giá công thức dễ dàng hơn, Column A
(đầu vào) không lặp lại các giá trị nhưng nó sẽ hoạt động với bất kỳ loại giá trị nào (chữ, số, ký hiệu, lặp lại, chưa sắp xếp, v.v.)
| A B
=== + ======= =======
1 | a a
2 | a
3 | b b
4 | b
5 | b
6 | c c
7 | d d
8 | e e
9 | e
10 | f f
VLOOKUP
đã được chọn vì nó có thể được sử dụng để tìm các giá trị gần đúng và nó có thể trả về nhiều giá trị (mảng).
Vì các giá trị đầu vào có thể xuất hiện theo bất kỳ thứ tự nào, thay vì sử dụng các giá trị thực tế, số hàng được sử dụng cho các ô không trống và các ô trống đã gán một chuỗi trống ""
.
Nó được sử dụng LEN
thay ISBLANK
vì bởi vì các ô có công thức trả về chuỗi trả về chuỗi rỗng FALSE
và điều này có thể gây ra sự cố trong một số trường hợp phổ biến.
IF(LEN(A1:A10)>0,ROW(1:10),"")
LƯU Ý: Trong trường hợp bạn muốn lưu ba ký tự, tham số thứ hai ( ""
ký tự là dấu tách tham số ,
) có thể bị xóa. Khi phân tích phần này của công thức, các ô trống sẽ trở lại FALSE
.
Khi VLOOKUP
yêu cầu cột tra cứu là cột đầu tiên, thay vì một phạm vi, một mảng được thực hiện "bán thủ công" đã được sử dụng.
{IF(LEN(A1:A10)>0,ROW(1:10),""),A1:A10}
Cách tiếp cận trên giúp chúng tôi tiết kiệm tế bào và thời gian xử lý.
""
trong lệnh if (mặc định đối số bị bỏ trống).