INDEX
INDEX(vùng, số_dòng, [số_cột])INDEX(danh_sách_vùng, số_dòng, [số_cột], [vùng_thứ_mấy])Trả về ô nằm ở dòng thứ mấy, cột thứ mấy trong một vùng. Tự nó ít khi dùng một mình — ghép với MATCH thành cặp dò tìm linh hoạt hơn VLOOKUP vì không phụ thuộc số thứ tự cột.
Các đối số
| Đối số | Bắt buộc? | Ý nghĩa |
|---|---|---|
| vùng | Bắt buộc | Vùng dữ liệu để lấy ô ra. |
| số_dòng | Bắt buộc | Đếm từ dòng đầu của VÙNG. Để 0 thì trả về nguyên cả cột — dùng khi cần đưa cả cột cho hàm khác. |
| số_cột | Tuỳ chọn | Đếm từ cột đầu của vùng. Vùng chỉ có một cột thì bỏ qua đối số này. |
| vùng_thứ_mấy | Tuỳ chọn | Chỉ dùng ở dạng thứ hai, khi đối số đầu là nhiều vùng đặt trong ngoặc đơn. |
Ví dụ
=INDEX($C$2:$C$500, MATCH(B2, $A$2:$A$500, 0))Cặp INDEX + MATCH thay VLOOKUP: chèn cột vào giữa cũng không sai
Kết quả: 850.000
=INDEX(dòng_tiêu_đề, MATCH(MAX(dải), dải, 0))Trả về TÊN tháng cao nhất chứ không phải con số cao nhất
Kết quả: T7
=INDEX($B$2:$E$500, MATCH(mã, $A$2:$A$500, 0), MATCH(tên_cột, $B$1:$E$1, 0))Dò theo cả dòng lẫn cột, không cần cột phụ
Kết quả: 1.250
Lưu ý khi dùng
- INDEX trả về THAM CHIẾU tới ô chứ không chỉ là giá trị, nên ghép được với dấu hai chấm để dựng vùng động: INDEX(A:A,2):INDEX(A:A,100).
- Khác OFFSET và INDIRECT, INDEX KHÔNG phải hàm dễ bay nên không làm nặng file.
Bẫy hay dính
Số dòng đếm theo VÙNG chứ không theo sheet: vùng bắt đầu ở dòng 2 thì INDEX(...,1) là dòng 2 của sheet. Trỏ vùng lệch một dòng là cả cột kết quả lệch một dòng, mà nhìn thì vẫn đầy đủ dữ liệu.
Chọn cái nào
VLOOKUP hay INDEX + MATCH
INDEX+MATCH nhanh hơn trên bảng rất lớn và không phụ thuộc số thứ tự cột, nên chèn cột vào giữa bảng dò cũng không sai. VLOOKUP dễ đọc hơn cho người mới. Bảng 200.000 dòng mà kéo VLOOKUP là máy ì thấy rõ.
=INDEX($C:$C, MATCH(B2, $A:$A, 0))