Excel VBA Find
Когато използваме Find в нормален работен лист, натискаме клавишната комбинация CTRL + F и въвеждаме данните, които трябва да намерим и ако не желаната стойност отиваме към следващото съвпадение, ако има много такива съвпадения, това е досадна задача, но когато ние използваме FIND във VBA, той изпълнява задачите вместо нас и ни дава точното съвпадение и отнема три аргумента, единият е какво да намерим, къде да намерим и къде да погледнем.
Преди да преминем към VBA и да започнем да използваме функцията за търсене в макроси, трябва първо да научим какво е функцията за намиране в Excel. В нормален Excel в раздела Начало под групата за редактиране можем да намерим функция за намиране, която се използва за намиране на низ или стойност в диапазон от клетки или цял работен лист.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_2.png.webp)
Когато кликнем върху това, получаваме две възможности;
Единият е лесен за намиране,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_3.png.webp)
Виждаме, че има и режим на опции, който отваря друга функция.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_4.png.webp)
Той прави алгоритъма за търсене с четири ограничения: Намери какво, Вътре, Търси и погледни.
Втората опция в Excel е да се намери и замени, което се използва, когато намерим низ, но какво да го заменим с друга стойност,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_5.png.webp)
Намерете синтаксис на функцията
По-горе научихме какво е Find in basic excel. Във VBA пишем кодове ръчно, но характеристиките са същите като нормалните Excel. Първо, нека разгледаме синтаксиса.
Expression.Find (What, lookin, ….)
Ако стойността, която търсим, бъде намерена с функцията excel, тя връща клетката, където е стойността, а ако стойността не е намерена, тогава обектът на функцията не е зададен на нищо.
Изразите в макросите са дефинирани диапазони, като диапазон 1 или диапазон 2. Какво представлява ключова дума за това, което искаме да търсим за конкретна стойност? Lookin е ключова дума за това, което се опитваме да търсим, дали е коментар, формула или низ. По подобен начин има и други ограничения във функцията Find, които не са задължителни. Единственото задължително поле е това, което е стойност, която се опитваме да търсим.
По принцип VBA намира, че Excel има един задължителен аргумент, който е Каква стойност искаме да търсим. Останалите ограничения не са задължителни и има много ограничения във функцията за търсене. Функцията за намиране е подобна на функцията за намиране в Excel.
Параметърът за функцията за търсене е диапазонът от клетки, като в кой диапазон искаме да намерим стойност. Това може да бъде няколко колони или няколко клетки или цял работен лист.
Примери
Пример # 1
Да предположим, че нашите данни имат следните стойности
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_6.png.webp)
Ще се опитаме да намерим „Аран“ в същите данни.
- За да напишете VBA код, е необходимо да сте активирали раздела за разработчици в Excel, за да можете да пишете VBA кодове.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_7.png.webp)
- Започваме да пишем нашия код, като пишем следния код, както е показано по-долу,
Подпроба () DimFindS As String
Dim
Rng As Range FindS = InputBox („Въведете стойността, която искате да търсите“)
С Sheets („Sheet1“). Обхват („A: A“)
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_8.png.webp)
- Примерът е името на функцията, дадено на под.
- Find е низът, който искаме да търси потребителят, който искаме да въведем.
- Rng е променливата, която взехме за диапазона.
- Сега ние молим потребителя да въведе стойността, която прилича на екранната снимка по-долу,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_9.png.webp)
- Сега ще определим нашата функция за търсене в модула.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_10.png.webp)
- Функцията намира стойността, въведена от потребителя в дадения диапазон.
- Сега затваряме функцията чрез следните аргументи.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_11.png.webp)
- Сега, ако първо стартираме нашия код, той ще поиска подкана от потребителя за стойност.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_9.png.webp)
- След като кодът е завършен, той връща клетката там, където са намерени данните.
Пример # 2
В горния пример имаше четири уникални имена, но какво, ако в данните имаше повече от едно име, като разгледаме данните по-долу,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_12.png.webp)
Виждаме, че името Аран се повтаря два пъти в горните данни. Ако excel трябва да намери името Aran, ще го намери в клетка A2 и ще спре, но има друга стойност, подобна на тази на A2 в клетка A6. Как да извлека тази стойност? Тук идва синтаксисът на Find (What, After) в помощ.
След като дефинира клетката, след която препратка, искаме да търсим данните.
Нека напишем кода за горните данни.
- Винаги не забравяйте да активирате раздела за програмисти от опции и след това от персонализиране на лентата в Excel, за да можете да напишете кода във VBA.
- Във VBA получаваме обекти на Microsoft Excel, което е модул, в който пишем кодовете.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_13.png.webp)
- Преди работихме върху лист 1; сега работим върху лист 2, така че изберете лист 2 за друг модул и се появява празна страница.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_14.png.webp)
- Сега започнете да пишете кода, като дефинирате функцията първо като SUB Sample2 () и натиснете enter.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_15.png.webp)
- Сега дефинирахме нашата функция; ще започнем да навлизаме в основната част, която определя нашите променливи.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_16.png.webp)
- Определете какво трябва да има променливата Find,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_17.png.webp)
- Изберете листовете, по които работим, което е лист 2 в този пример,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_18.png.webp)
- Сега ще намерим текста, какъвто потребителят въведе след клетката А2, така че дефинираме нашата функция за намиране, както по-долу,
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_19.png.webp)
- Сега затваряме кода, като завършваме с условията if и if.
![](https://cdn.know-base.net/6917427/vba_find_function_how_to_use_vba_find_function_examples_20.png.webp)
Това, което прави горният код, е да търси низа след клетката A2 и да връща клетката навсякъде, където е намерена.
Неща за запомняне
- Първо, първо трябва да активираме раздела за програмисти, за да използваме VBA.
- Каква е конкретната стойност, която трябва да намерим?
- Ако стойността не бъде намерена, обектът на функцията не е зададен на нищо.