VBA INDEX MATCH dựa trên nhiều tiêu chí trong Excel (3 phương pháp)

  • Chia Sẻ Cái Này
Hugh West

Khi chúng tôi có một lượng lớn dữ liệu thì đôi khi rất khó để trích xuất bất kỳ dữ liệu cụ thể nào từ tập dữ liệu. Cùng với các hàm INDEX MATCH của Excel có thể truy xuất bất kỳ loại dữ liệu nào ngay cả trong một tập dữ liệu khổng lồ. Triển khai VBA là phương pháp hiệu quả nhất, nhanh nhất và an toàn nhất để chạy bất kỳ thao tác nào trong Excel. Trong bài viết này, chúng tôi sẽ chỉ cho bạn 3 phương pháp khác nhau về cách thực hiện INDEX MATCH dựa trên nhiều tiêu chí trong Excel với macro VBA .

Tải xuống Sổ làm việc

Bạn có thể tải xuống sổ làm việc Excel thực hành miễn phí từ đây.

VBA INDEX MATCH Dựa trên nhiều tiêu chí.xlsm

3 Phương pháp với VBA INDEX MATCH dựa trên nhiều tiêu chí trong Excel

Trong các phần sau, chúng tôi sẽ chỉ cho bạn cách thực hiện INDEX MATCH dựa trên nhiều tiêu chí cho một dải ô , cho một lựa chọn cụ thể cho một bảng trong Excel với VBA .

Ở trên chúng tôi có tập dữ liệu mà bài viết này sẽ theo dõi. Chúng tôi có Tên học sinh , ID học sinh, Điểm thi của mỗi học sinh trong tập dữ liệu. Chúng tôi sẽ trích xuất một kết quả nhất định nằm trong một cột dựa trên các điều kiện từ hai cột còn lại.

Tiêu chí – 1: Nhúng VBA với INDEX MATCH để tra cứu nhiều (hai) chiều trong Excel

Hãy xem xét hình ảnh sau đây. Chúng tôi đã lưu trữ tên của một học sinh cụ thể “ Edge” trong ÔG4 ; và cột mà chúng tôi sẽ tìm kiếm Kết quả trong, Điểm thi , được lưu trữ trong Ô G5 . Chúng tôi sẽ tìm kiếm trong cột Điểm thi và lưu trữ Điểm mà “ Edge” nhận được trong Ô G6 .

Các bước để tra cứu kết quả trong mảng hai chiều với INDEX MATCH trong Excel với VBA được cung cấp bên dưới.

Các bước:

  • Ban đầu, hãy nhấn Alt + F11 trên bàn phím hoặc truy cập tab Nhà phát triển -> Visual Basic để mở Trình soạn thảo Visual Basic .

  • Tiếp theo, trong cửa sổ mã bật lên, từ thanh menu, nhấp vào Chèn -> Mô-đun .

  • Sau đó, sao chép đoạn mã sau và dán vào mã cửa sổ.
2321

Mã của bạn hiện đã sẵn sàng để chạy.

  • Bây giờ, nhấn F5 trên bàn phím hoặc từ thanh menu, chọn Chạy -> Chạy Sub/UserForm . Bạn cũng có thể chỉ cần nhấp vào biểu tượng Chạy nhỏ trong thanh menu phụ để chạy macro.

Sau khi thực thi mã, hãy nhìn vào ảnh gif bên dưới để biết kết quả.

Kết quả là Điểm mà “ Edge” đạt được bài kiểm tra, 67 , được truy xuất trong Ô G7 .

Giải thích mã VBA

1274

Xác định biến của Trang tính.

8755

Lưu trữ tên trang tính. Tên của trang tính của chúng tôi là "Hai chiều", bạn nên cung cấptên theo bảng tính của bạn.

8845

Đoạn mã này chọn phạm vi C5:D14 làm phạm vi tra cứu. Sau đó tìm kiếm kết quả khớp được lưu trữ trong ô G4 trong phạm vi B5:B14 và tìm kiếm kết quả khớp được lưu trữ trong ô G5 trong phạm vi C4:D4 và chuyển kết quả vào ô G6 .

Đọc thêm: Cách sử dụng INDEX MATCH với nhiều tiêu chí cho phạm vi ngày

Tiêu chí – 2: Áp dụng Macro để Tìm Giá trị MATCH bằng INDEX với Hàm do Người dùng Xác định (UDF)

Bạn có thể trích xuất các giá trị phù hợp từ tập dữ liệu bằng chức năng do người dùng định nghĩa (UDF) . Từ hình ảnh sau đây, những gì chúng ta sẽ làm là, chúng ta sẽ chuyển Mã sinh viên Điểm thi của một sinh viên nhất định và hàm sẽ trả về cho chúng ta Tên của học sinh cụ thể đó.

Hãy xem cách đạt được điều đó cho Tên học sinh “Finn” bằng VBA .

Các bước:

  • Như minh họa trước đó, hãy mở Trình chỉnh sửa Visual Basic từ tab Nhà phát triển Chèn một Mô-đun vào cửa sổ mã.
  • Sau đó, trong cửa sổ mã, hãy sao chép mã sau và dán mã đó.
8255

  • Không chạy mã này, lưu mã.
  • Bây giờ, quay lại bảng tính quan tâm. Chọn bất kỳ ô nào mà bạn muốn lưu trữ kết quả. Trong trường hợp của chúng tôi, đó là Ô F5 .
  • Trong ô đó, hãy viết UDF bạnvừa tạo trong mã ( MatchByIndex ) và chuyển ID sinh viên và Điểm thi của sinh viên cụ thể bên trong dấu ngoặc đơn của hàm.

