Bài viết: Một số ví dụ đơn giản về hàm dò tìm và tham chiếu

Liên hệ QC

BNTT

Bùi Nguyễn Triệu Tường
Thành viên danh dự
Tham gia
3/7/07
Bài viết
4,946
Được thích
23,206
Nghề nghiệp
Dạy đàn piano
Để tìm hiểu kỹ hơn về các hàm dò tìm và tham chiếu, mời bạn vào đây.

Tìm tên dựa vào mã số

Chúng ta có bài toán sau:
9oh-OnqMxzCvfAPSPPK5NYqefGON2vd3ZhxiHIuYJ1_zJWiUTpj-_-gH62yUMd6OtOKy5zP3ZLqhrrjpqKVavYl_x66PI28TDp78X8WMiO9xioCKJkZRljyvvRKqGOIYWhAB2gQwCwrinoqj8W0qhwgXDBEegxSG9R8hV6TTcUvMGKsncDqW8UY5CqWya4zZBIrdwRA6SLuzGlSt6MBgCdWqLIsxY7p6R-U-xrVPw6y-y19RcebNa7xaZ-_rqtIpPxItgVmmEmhjIyGWojhJLB_Dktso-qTXBNiFuxTx53TO5JfRFzIA53MYAr6o2ATpvMVchU851VgFg8KW-LJRPXkXP3CpmDrjFm1F1mgc5UWpNQRp_6iM9puMWz3PWbAZ_1eRfa8yYezL13Nnh5Z1hi67Zoy1F3bJhDok9nugJp24DrTR1u07ldNMYpu4_nEDQTYgwYBiLlny_kmdI9xjBRzbckF3oHsSmAms9MkSaJX-wbGBI-wwZPdRKgVoS0ncut1EqfaujbcR0r_R72JxucrD03Evi0KoM33aY3S26CXC_g4xCZiPSP6JdX3LqeoIA7QV4CjssZpY9KdJEVStMkhe8EBPd2xevPxgeGUNmA=w620-h310-no

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ảng D3: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 đó
eFwRjWEGdVg_RrUig0rUHYERong5iJKgKDVmgMxPuO_7NKKMMllrOKuGtzuklVnlRSwBvLm9mb0zmLRCqCPii_2mzO-CERFw_cHugLfm7yUYJHV6qoQdLotbZUsQg7thGcp_69pphuW_JAhGN1yfnv6fmGlhqZgHOQh8Apjmxn9XjuOT4eCeQq2KBzvjkvcnkZ1_WvCC-jwjeqe3kPlzDzpsckcD5174cchZ-VD729NY_Dpg_LCpQ1QZIoS3G-EuQBECPA3jL7BclHn8AKugD6PL4AeKPZEy701zf2KEpV9ivcxteZz_t_0s3nufkqSb9Lu3P6trPqDiNzSK_mP9ZKfAPVGYLaH4Sx_664FhoVC8THp1nvncAXx64bPATrK1FXZziYm2hMcQJvrV8ZV5ylBTaq4GHe48UOB7aZKOujCk3DFXfwUleWn2ECtzoVg4OV9iE8Ov5c6K0tb0NNoSGvIyNJYsSn-Zx1B39Gc3ov7AsV3Up3pAMrEoRLY02NOtPdT4v3lloir_BQfj-iXxldgWpPWo9nG9O5TymxnPDjHMTRZbsxEgXmXC0eMnjh1550p9ORA8m3hI1UjBtShnfo567dbVXlBLWLHBXgad4w=w1023-h259-no


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é:
3rtfE9UNPHWbxJ2XKHpMPwX_W0jDGtrNdpvI5ZFC_o5Q3zsKWA9u3bQGz5V8_m2ZeGa3tncvf-y32lxViAkZRzunWVEasK7SUs_fMZEWEiYn1nnlOFVJx_EJAweg77YfVmBYTSpheeswlZt4B8-YMl-wbRJt2_vty7KHqFSiIKFgZVkdK-g_sbLynkRwwznW3i4bUuegkS4a9uluE2NT79R8WtfKL6qBodO90lLBkGFSyBTbBl6pQeuAg5dw8f5EU5s1NrULwJmhCkNLL6QGe0CrKEDUh1Eq0V9u6H1sF7aPvZZzdbMKK7iqj8QlXAGa8n3eQwBcRptR7Q15kVbN_gkeFYIxh3OBoVKdslSQOI1Em1mYnrZZLV6nwpQIBSyHPtoeDfH2cZW_oQvHQ3mkA8ZsUXy0IWzBYRTF5p9j3Tac_Nl-TyWxRImOm1-OWlnHLc0viPI5X-UZzHm4FCnG57BLiInKnVzkavXzSB77DUw6PpjE2D0GSNHr_barlv1WjLO3NPRv6lHChuURMd2YKkvAWBRCh7kXTdfKICq68biBXlw4248qEVpfYIOyPYYx2icGz-rCA6sr54rwEaeq41tL9JM6XQ0mc-jDvLTpVA=w765-h329-no

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 !

