Mục lục
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 và 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ể và 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, và Đ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 và 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 và Đ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 và 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) và 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 và 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 và ID bên trong mã. Đối với trường hợp của chúng ta, Name và ID sẽ lần lượt là Finn và 105 .
Các bước :
- Đầu tiên, mở Trình soạn thảo Visual Basic từ tab Nhà phát triển và 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 và 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.