Như chúng tôi đang cố gắng trích xuất tên “ Finn” từ ID (105) Marks (84) của anh ấy, vì vậy đối với trường hợp của chúng tôi, công thức trở thành,

=MatchByIndex(105,84)

  • Sau đó, nhấn Enter .

Hãy xem hình ảnh sau.

Trong Ô F5 , chúng tôi đã truy xuất thành công tên “ Finn” đơn giản bằng cách chuyển ID Marks của anh ấy bên trong hàm mà chúng ta đã tạo trong mã VBA .

Giải thích mã VBA

8399

Tạo một hàm mới và chuyển các biến bên trong hàm đó. Bạn có thể xác định bất kỳ tên nào cho hàm.

7429

Hàng của chúng tôi bắt đầu từ hàng số 4. Bạn phải cung cấp số hàng mà tập dữ liệu của bạn bắt đầu từ đó.

6899

Xác định các biến.

4798

Đầu tiên, xác định trang tính sẽ làm việc. Tên trang tính của chúng tôi là “UDF”, bạn nên cung cấp tên theo bảng tính của mình. Sau đó, bắt đầu tìm kiếm trong phạm vi C:D từ hàng đầu tiên mà chúng tôi đã xác định đến hàng cuối cùng.

9758

Bắt đầu lặp lại từ hàng đầu tiên đến hàng cuối cùng. Nếu giá trị đầu tiên mà chúng ta sẽ truyền vào bên trong hàm nằm trong cột C và nếu giá trị thứ hai mà chúng ta sẽ truyền vào bên trong hàm nằm trong cột D , thì nó sẽ trả về cáckhớp từ cột B . Nếu không, hãy thoát khỏi hàm, kết thúc tất cả các câu lệnh và chuyển sang dòng tiếp theo.

5269

Nếu điều kiện trước đó không được đáp ứng trong khi thực thi, thì thông báo “Không tìm thấy dữ liệu” sẽ được trả về và mã sẽ rời khỏi chức năng.

Đọc thêm: INDEX-MATCH với nhiều tiêu chí cho một phần văn bản trong Excel (2 cách)

Tiêu chí – 3: Triển khai VBA để trả về giá trị MATCH từ một bảng có nhiều dữ liệu trong Excel

Trong phần này, chúng ta sẽ tìm hiểu cách trả về giá trị khớp theo chỉ mục từ một bảng trong MsgBox trong VBA Excel.

Hãy xem cách trích xuất Marks từ bảng được hiển thị trong tập dữ liệu ( T able Name: TableMatch ) của một sinh viên nhất định bằng cách cung cấp Name ID bên trong mã. Đối với trường hợp của chúng ta, Name ID sẽ lần lượt là Finn 105 .

Các bước :

  • Đầu tiên, mở Trình soạn thảo Visual Basic từ tab Nhà phát triển Chèn một Mô-đun trong cửa sổ mã.
  • Sau đó, sao chép đoạn mã sau và dán vào cửa sổ mã.
2302

Mã của bạn hiện đã sẵn sàng để chạy.

  • Sau đó, Chạy mã này và xem hình ảnh sau đây để xem điều gì đã xảy ra.

Như bạn có thể thấy từ hình trên, có một cửa sổ bật lên Microsoft Excel hộp thông báo hiển thị cho bạn Marks: 84 of ID: 105 Name: Finn mà chúng tôi đã cung cấp bên trong mã.

Giải thích mã VBA

6212

Xác định các biến.

5336

Đặt tên trang tính và tên bảng bên trong các biến.

6673

Lưu trữ các giá trị tra cứu và các cột tra cứu để tìm kiếm.

4112

Đoạn mã này quét từ đầu đến cuối của chỉ số dưới và nếu nó tìm thấy sự trùng khớp giữa ID đã xác định và Tên trong các cột tìm kiếm thì lưu trữ kết quả và đóng tất cả các báo cáo. Ngoài ra, hãy thoát khỏi bước lặp và chuyển đến phần tiếp theo của mã.

2132

Trả kết quả vào MsgBox.

Đọc thêm: Tra cứu và trả về Nhiều giá trị được nối vào một ô trong Excel

Kết luận

Để kết luận, bài viết này đã chỉ cho bạn 3 phương pháp khác nhau về cách thực hiện Dựa trên INDEX MATCH trên nhiều tiêu chí trong Excel với macro VBA . Tôi hy vọng bài viết này đã rất hữu ích cho bạn. Vui lòng đặt bất kỳ câu hỏi nào liên quan đến chủ đề này.

Hugh West là một nhà phân tích và huấn luyện viên Excel giàu kinh nghiệm với hơn 10 năm kinh nghiệm trong ngành. Ông có bằng Cử nhân Tài chính Kế toán và bằng Thạc sĩ Quản trị Kinh doanh. Hugh có niềm đam mê giảng dạy và đã phát triển một phương pháp giảng dạy độc đáo, dễ hiểu và dễ theo dõi. Kiến thức chuyên môn về Excel của ông đã giúp hàng nghìn sinh viên và chuyên gia trên toàn thế giới cải thiện kỹ năng và xuất sắc trong sự nghiệp của họ. Thông qua blog của mình, Hugh chia sẻ kiến ​​thức của mình với mọi người, cung cấp các hướng dẫn Excel miễn phí và đào tạo trực tuyến để giúp các cá nhân và doanh nghiệp phát huy hết tiềm năng của họ.