Tôi nhớ có lần trên diễn đàn này, có bạn đã hỏi có cách nào để VLOOKUP() tìm ngược,
họ muốn cột chứa trị dò tìm không phải là cột đầu tiên bên trái !

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)

Row-and-Colunm Lookups (dò tìm vừa theo hàng vừa theo cột)
Thường thì chúng ta hay dò tìm dựa theo một cột hoặc một hàng.
Tuy nhiên, trong vài trường hợp, chúng ta phải dò tìm vừa theo một hàng vừa theo một cột, và kết quả là kết hợp của cả hai cái đó.
Người ta gọi trường hợp này là Row-and-Column Lookups.

Để dễ hiểu hơn, các bạn xem ví dụ sau:

Cũng là bảng tính mà tôi đã giới thiệu ở ví dụ Dùng bất cứ cột nào để dò tìm theo cột, nhưng yêu cầu thì khác:


Ở bài trước, người ta chỉ yêu cầu cho biết cái Quantity (cột C) dựa vào Number (cột H),

Còn bài này, người ta muốn biết tất cả những cái trên hàng tiêu đề (Division, Description, Quantity, Cost...) của Number (ở cột H) là gì...

Ví dụ: với Number = D-178, thì Division = 4, Description = Gangley Pliers, Quantity = 57, Cost = $10.47, v.v...

XbO_gzemwrJh5TVpFgIAu1A6cRXWpIKMcI9gTdzDBpiuiO8Adk2zd3a0Fm0gUv2pGeXFvCQO0wRbn_3ZXxoSlyMeDYrCaSOi3LJ1h9SHLhfI3hLCQOYMHXEtiGv3Iu61-ATTcX1M1_7jWXU09rTwNh29pnW2tVlfTubVakp8w84hIiW4kKysn_NnvC90Ta6YwYt55-JIpqesb8tsU3ssi_NqoRVdEC7l9WVdMRJrt81FDwsd_4eRvfbLbVr6gtqJio4xmzc8uTpr-sVMpRK77_svlIoQ9h7tMP_2V1fJCjIeJa06CaMy63v1Zyu2rRfrfIZBpp87Td72xmGIhseyXd7SjOqjhp_tEfMVabG8JndmaaSb9EXGaVvN1YXuC2DMcH_8gpciUa2oJ4sc0VBQPdv-vRm-e3Zd7ieXI1lqGFbtSRvfKjvPyBshl8QkS2M6WKcyXskIPloUswGzXSjlnrLOIAiDKcF2F0fhW2HDvhv6uKeTWKpTCo2Hjs9bU8UdzNgmNlS7K99-M4Lzu9KfWT2gQMO1lHYmaYp0_ZOg2S8rlgVwrzTAZsLIgUzA0PvHCjBLInHixgw11HgNyBCtr0OYQZAmEQ87CymcHCKMZQ=w925-h473-no

Ở ô B1 là một cái Data Validation List (tạm hiểu là danh sách) của H7:H14, và ở ô B2 là một cái Data Validation List của A6:H6

Dựa vào B1 và B2, cho biết B3 ?

