1. Hàm INDEX
Trả về một giá trị hoặc một tham chiếu tới một giá trị của một bảng (hoặc một mảng).
Hàm INDEX() có hai dạng: dạng MẢNG và dạng THAM CHIẾU. Dạng mảng luôn luôn trả về giá trị hoặc mảng các giá trị; còn dạng tham chiếu luôn luôn trả về kết quả là một tham chiếu.
INDEX DẠNG MẢNG (Array Form)
Cú pháp: = INDEX(array, row_num, column_num)
array : Là một dãy ô hoặc là một hằng mảng.
Nếu array chỉ có một dòng hoặc một cột, thì row_num hay column_num tương ứng là tùy chọn.
Nếu array có nhiều hơn một dòng hoặc nhiều hơn một cột, và chỉ có hoặc là row_num hoặc là column_num được sử dụng, INDEX() sẽ trả về toàn bộ dòng hay cột của array
row_num : Dòng trong array để lấy giá trị trả về. Nếu bỏ qua row_num thì buộc phải có column_num.
column_num : Cột trong array để lấy giá trị trả về. Nếu bỏ qua column_num thì buộc phải có row_num.
Lưu ý:
· Nếu hai đối số column_num và row_num đều sử dụng, INDEX() sẽ trả về giá trị của ô là giao điểm của column_num và row_num.
· Nếu đặt row_num = 0, INDEX() sẽ trả về một mảng các giá trị là toàn bộ cột; và ngược lại, nếu đặt column_num = 0, INDEX() sẽ trả về một mảng các giá trị là toàn bộ dòng.
· Để kết quả trả về là các giá trị dưới dạng mảng, cần nhập INDEX() theo dạng công thức mảng, mảng ngang cho dòng và mảng đứng cho cột.
· column_num và row_num phải chỉ tới một ô trong mảng, nếu không, INDEX() sẽ báo lỗi #REF!
Ví dụ 1:
Ví dụ 2:
INDEX DẠNG THAM CHIẾU (Reference Form)
Cú pháp: = INDEX(reference, row_num, column_num, area_num)
reference : Là một tham chiếu tới một hoặc nhiều dãy ô.
Nếu đang nhập một dãy ô gồm nhiều phần rời rạc cho tham chiếu, cần đặt dãy đó trong cặp dấu ngoặc đơn.
Nếu mỗi vùng trong tham chiếu chỉ có một dòng hoặc một cột, đối số row_num hoặc column_num là tùy chọn, theo thứ tự này. Ví dụ, đối với tham chiếu chỉ gồm một dòng, dùng cú pháp: INDEX(reference, ,column_num)
row_num : Là chỉ số Dòng trong tham chiếu.
column_num : Là chỉ số Cột trong tham chiếu.
area_num : Chọn một dãy trong tham chiếu để trả về giao điểm của column_num và row_num trong dãy đó. Vùng thứ nhất được đánh số là 1, vùng thứ hai là 2, v.v... Nếu bỏ qua area_num, INDEX sẽ mặc định dùng vùng 1.
Ví dụ, nếu tham chiếu mô tả các ô (A1:B4, D1:E4, G1:H4), thì vùng 1 là dãy A1:B4, vùng 2 là dãy D1:E4, và vùng 3 là dãy G1:H4.
Lưu ý:
· Sau khi reference và area_num đã chọn một dãy riêng biệt, row_num và column_num đã chọn ô riêng biệt: row_num 1 là dòng thứ nhất trong dãy, column_num 1 là cột thứ nhất trong dãy, v.v... tham chiếu được trả về bởi INDEX() là giao của dòng và cột.
· Nếu đặt row_num = 0, INDEX() sẽ trả về tham chiếu cho toàn bộ cột; và ngược lại, nếu đặt column_num = 0, INDEX() sẽ trả về tham chiếu cho toàn bộ dòng.
· column_num, row_num và area_num phải chỉ tới một ô bên trong tham chiếu, nếu không, INDEX() sẽ báo lỗi #REF! Nếu bỏ quacolumn_num và row_num, INDEX() sẽ trả về một vùng trong tham chiếu, được chỉ định bởi area_num.
· Kết quả của INDEX() là một tham chiếu, nhưng tùy thuộc vào công thức sử dụng mà giá trị của INDEX() sẽ được sử dụng dưới dạng một tham chiếu hay một giá trị. Ví dụ, công thức CELL("width", INDEX(A1:B2, 1, 2)) thì tương đương với CELL("width", B1): hàm CELL() sử dụng trả về của INDEX như một tham chiếu ô. Nhưng với công thức 2*INDEX(A1:B2, 1, 2) thì giá trị trả về của INDEX() sẽ được dịch thành một giá trị trong ô B1.
Ví dụ:
Một số ví dụ về Hàm dò tìm và tham chiếu
Tìm tên dựa vào mã số
Chúng ta có bài toán sau:
Yêu cầu: nhập mã số vào ô B2, ô B4 sẽ có biết tên, dựa vào danh mục ở D3:E15
Xin đề nghị hai cách giải sau:
1. Dùng hàm VLOOKUP(): B4 = VLOOKUP(B2, D3:E15, 2, FALSE)
__Lấy giá trị ở B2 đi dò với cột đầu tiên của bảng D3:E15, nếu tìm thấy B2 ở hàng nào thì lấy giá trị trên cùng hàng đó trong cột thứ 2 của bảngD3:E15
2. Dùng hàm INDEX() kết hợp với MATCH(): B4 =INDEX(D3:E15, MATCH(B2, D3:D15, 0), 2)
__Lấy giá trị ở B2 đi dò trong khối cell D3:D15, để tìm vị trí của hàng chứa B2 (trong khối cell D3:D15)
__Dò tìm trong bảng D3:E15, lấy giá trị là ô giao nhau giữa hàng vừa tìm được ở trên và cột thứ 2.
Tìm tổng doanh thu của một tháng
Bài toán sau yêu cầu: Chọn tháng trong ô E9, ô E10 sẽ cho biết doanh thu trong tháng đó
Công thức đề nghị: E10 = HLOOKUP(E9, B1:M7, 7, FALSE)
__Lấy giá trị ở E9 đi dò với hàng đầu tiên của bảng B1:M7, nếu tìm thấy E9 ở cột nào thì lấy giá trị trên cùng cột đó trong hàng thứ 7 của bảng B1:M7
Dùng bất cứ cột nào để dò tìm theo cột
Bạn xem đề bài này nhé:
Yêu cầu là tìm cái Quantity (ở cột C) dựa vào cái Number (ở cột H)
Thoạt nhìn qua, thấy dò tìm theo cột... bạn sẽ nghĩ đến VLOOKUP() ? Nhưng không được, cột H nằm sau cột C !
Vậy nên phải dùng cách khác, xin gợi ý công thức trong cell B2 nhé, kết hợp INDEX() và MATCH():
B2 = INDEX(C6:C13, MATCH(B1, H6:H13, 0))
__Lấy giá trị ở B1 đi dò trong khối cell H6:H13, để tìm vị trí của hàng chứa giá trị B1 (trong H6:H13), ví dụ hàng thứ 5
__Dò tìm trong khối cell C6:C13, lấy giá trị ở hàng thứ 5... (là 75)
nguồn : giaiphapexcel
Bạn có nhu cầu học khóa học kế toán doanh nghiệp ngắn hạn (đào tạo nghề kế toán cho người chưa biết về kế toán) hoặc khóa học kế toán thực hành trên chứng từ thực tế xin vui lòng nhấp vào tên khóa học bên dưới để xem chi tiết:
Khóa học kế toán doanh nghiệp tại TPHCM
Học Kế Toán Thực Hành Tổng Hợp Trên Chứng Từ Thực tế