Posting ini mencakup semua yang perlu Anda ketahui tentang fungsi VBA Find. Ini menjelaskan, cara menggunakan Temukan, dalam istilah sederhana. Ini juga memiliki banyak contoh kode Temukan yang dapat Anda gunakan sekarang Show
Jika Anda ingin langsung ke contoh Temukan kemudian periksa Jika Anda ingin menelusuri teks dalam string, maka Anda mencari fungsinya Jika Anda ingin menemukan baris atau kolom terakhir dengan data, buka
Unduh Kode Sumber
Apa itu Fungsi Temukan VBA?Fungsi Find sangat umum digunakan di VBA. Tiga hal terpenting yang perlu diketahui tentang Find adalah
pengantar
Dialog Temukan ExcelUntuk melihat dialog Temukan Excel, buka pita Beranda dan klik Temukan & Pilih di bagian Pengeditan. Di menu yang muncul, pilih Temukan (pintasannya adalah Ctrl + F) Cara Menggunakan Opsi Dengan TemukanUntuk menggunakan opsi, Anda meneruskannya sebagai parameter ke fungsi Temukan. Ini mirip dengan cara Anda menggunakan fungsi lembar kerja. Misalnya, fungsi Sum memiliki Range sebagai parameter. Ini berarti Anda memberikan rentang saat Anda menggunakannya VBA Find menggunakan parameter dengan cara yang sama. Anda harus memberikan barang yang Anda cari. Ini adalah parameter pertama dan diperlukan Parameter lainnya adalah opsional. Jika Anda tidak menggunakannya maka Find akan menggunakan setelan yang ada. Kami akan melihat lebih banyak tentang ini segera Tabel di bagian selanjutnya menunjukkan parameter ini. Bagian selanjutnya, memberikan contoh dan detail tentang cara menggunakan parameter ini VBA Temukan ParameterTabel berikut menampilkan semua parameter Temukan Parameter TypeDescriptionValuesRequiredNilai yang Anda cari Tipe data VBA apa saja e. g String, LongOpsionalRangkaian sel tunggal tempat Anda memulai pencarianRentang("A5")OpsionalApa yang dicari di e. g. Formulas, Values or CommentsxlValues, xlFormulas, xlCommentsOptionalLihat bagian atau keseluruhan selxlWhole, xlPartOptionalUrutan untuk mencarixlByRows atau xlByColumns. OpsionalArah untuk menelusurixlBerikutnya, xlSebelumnyaOpsionalJika penelusuran peka huruf besar/kecilBenar atau SalahOpsionalDigunakan untuk bahasa bita gandaBenar atau SalahOpsionalIzinkan penelusuran berdasarkan format. Format diatur menggunakan Aplikasi. FindFormatTrue atau False Catatan Penting tentang Temukan ParameterIngatlah hal-hal berikut karena dapat menyebabkan banyak frustrasi saat menggunakan Temukan Seperti yang Anda lihat dari tabel, sebagian besar parameter VBA Find bersifat opsional. Seperti yang kami katakan sebelumnya, jika Anda tidak mengatur parameter Temukan, itu menggunakan pengaturan yang ada Misalnya, jika Anda menyetel parameter LookIn ke xlComments, nilai hanya akan dicari dalam komentar. Lain kali Anda menjalankan Temukan (baik dari Dialog atau dari VBA), setelan LookIn yang ada akan menjadi Komentar Kode berikut menunjukkan contohnya ' Search in comments only Range("A1:A5").Find "John", LookIn:=xlComments ' Will search comments as this is the existing setting Range("A1:A5").Find "John" ' Search in formulas only Range("A1:A5").Find "John", LookIn:=xlFormulas ' Will search formulas as this is the existing setting Range("A1:A5").Find "John" Temukan Nilai PengembalianJika item pencarian ditemukan, Temukan mengembalikan sel dengan nilainya. Artinya, ini mengembalikan tipe Range dari satu sel Jika item pencarian tidak ditemukan maka Temukan mengembalikan objek yang disetel ke Tidak Ada Dalam contoh berikut, Anda akan melihat cara menangani nilai kembalian Cara melakukan Pencarian SederhanaMari kita mulai dengan contoh sederhana dari VBA Find. Anda memerlukan tiga hal saat menggunakan fungsi Temukan
Kode berikut mencari "Jena". Saat menemukan "Jena", sel akan ditempatkan di variabel rgFound ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_ Jika Anda ingin mencoba contoh-contoh ini, Anda dapat mengunduh buku kerja dari pos ini Ketika Nilai tidak DitemukanSaat Anda menggunakan fungsi VBA Find, akan ada saatnya Anda tidak menemukan kecocokan. Anda perlu menangani ini dalam kode Anda atau Anda akan mendapatkan kesalahan berikut saat mencoba menggunakan rentang yang dikembalikan Set rgFound = Range("A1:A5").Find("John") ' Shows Error if John was not found Debug.Print rgFound.Address Set rgFound= Range("A1:A5").Find("John") If rgFound Is Nothing Then Debug.Print "Name was not found." Else Debug.Print "Name found in :" & rgFound.Address End If Menggunakan Setelah dengan TemukanParameter Setelah digunakan jika Anda ingin memulai pencarian dari sel tertentu. Saat, Dialog Temukan Excel digunakan, sel aktif dianggap sebagai sel Setelah. Dengan kata lain, sel ini adalah titik awal pencarian. Di VBA, jika tidak ada parameter After yang ditentukan maka pencarian dimulai di sel kiri atas rentang Contoh 1 Tanpa SetelahMari kita lihat kode berikut Set cell = Range("A1:A6").Find("Rachal")_ Contoh 2 Menggunakan SetelahPada contoh berikutnya, kita menggunakan after. Kami memberi tahu VBA untuk memulai penelusuran "Rachal" setelah sel A2 Set cell = Range("A1:A6").Find("Rachal", After:=Range("A2")) Contoh 3 MembungkusJika kecocokan tidak ditemukan maka pencarian akan “memutar”. Ini berarti akan kembali ke awal rentang Dalam contoh berikut, kami mencari Drucilla. Kami memulai pencarian kami Setelah sel A2. Temukan akan mencari dari A3 ke A6 dan kemudian akan berpindah ke A1 Jadi kode berikut akan mengembalikan A1 karena tidak ada teks "Drucilla" dari A3 ke A6 Set cell = Range("A1:A6").Find("Drucilla", After:=Range("A2"))_ Menggunakan LookIn dengan TemukanMenggunakan LookIn memungkinkan Anda mencari di Nilai, Rumus, atau Komentar Catatan Penting. Jika sel hanya memiliki teks, teks ini dianggap sebagai rumus DAN nilai. Lihat tabel di bawah untuk detailnya Nilai Sel BerisiResultLookIn adalahAppleAppleValue dan Formula="App" & "le"'AppleValue only=LEFT("Apple",4)'ApplFormula saja A2 Berisi "Apple" sebagai nilai saja Untuk melihat contoh kerja kode ini, Anda dapat mengunduh kode sumber dari posting ini ' Searches in value, formula, threaded comment and note. ' https://excelmacromastery.com/excel-vba-find/ Sub UseLookIn() ' Finds A2 Dim rgFound As Range Set rgFound = shLookin.Range("A1:A5").Find("Apple", LookIn:=xlValues) Debug.Print "Found 'Apple' as value in: " & rgFound.Address ' Finds A3 Set rgFound = shLookin.Range("A1:A5").Find("Apple", LookIn:=xlFormulas) Debug.Print "Found 'Apple' as formula in: " & rgFound.Address ' Finds A4 Set rgFound = shLookin.Range("A1:A5").Find("Apple", LookIn:=xlCommentsThreaded) Debug.Print "Found 'Apple' as comment threaded in: " & rgFound.Address ' Finds A5 Set rgFound = shLookin.Range("A1:A5").Find("Apple", LookIn:=xlNotes) Debug.Print "Found 'Apple' as note in: " & rgFound.Address End Sub Menggunakan LookAt dengan TemukanMenggunakan fungsi LookAt cukup mudah
' https://excelmacromastery.com/ Sub UseLookAt() Dim cell As Range ' Finds A2 Set cell = Range("A1:A3").Find("Apple", Lookat:=xlPart) Debug.Print cell.Address ' Finds A3 Set cell = Range("A1:A3").Find("Apple", Lookat:=xlWhole) Debug.Print cell.Address End Sub_ Menggunakan SearchOrder dengan TemukanParameter SearchOrder memungkinkan kita untuk mencari berdasarkan baris atau kolom. Dalam contoh data berikut, kami memiliki dua kemunculan teks "Elli" Jika kita mencari berdasarkan kolom, kita akan menemukan "Elli" di A5 terlebih dahulu. Ini karena kita mencari dengan urutan kolom A, Kolom B dst ' https://excelmacromastery.com/ Sub UseSearchOrder() Dim cell As Range ' Finds B2 Set cell = Range("A1:B6").Find("Elli", SearchOrder:=xlRows) Debug.Print cell.Address ' Finds A5 Set cell = Range("A1:B6").Find("Elli", SearchOrder:=xlColumns) Debug.Print cell.Address End Sub_ Menggunakan SearchDirection dengan TemukanSearchDirection memungkinkan Anda untuk menelusuri maju atau mundur. Jadi bayangkan Anda memiliki rentang A1. A7. Pencarian menggunakan xlNext akan masuk dalam urutan A1, A2, A3, A4, A5, A6, A7 Pencarian menggunakan xlPrevious akan dilakukan sesuai urutan A7, A6, A5, A4, A3, A2, A1 ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_0 Menggunakan xlPrevious dengan SetelahJika Anda menggunakan parameter dengan xlPrevious maka akan dimulai sebelumnya dari sel Setelah. Jadi jika setelah sel kita atur menjadi A6 maka urutan pencariannya adalah A5,A4,A3,A2,A1,A7,A6 Kode berikut menunjukkan contohnya ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_1 Menggunakan MatchCase dengan FindParameter MatchCase digunakan untuk menentukan apakah kasus huruf penting dalam pencarian. Itu dapat diatur ke True atau False
' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_2 Menggunakan MatchByte dengan TemukanParameter MatchByte digunakan untuk bahasa dengan kumpulan karakter byte ganda. Ini adalah bahasa seperti Cina/Jepang/Korea Jika Anda tidak menggunakannya maka parameter ini tidak relevan. Mereka digunakan sebagai berikut
Menggunakan Wild CardKita bisa menggunakan simbol asterisk (*) sebagai wild card saat mencari teks. Tanda bintang mewakili satu atau lebih karakter Kode di bawah menunjukkan contoh penggunaan wildcard berdasarkan data ini ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_3
Menggunakan SearchFormat dengan TemukanFormat Pencarian sedikit berbeda dari parameter lainnya. Ini memungkinkan Anda untuk mencari format sel seperti jenis font atau warna sel Anda perlu mengatur format terlebih dahulu dengan menggunakan Aplikasi. properti FindFormat. Kemudian Anda menyetel SearchFormat ke True untuk mencari format ini Dalam data sampel berikut, kami memiliki dua sel yang diformat. Sel A5 diatur ke Bold dan Sel A6 memiliki warna isian yang diatur ke merah ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_4
Menggunakan Wild Card dengan FormatAnda dapat mencari sel berdasarkan format saja. Dengan kata lain, nilai dalam sel diabaikan dalam pencarian. Caranya dengan menempatkan “*” di string pencarian Kode berikut mencari sel yang diformat – warna sel dalam contoh ini diatur ke merah. Isi sel tidak masalah ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_5 Penting – Format KliringSaat Anda menyetel atribut FindFormat, atribut tersebut tetap di tempatnya hingga Anda menyetelnya lagi. Ini adalah sesuatu yang harus diwaspadai. Misalnya, bayangkan Anda menyetel format menjadi tebal lalu menggunakan Temukan. Kemudian Anda mengatur format ke ukuran font 12 dan menggunakan Temukan lagi. Pencarian akan mencari sel yang fontnya tebal DAN berukuran 12 Oleh karena itu, sebaiknya hapus formatnya sebelum Anda menggunakannya seperti yang telah saya lakukan pada contoh di atas ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_6 Beberapa PencarianDalam banyak kasus, Anda ingin mencari beberapa kejadian dengan nilai yang sama. Untuk melakukan ini, kami menggunakan fungsi Temukan terlebih dahulu. Kemudian kita menggunakan. Fungsi FindNext untuk menemukan item berikutnya ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_7 Kami menggunakan Temukan untuk mendapatkan item pertama. Jika kami menemukan item, kami kemudian menggunakan Do Loop. FindNext untuk menemukan kejadian lainnya FindNext akan selesai. Artinya, setelah menemukan A9 maka akan melanjutkan pencarian di A1. Oleh karena itu, kami menyimpan alamat sel pertama yang kami temukan. Saat FindNext mengembalikan sel ini lagi, kami tahu bahwa kami telah menemukan semua item Kode berikut akan menemukan semua kemunculan Elli ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_8 Menemukan Sel Terakhir yang Mengandung DataTugas yang sangat umum di VBA adalah menemukan sel terakhir yang berisi data dalam satu baris atau kolom. Ini tidak menggunakan fungsi VBA Find. Sebagai gantinya, kami menggunakan kode berikut untuk menemukan baris terakhir dengan data ' Find the name Jena in the range A1:A5 Dim rgFound As Range Set rgFound = Range("A1:A5").Find("Jena") ' Print cell address to Immediate Window(Ctrl + G) Debug.Print rgFound.Address_9 Set rgFound = Range("A1:A5").Find("John") ' Shows Error if John was not found Debug.Print rgFound.Address0 Menemukan Sel dengan PolaJika Anda ingin menemukan sel dengan pola tertentu maka Anda harus menggunakan operator, bukan Cari Misalnya, untuk menemukan semua nama yang dimulai dengan E, Anda dapat menggunakan kode berikut Set rgFound = Range("A1:A5").Find("John") ' Shows Error if John was not found Debug.Print rgFound.Address1 Untuk melihat contoh dunia nyata menggunakan pencocokan pola, periksa Alternatif untuk menggunakan VBA FindJika Anda mengharapkan klik dalam jumlah besar, menggunakan larik adalah opsi yang lebih baik. Anda dapat membaca rentang sel ke array dengan sangat cepat dan efisien Kode berikut membaca nilai sel ke array dan kemudian membaca array untuk menghitung item Set rgFound = Range("A1:A5").Find("John") ' Shows Error if John was not found Debug.Print rgFound.Address2 Temukan dan gantiUntuk menemukan dan Mengganti, Anda dapat menggunakan fungsi Ganti. Ini sangat mirip dengan menggunakan fungsi Temukan Fungsi ganti berada di luar cakupan posting ini meskipun banyak dari apa yang Anda baca di sini dapat digunakan dengannya. Anda dapat melihat detailnya di Microsoft – VBA Replace Function Apa berikutnya?Tutorial VBA Gratis Jika Anda baru mengenal VBA atau ingin mempertajam keterampilan VBA yang ada, mengapa tidak mencoba Tutorial VBA Utama Pelatihan Terkait. Dapatkan akses penuh ke webinar pelatihan Excel VBA dan semua tutorialnya (CATATAN. Berencana membangun atau mengelola Aplikasi VBA? . ) Bagaimana cara membuat makro pencarian di Excel?Untuk melakukannya, cukup klik kanan tombol Anda dan pilih Assign Macro . Kotak Dialog Tetapkan Makro akan muncul dan Anda ingin mencari & memilih nama makro Anda (dalam hal ini "Kotak Pencarian"). Setelah Anda menyorot nama makro Anda dan mengklik OK, setiap kali Anda mengklik tombol pencarian, makro pemfilteran Anda akan berjalan.
Bagaimana cara mencari teks di makro Excel?Mencari Data di Excel . Klik Rekam makro di grup Kode di Pengembang Masukkan nama, deskripsi, dan tombol pintasan untuk makro Anda Lakukan pencarian untuk departemen yang ingin Anda edit menggunakan CTRL+F dan kotak dialog Temukan/Ganti Bagaimana menemukan nilai dalam lembar menggunakan VBA?Gunakan Temukan untuk memilih sel
. Contoh ini akan memilih sel pertama dalam rentang dengan nilai InputBox. Jika Anda memiliki lebih dari satu kemunculan nilai, ini akan memilih kemunculan terakhir.
Apakah Xlookup adalah makro?Ini adalah makro yang relatif sederhana karena fungsi XLOOKUP mengembalikan rentang. Ini terjadi di latar belakang. Kami hanya melihat nilai yang dikembalikan oleh rumus di dalam sel. Namun, kita dapat menggunakan VBA untuk mendapatkan rentang yang dikembalikan oleh XLOOKUP. |