Chúng ta có thể dùng hàm INDEX() với thông số của nó là hai hàm MATCH(),

một cái để tìm ra vị trí hàng (của B1 trong H7:H14) và một cái để tìm ra vị trí cột (của B2 trong A6:H6):
tìm vị trí hàng: MATCH(B1, H7:H14, 0)

tìm vị trí cột: MATCH(B2, A6:H6, 0)

và đây là công thức ở ô B3: =INDEX(A7:H14, MATCH(B1, H7:H14, 0), MATCH(B2, A6:H6, 0))


Tìm kiếm một giá trị bằng cách dùng ListBox hoặc ComboBox

Tôi có một bảng tính như hình sau:
HxofAZuvu-Vm2ZJoLFePV-O7tZQy-zOax15euRwsXUTlWm0wSOgPFPJnI-oIlKWCQeJEdyIzso9sMuMRKrONDQPrHQStTKmSIVQuFh0c4qg8YE4JA4fBQ6-1QqVswgWjrIw8eFG3bJOUGmyk8ONBQqwfViIFheWXiQmv3gf7pAr2--kTrbxNsZiBpE65-l2P2gl5OZSCCCjvxU2e2m2AlhUZ0SJ7WfPe9Sww5EGuq6Jzpi5vcoSJBkdd_eel1fd9Om4o_--yPCn_kc6m5Z5BP06B3L98dgaFu_D06rCvVpIQ2W8RXLqsptSGgt5F_gezauj1ALivscS53ZhVe73TNcXs2UUWW7F3qNwNN7cX0ZUtWn2k7pCFR2n4J_KruoWrJqzL_oUTpj8hU5euYGGUcc3fvcQvoLIer1ui8nklaFw1vzaSSz8G1EYotmQVIdOvxxDOVhFgMFNwsSO0oDe6_I1kGDgUcbu5t4IRZ10yKiy9h70NG3FpxGPBFZaI53Is4w64MhovY6q323BuBdZZxC5xThvi_o6gT8t-6J9DrtDL7KUsocVA_YiAxA8R0LJfGExvcUl40h_FzvVNlHHYSzMpTovYv5Tc25PDejhOlw=w685-h629-no

Trong đó tôi có dùng một ListBox, với Input Range của nó là A3:A10 và Cell Link là E3.

Khi tôi chọn một giá trị trong List box, thì ở Cell Link (E3) hiện ra số thứ tự của giá trị đó trong ListBox...

Tôi muốn rằng khi tôi chọn một giá trị trong ListBox này, thì giá trị sẽ hiện ra, chứ không phải là số thứ tự.

Tôi sẽ dùng hàm INDEX(), với cú pháp như sau:
INDEX(list_range, list_selection)
list_range ____Danh sách các giá trị trong Listbox
list_selection _.Số thứ tự của danh sách trong Listbox
Trong trường hợp này, để có giá trị hiện ra ở ô E4, tại E4 tôi dùng công thức: =INDEX(A3:A10, E3)


Tìm kiếm trong nhiều cột

Đôi khi, các dữ liệu dùng để tìm kiếm không nằm ở một cột mà trong nhiều cột.
Ví dụ, bạn có một danh sách đã được tách sẵn họ và tên riêng ra hai cột.
Người ta yêu cầu dựa vào họ và tên để xác định chức vụ.
Chúng ta có thể dùng một cột phụ để nối họ và tên lại rồi tìm theo cột phụ... Nhưng có lẽ không cần, vì tôi sẽ dùng hàm INDEX() và MATCH() với công thức mảng.

Hàm MATCH() có một cú pháp ít người biết đến, đó là:

