VLOOKUP nâng cao trong Excel: bội số, nhân đôi, lồng nhau

  • Chia Sẻ Cái Này
Michael Brown

Những ví dụ này sẽ hướng dẫn bạn cách Vlookup nhiều tiêu chí, trả về một phiên bản cụ thể hoặc tất cả các kết quả phù hợp, thực hiện Vlookup động trong nhiều trang tính, v.v.

Đây là phần thứ hai của loạt bài này sẽ giúp bạn khai thác sức mạnh của VLOOKUP trong Excel. Các ví dụ ngụ ý rằng bạn biết chức năng này hoạt động như thế nào. Nếu không, bạn nên bắt đầu với những cách sử dụng cơ bản của VLOOKUP trong Excel.

Trước khi tiếp tục, hãy để tôi nhắc bạn ngắn gọn về cú pháp:

VLOOKUP(giá trị tra cứu, bảng_mảng, col_index_num, [range_lookup] )

Bây giờ mọi người đều hiểu rõ, chúng ta hãy xem xét kỹ hơn các ví dụ về công thức VLOOKUP nâng cao:

    Cách Vlookup nhiều tiêu chí

    Excel Hàm VLOOKUP thực sự hữu ích khi tìm kiếm trên cơ sở dữ liệu một giá trị nhất định. Tuy nhiên, nó thiếu một tính năng quan trọng - cú pháp của nó chỉ cho phép một giá trị tra cứu. Nhưng nếu bạn muốn tra cứu với nhiều điều kiện thì sao? Có một vài giải pháp khác nhau để bạn lựa chọn.

    Công thức 1. VLOOKUP với 2 tiêu chí

    Giả sử bạn có danh sách đơn hàng và muốn tìm số lượng dựa trên 2 tiêu chí, Tên khách hàng Sản phẩm . Một yếu tố phức tạp là mỗi khách hàng đã đặt hàng nhiều sản phẩm, như được hiển thị trong bảng bên dưới:

    Công thức VLOOKUP thông thường sẽ không hoạt động trong trường hợp này vì nó trả về sản phẩm được tìm thấy đầu tiên trận đấu dựa trên mộtvùng:

    Giống như trong ví dụ trước, chúng tôi bắt đầu với việc xác định một số tên:

    • Dải ô A2:B5 trong trang tính CA được đặt tên CA_Sales .
    • Phạm vi A2:B5 trong bảng FL được đặt tên là FL_Sales .
    • Phạm vi A2:B5 trong bảng KS được đặt tên là KS_Sales .

    Như bạn có thể thấy, tất cả các dải ô đã đặt tên đều có phần chung ( Sales ) và phần riêng biệt ( CA , FL , KS ). Hãy nhớ đặt tên cho các dãy của bạn theo cách tương tự vì nó cần thiết cho công thức mà chúng ta sẽ xây dựng.

    Công thức 1. VLOOKUP GIÁN TIẾP để lấy dữ liệu động từ các trang tính khác nhau

    Nếu nhiệm vụ của bạn là truy xuất dữ liệu từ nhiều trang tính, thì công thức VLOOKUP INDIRECT là giải pháp tốt nhất – nhỏ gọn và dễ hiểu.

    Đối với ví dụ này, chúng tôi tổ chức bảng tóm tắt theo cách này:

    • Nhập các sản phẩm quan tâm trong A2 và A3. Đó là các giá trị tra cứu của chúng tôi.
    • Nhập các phần duy nhất của các phạm vi đã đặt tên trong B1, C1 và D1.

    Và bây giờ, chúng ta nối ô chứa phần duy nhất (B1) với phần chung ("_Sales") và cung cấp chuỗi kết quả cho INDIRECT:

    INDIRECT(B$1&"_Sales")

    Hàm INDIRECT chuyển đổi chuỗi thành một tên mà Excel có thể hiểu và bạn đặt tên đó vào đối số table_array của VLOOKUP:

    =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

    Công thức trên chuyển sang B2, sau đó bạn sao chép xuống dưới và sang bên phải.

    Vui lòng chú ý rằng, trong giá trị tra cứu ($A2),chúng tôi đã khóa tọa độ cột với tham chiếu ô tuyệt đối để cột vẫn cố định khi công thức được sao chép sang bên phải. Trong tham chiếu B$1, chúng tôi đã khóa hàng vì chúng tôi muốn tọa độ cột thay đổi và cung cấp một phần tên thích hợp cho INDIRECT tùy thuộc vào cột mà công thức được sao chép vào:

    Nếu bảng chính của bạn được tổ chức khác, các giá trị tra cứu trong một hàng và các phần duy nhất của tên dải ô trong một cột, thì bạn nên khóa tọa độ hàng trong giá trị tra cứu (B$1) và tọa độ cột trong các phần tên ($A2):

    =VLOOKUP(B$1, INDIRECT($A2&"_Sales"), 2, FALSE)

    Công thức 2. VLOOKUP và IF lồng nhau để tra cứu nhiều trang tính

    Trong trường hợp bạn có chỉ cần hai hoặc ba trang tính tra cứu, bạn có thể sử dụng công thức VLOOKUP khá đơn giản với các hàm IF lồng nhau để chọn đúng trang tính dựa trên giá trị khóa trong một ô cụ thể:

    =VLOOKUP($A2, IF(B$1="CA", CA_Sales, IF(B$1="FL", FL_Sales, IF(B$1="KS", KS_Sales,""))), 2, FALSE)

    Ở đâu $A2 là giá trị tra cứu (tên mặt hàng) và B$1 là giá trị khóa (trạng thái):

    Trong trường hợp này, bạn không nhất thiết phải xác định tên và có thể sử dụng bên ngoài tham chiếu để tham chiếu đến một trang tính hoặc sổ làm việc khác.

    Để biết thêm công thức exa Ví dụ, vui lòng xem Cách VLOOKUP trên nhiều trang tính trong Excel.

    Đó là cách sử dụng VLOOKUP trong Excel. Tôi cảm ơn bạn đã đọc và hy vọng sẽ gặp bạn trên blog của chúng tôi vào tuần tới!

    Sách bài tập thực hành để tải xuống

    Ví dụ về công thức VLOOKUP nâng cao (.xlsxtệp)

    một giá trị tra cứu duy nhất mà bạn chỉ định.

    Để khắc phục điều này, bạn có thể thêm một cột trợ giúp và nối các giá trị từ hai cột tra cứu ( Khách hàng Sản phẩm ) ở đó. Điều quan trọng là cột trợ giúp phải là cột ngoài cùng bên trái trong mảng bảng vì đó là nơi hàm VLOOKUP của Excel luôn tìm kiếm giá trị tra cứu.

    Vì vậy, hãy thêm một cột vào bên trái bảng của bạn. table và sao chép công thức bên dưới qua cột đó. Thao tác này sẽ điền vào cột trợ giúp các giá trị từ cột B và C (ký tự khoảng trắng được nối ở giữa để dễ đọc hơn):

    =B2&" "&C2

    Sau đó, sử dụng công thức VLOOKUP chuẩn và đặt cả hai tiêu chí trong đối số lookup_value , được phân tách bằng dấu cách:

    =VLOOKUP("Jeremy Sweets", A2:D11, 4, FALSE)

    Hoặc, nhập tiêu chí vào các ô riêng biệt (trong trường hợp của chúng tôi là G1 và G2) và nối các tiêu chí đó các ô:

    =VLOOKUP(G1&" "&G2, A2:D11, 4, FALSE)

    Vì chúng tôi muốn trả về một giá trị từ cột D, cột này đứng thứ tư trong mảng bảng, nên chúng tôi sử dụng 4 cho col_index_num . Đối số range_lookup được đặt thành FALSE để Vlookup khớp chính xác. Ảnh chụp màn hình bên dưới hiển thị kết quả:

    Trong trường hợp bảng tra cứu của bạn nằm trong trang tính khác , hãy đưa tên trang tính vào công thức VLOOKUP của bạn. Ví dụ:

    =VLOOKUP(G1&" "&G2, Orders!A2:D11, 4, FALSE)

    Ngoài ra, hãy tạo một dải ô đã đặt tên cho bảng tra cứu (giả sử Đơn hàng ) để làm cho công thức dễ đọc hơn:

    =VLOOKUP(G1&" "&G2, Orders, 4, FALSE)

    Để biết thêm thông tin, vui lòng xem CáchVlookup từ một trang tính khác trong Excel.

    Lưu ý. Để công thức hoạt động chính xác, các giá trị trong cột trình trợ giúp phải được nối chính xác theo cách giống như trong đối số lookup_value . Ví dụ: chúng tôi đã sử dụng ký tự khoảng trắng để phân tách tiêu chí trong cả cột trình trợ giúp (B2&" "&C2) và công thức VLOOKUP (G1&" "&G2).

    Công thức 2. Excel VLOOKUP với nhiều điều kiện

    Về lý thuyết, bạn có thể sử dụng cách tiếp cận trên để Vlookup nhiều hơn hai điều kiện. Tuy nhiên, có một vài lưu ý. Thứ nhất, giá trị tra cứu bị giới hạn trong 255 ký tự và thứ hai, thiết kế của trang tính có thể không cho phép thêm cột trợ giúp.

    May mắn thay, Microsoft Excel thường cung cấp nhiều cách để thực hiện cùng một việc. Để Vlookup nhiều tiêu chí, bạn có thể sử dụng kết hợp INDEX MATCH hoặc hàm XLOOKUP được giới thiệu gần đây trong Office 365.

    Ví dụ: để tra cứu dựa trên 3 giá trị khác nhau ( Date , Tên khách hàng Sản phẩm ), sử dụng một trong các công thức sau:

    =INDEX(D2:D11, MATCH(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), 0))

    =XLOOKUP(1, (G1=A2:A11) * (G2=B2:B11) * (G3=C2:C11), D2:D11)

    Ở đâu:

    • G1 là tiêu chí 1 (ngày)
    • G2 là tiêu chí 2 (tên khách hàng)
    • G3 là tiêu chí 3 (sản phẩm)
    • A2:A11 là tra cứu phạm vi 1 (ngày)
    • B2:B11 là phạm vi tra cứu 2 (tên khách hàng)
    • C2:C11 là phạm vi tra cứu 3 (sản phẩm)
    • D2:D11 là trả về phạm vi (số lượng)

    Lưu ý. Trong tất cả các phiên bản ngoại trừ Excel 365, INDEXMATCH phải được nhập dưới dạng công thức mảng CSE bằng cách nhấn Ctrl + Shift + Enter. Trong Excel 365 hỗ trợ mảng động, nó cũng hoạt động như một công thức thông thường.

    Để biết giải thích chi tiết về các công thức, vui lòng xem:

    • XLOOKUP với nhiều tiêu chí
    • Công thức INDEX MATCH với nhiều tiêu chí

    Cách sử dụng VLOOKUP để lấy kết quả trùng khớp thứ 2, thứ 3 hoặc thứ n

    Như bạn đã biết, hàm VLOOKUP trong Excel chỉ có thể tìm nạp một giá trị trùng khớp, chính xác hơn là trả về giá trị khớp tìm thấy đầu tiên. Nhưng nếu có một vài kết quả khớp trong mảng tra cứu của bạn và bạn muốn lấy phiên bản thứ 2 hoặc thứ 3 thì sao? Nhiệm vụ nghe có vẻ phức tạp, nhưng có giải pháp!

    Công thức 1. Phiên bản thứ N của Vlookup

    Giả sử bạn có tên khách hàng trong một cột, sản phẩm họ đã mua trong một cột khác và bạn đang tìm kiếm để tìm sản phẩm thứ 2 hoặc thứ 3 được mua bởi một khách hàng nhất định.

    Cách đơn giản nhất là thêm cột trợ giúp vào bên trái của bảng như chúng ta đã làm trong ví dụ đầu tiên. Nhưng lần này, chúng tôi sẽ điền tên khách hàng và số lần xuất hiện như " John Doe1 ", " John Doe2 ", v.v.

    Để nhận được số lần xuất hiện, sử dụng hàm COUNTIF với tham chiếu phạm vi hỗn hợp (tham chiếu đầu tiên là tuyệt đối và tham chiếu thứ hai là tương đối như $B$2:B2). Vì tham chiếu tương đối thay đổi dựa trên vị trí của ô nơi công thức được sao chép, ở hàng 3, nó sẽ trở thành $B$2:B3, ở hàng 4 -$B$2:B4, v.v.

    Nối với tên khách hàng (B2), công thức có dạng sau:

    =B2&COUNTIF($B$2:B2, B2)

    Công thức trên chuyển sang A2 , sau đó bạn sao chép nó xuống nhiều ô nếu cần.

    Sau đó, nhập tên mục tiêu và số lần xuất hiện vào các ô riêng biệt (F1 và F2), đồng thời sử dụng công thức bên dưới để Vlookup một lần xuất hiện cụ thể:

    =VLOOKUP(F1&F2, A2:C11, 3, FALSE)

    Công thức 2. Lần xuất hiện thứ 2 của Vlookup

    Nếu bạn đang tìm kiếm phiên bản thứ 2 của giá trị tra cứu, thì bạn có thể làm mà không có cột trợ giúp. Thay vào đó, hãy tạo mảng bảng động bằng cách sử dụng hàm INDIRECT cùng với MATCH:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11"), 2, FALSE)

    Trong đó:

    • E1 là giá trị tra cứu
    • A2:A11 là phạm vi tra cứu
    • B11 là ô cuối cùng (dưới cùng bên phải) của bảng tra cứu

    Xin lưu ý rằng công thức trên được viết cho một trường hợp cụ thể trong đó các ô dữ liệu trong bảng tra cứu bắt đầu ở hàng 2. Nếu bảng của bạn nằm ở đâu đó ở giữa trang tính, hãy sử dụng công thức chung này, trong đó A1 là ô trên cùng bên trái của bảng tra cứu chứa tiêu đề cột:

    =VLOOKUP(E1, INDIRECT("A"&(MATCH(E1, A2:A11, 0)+1+ROW(A1))&":B11"), 2, FALSE)

    Cách thức hoạt động của công thức này

    Đây là phần quan trọng của công thức tạo phạm vi vlookup động :

    INDIRECT("A"&(MATCH(E1, A2:A11, 0)+2)&":B11")

    Hàm MATCH được định cấu hình để đối sánh chính xác (0 trong đối số cuối cùng) so sánh tên mục tiêu (E1) với danh sách tên (A2:A11) và trả về vị trí của tên được tìm thấy đầu tiên phù hợp, đó là 3trong trường hợp của chúng ta. Số này sẽ được sử dụng làm tọa độ hàng bắt đầu cho phạm vi vlookup, vì vậy chúng tôi thêm 2 vào số đó (+1 để loại trừ phiên bản đầu tiên và +1 để loại trừ hàng 1 có tiêu đề cột). Ngoài ra, bạn có thể sử dụng 1+ROW(A1) để tự động tính toán mức điều chỉnh cần thiết dựa trên vị trí của hàng tiêu đề (trong trường hợp của chúng tôi là A1).

    Kết quả là chúng tôi nhận được chuỗi văn bản sau, INDIRECT chuyển đổi thành tham chiếu dải ô:

    INDIRECT("A"&5&":B11") -> A5:B11

    Dải ô này chuyển đến đối số table_array của VLOOKUP buộc nó bắt đầu tìm kiếm ở hàng 5, loại bỏ trường hợp đầu tiên của giá trị tra cứu:

    VLOOKUP(E1, A5:B11, 2, FALSE)

    Cách Vlookup và trả về nhiều giá trị trong Excel

    Hàm VLOOKUP của Excel được thiết kế để trả về chỉ một giá trị khớp. Có cách nào để Vlookup nhiều phiên bản không? Vâng, có, mặc dù không phải là một điều dễ dàng. Điều này yêu cầu sử dụng kết hợp một số hàm như INDEX, SMALL và ROW là một công thức mảng.

    Ví dụ: bên dưới có thể tìm thấy tất cả các lần xuất hiện của giá trị tra cứu F2 trong phạm vi tra cứu B2:B16 và trả về nhiều lần khớp từ cột C:

    {=IFERROR(INDEX($C$2:$C$11, SMALL(IF($F$1=$B$2:$B$11, ROW($C$2:$C$11)-1,""), ROW()-1)),"")}

    Có 2 cách để nhập công thức vào trang tính của bạn:

    1. Nhập công thức vào ô đầu tiên, nhấn Ctrl + Shift + Enter , sau đó kéo ô đó xuống một vài ô khác.
    2. Chọn một số ô liền kề trong một cột (F1:F11 trong ảnh chụp màn hình bên dưới), nhập công thức và nhấn Ctrl +Shift + Enter để hoàn thành.

    Dù bằng cách nào, số lượng ô mà bạn nhập công thức phải bằng hoặc lớn hơn số lượng tối đa có thể khớp.

    Để được giải thích chi tiết về logic công thức và các ví dụ khác, vui lòng xem Cách VLOOKUP nhiều giá trị trong Excel.

    Cách Vlookup theo hàng và cột (tra cứu hai chiều)

    Tra cứu hai chiều (còn gọi là tra cứu ma trận hoặc tra cứu 2 chiều ) là một từ ưa thích để tra cứu một giá trị tại giao điểm của một hàng và cột nhất định. Có một vài cách khác nhau để thực hiện tra cứu hai chiều trong Excel, nhưng vì trọng tâm của hướng dẫn này là hàm VLOOKUP nên chúng tôi sẽ sử dụng nó một cách tự nhiên.

    Đối với ví dụ này, chúng tôi sẽ thực hiện như bên dưới bảng với doanh số bán hàng tháng và tìm ra công thức VLOOKUP để truy xuất số liệu bán hàng cho một mặt hàng cụ thể trong một tháng nhất định.

    Với tên mặt hàng trong A2:A9, tên tháng trong B1:F1, mặt hàng mục tiêu trong I1 và tháng mục tiêu trong I2, công thức sẽ như sau:

    =VLOOKUP(I1, A2:F9, MATCH(I2, A1:F1, 0), FALSE)

    Cách thức hoạt động của công thức này

    Phần cốt lõi của công thức là hàm VLOOKUP tiêu chuẩn tìm kiếm kết quả khớp chính xác với giá trị tra cứu trong I1. Nhưng vì chúng tôi không biết doanh số bán hàng trong một tháng cụ thể ở cột nào nên chúng tôi không thể cung cấp số cột trực tiếp cho đối số col_index_num . Để tìm cột đó, chúng tôi sử dụng MATCH saufunction:

    MATCH(I2, A1:F1, 0)

    Được dịch sang tiếng Anh, công thức cho biết: tra cứu giá trị I2 trong A1:F1 và trả về vị trí tương đối của nó trong mảng. Bằng cách cung cấp 0 cho đối số thứ 3, bạn hướng dẫn MATCH tìm giá trị chính xác bằng với giá trị tra cứu (giống như sử dụng FALSE cho đối số range_lookup của VLOOKUP).

    Mar nằm ở cột thứ 4 trong mảng tra cứu, hàm MATCH trả về 4, giá trị này chuyển trực tiếp tới đối số col_index_num của VLOOKUP:

    VLOOKUP(I1, A2:F9, 4, FALSE)

    Vui lòng chú ý rằng mặc dù tên tháng bắt đầu ở cột B, nhưng chúng tôi sử dụng A1:I1 cho mảng tra cứu. Điều này được thực hiện để số được trả về bởi MATCH tương ứng với vị trí của cột trong table_array của VLOOKUP.

    Để tìm hiểu thêm các cách thực hiện tra cứu ma trận trong Excel, vui lòng xem INDEX MATCH MATCH và các công thức khác để tra cứu 2 chiều.

    Cách thực hiện nhiều Vlookup trong Excel (Vlookup lồng nhau)

    Đôi khi, bảng chính và bảng tra cứu của bạn không có một cột nào trong phổ biến, ngăn bạn thực hiện Vlookup giữa hai bảng. Tuy nhiên, tồn tại một bảng khác không chứa thông tin bạn đang tìm kiếm nhưng có một cột chung với bảng chính và một cột chung khác với bảng tra cứu.

    Trong hình ảnh bên dưới minh họa tình huống:

    Mục tiêu là sao chép giá vào bảng chính dựa trên ID mặt hàng . Vấn đề là bảng chứa giá không có ID mặt hàng , nghĩa là chúng ta sẽ phải thực hiện hai Vlookup trong một công thức.

    Để thuận tiện, hãy tạo một vài phạm vi được đặt tên trước:

    • Bảng tra cứu 1 được đặt tên là Sản phẩm (D3:E10)
    • Bảng tra cứu 2 được đặt tên là Prices ( G3:H10 )

    Các bảng có thể nằm trong cùng hoặc khác trang tính.

    Và bây giờ, chúng ta sẽ thực hiện cái gọi là double Vlookup , hay còn gọi là Vlookup lồng nhau .

    Đầu tiên, hãy tạo công thức VLOOKUP để tìm tên sản phẩm trong bảng Tra cứu 1 (có tên Sản phẩm ) dựa trên mặt hàng id (A3):

    =VLOOKUP(A3, Products, 2, FALSE)

    Tiếp theo, đặt công thức trên vào đối số lookup_value của hàm VLOOKUP khác để lấy giá từ Bảng tra cứu 2 (có tên Prices ) dựa trên tên sản phẩm được trả về bởi VLOOKUP lồng nhau:

    =VLOOKUP(VLOOKUP(A3, Products, 2, FALSE), Prices, 2, FALSE)

    Ảnh chụp màn hình bên dưới hiển thị công thức Vlookup lồng nhau của chúng tôi đang hoạt động:

    Cách Vlookup nhiều sheet động

    Đôi khi, y Bạn có thể có dữ liệu ở cùng định dạng được chia thành nhiều trang tính. Và mục đích của bạn là lấy dữ liệu từ một trang tính cụ thể tùy thuộc vào giá trị khóa trong một ô nhất định.

    Điều này có thể dễ hiểu hơn từ một ví dụ. Giả sử bạn có một vài báo cáo bán hàng theo khu vực ở cùng định dạng và bạn đang muốn lấy số liệu bán hàng cho một sản phẩm cụ thể ở một số khu vực nhất định.

    Michael Brown là một người đam mê công nghệ chuyên dụng với niềm đam mê đơn giản hóa các quy trình phức tạp bằng các công cụ phần mềm. Với hơn một thập kỷ kinh nghiệm trong ngành công nghệ, anh ấy đã trau dồi kỹ năng của mình trong Microsoft Excel và Outlook, cũng như Google Trang tính và Tài liệu. Blog của Michael dành để chia sẻ kiến ​​thức và chuyên môn của anh ấy với những người khác, cung cấp các mẹo và hướng dẫn dễ thực hiện để cải thiện năng suất và hiệu quả. Cho dù bạn là một chuyên gia dày dạn kinh nghiệm hay người mới bắt đầu, blog của Michael đều cung cấp những hiểu biết có giá trị và lời khuyên thiết thực để tận dụng tối đa những công cụ phần mềm thiết yếu này.