MATCH(value1 & value2, array1 & array2, match_type)
value1 & value2 là các dữ liệu để tìm (ví dụ họ và tên)
array1 & array2 là các cột (hoặc hàng) chứa các dữ liệu dùng để tìm kiếm đó
Và đây là cú pháp dùng INDEX() ghép với MATCH() trong công thức mảng:
{=INDEX(reference, MATCH(value1 & value2, array1 & array2, match_type))}
Ví dụ, các bạn xem hình sau đây:
QCZZvHTKxK_5CGwbhStdMfmPgtg3kiMLMc1NBYsCMvm5zmmeoStT8G-eI2NG4Lj_WrbWInPm3WHtEgBr2Myk7tXuMOilFspPGbUAComtePtSpI5U7xdyaIBf_yRS3TukSqXhWf6Xa6MWK4PHBFDO0XS1U1zDdc5H4zNbrbr7VZ62LKPzInU44E9CIe6mgc0nOnWOwTCPFa_D5PQ7r5eK1_bxam7rZ3jaElAeLLlbYBmWlaGCtHlAA1PLZjSyl6oZwFS6xnAPXFZV7KUu7OOgKpNWkNXmtWL-3bMIM6hpalvuO8aLzjz5pwCIxKsja_AbgoDWvKdhh9LEu0GU2zijS6h0hTsF1e4hmZ8dTkG5Krm7XhZdigYLwOniCFpr5Nr5NaHzXOSE3yuTXxZhWBHMjdKnp_neghOX-2UX9iLV9jPED-MYxq0-BlcLqnNnnQSu7L7MIHCfiDdQn-PeYSNLnbNREYIxtBkaxA4d52bMpufvRfvdwigv0Vp3bBHzBIRQWUpt_ewvPHUyw0axtmTHIgz6_70GdqaOD5zw4tAQktHHcReX_qePNi9CwlYCv_JsQrRhNaVVcXhUq6lU6WkF2tlje0RQLkFBA-JS9POFew=w806-h422-no

Chúng ta có:
B1 là danh sách các First Name (tên), B2 là danh sách các Last Name (họ)
Vùng chứa Fisrt Name là A6:A14, vùng chứa Last Name là B6:B14 và vùng chứa Title (chức vụ) là C6:C14


Công thức dựa vào First Name (ở B1) và Last Name (ở B2), dò trong vùng chứa First Name (A6:A14) và Last Name (B6:B14) mà xác định ra Title trong (C6:C14):
{=INDEX(C6:C14, MATCH(B1 & B2, A6:A14 & B6:B14, 0))}
Một số bài viết có liên quan:
1/ Offset truyền kỳ (kỳ 2)
2/ Offset truyền kỳ (kỳ 1)
3/ Kết hợp các chữ ở nhiều ô thành 1 dòng chỉ trong tíc tắc
4/ SUMPRODUCT và Công thức mảng - Phép tính có nhiều điều kiện
5/ Sử dụng Excel để ra quyết định hằng ngày
6/ Excel nâng cao: Sử dụng sự lặp lại và các tham chiếu tuần hoàn
7/ 10 lý do để học công thức Excel
8/ Làm việc với công thức mảng trong Excel
9/ VLOOKUP với Cột động
10/ Sử dụng hàm Subtotal
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
thớt mình mà tô màu rùi dò tìm tham chiếu dc ko
ví dụ mình có 1 cột dữ liệu tô 2 mau vàng / xanh đếm loc xem có bao nhều cột vàng và bao nhiều cột xanh
tổng cột trắng ( ko xanh ko vàng ) thớt cho minh xin ý tưởng đoạn lệnh trên nha. tks thớt nhiều /-*+/
 
không có file ví dụ kèm theo hả chủ thớt ^^
 
Bạn ơi cho mình hỏi ở ví dụ Tìm kiếm trong nhiều cột, mình dùng công thức MATCH(B1 & B2, A6:A14 & B6:B14, 0), tuy nhiên lại trả về giá trị là #Value là sao nhỉ?
Mình đã kiểm tra công thức bằng cách ấn chữ Fx ở cạnh ô nhập liệu, thấy vẫn cho ra giá trị là số thứ tự Row, tuy nhiên khi enter công thức thì giá trị lại là #Value? +-+-+-++-+-+-++-+-+-++-+-+-+
 
Mình làm được rồi, ấn enter thì k đc nma ấn Ctrl Shilf Enter thì lại đc??? K hiểu vì sao? Hic
 
Web KT
Back
Top Bottom