Съдържание
Ако търсите някои от най-лесните начини за намиране на точно съвпадение чрез VBA , тогава тази статия ще ви бъде полезна. И така, нека да започнем статията и да се запознаем с начините за намиране на точно съвпадение.
Изтегляне на работна тетрадка
VBA Намиране на точно съвпадение.xlsm5 начина за намиране на точно съвпадение чрез VBA
Използвах следната таблица, в която са записани резултатите на някои ученици. Ще обясня различни начини за намиране на точното съвпадение, като използвам тази таблица с помощта на VBA.
За тази цел използвах версията на Microsoft Excel 365, като можете да използвате и други версии според удобството си.
Метод-1: Намиране на точно съвпадение в диапазон от клетки
Ако искате да намерите точно съвпадение на низ, например името на ученик, и след това да намерите позицията на клетката на този ученик, можете да направите това, като следвате този метод.
Тук ще намеря точно съвпадение за ученика с име "Joseph Micahel" .
Стъпка-01 :
➤Отидете на Разработчик Tab>> Visual Basic Опция
След това Редактор на Visual Basic ще се отвори.
➤Отидете на Вмъкване на Tab>> Модул Опция
След това Модул ще бъдат създадени.
Стъпка-02 :
➤Напишете следния код
Sub searchtxt() Dim rng As Range Dim str As String Set rng = Sheets("exact match").Range("B5:B10").Find("Joseph Michael", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address MsgBox (rng & " in " & str) End If End Sub
Тук, "точно съвпадение" е името на листа, а "B5:B10" е обхватът от имена на ученици, а "Джоузеф Майкъл" е името на ученика, което трябва да се открие.
rng е деклариран като обект от обхвата и str като низови променливи за съхраняване на адреса на търсения елемент.
Сайтът IF ще присвои адреса на елемента към str променлива.
➤Press F5
Резултат :
След това ще получите следното Кутия за съобщения съдържащ позицията на клетката на ученика с име "Джоузеф Майкъл" .
Прочетете повече: Намиране в диапазон с VBA в Excel: Включване на точни и частични съвпадения
Метод-2: Намиране на точно съвпадение и заместване с помощта на VBA
Ще покажа начина, по който да намерите посоченото име на ученика и след това да го замените с друго име, защото по някаква грешка това име е било написано тук. Можете да намерете желания низ и го заменете като следвате този метод.
Стъпка-01 :
➤Последвайте Стъпка-01 на Метод-1
Sub FindandReplace() Dim rng As Range Dim str As String With Worksheets("find&replace").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With End Sub
Тук, "find&replace" е името на листа, а "B5:B10" е обхватът от имена на ученици, а "Доналд Пол" е името на ученика, което трябва да се открие, и след това "Хенри Джаксън" ще бъде името на ученика вместо предишното.
С ще се избегне повтарянето на частта от кода във всяка декларация.
Сайтът IF ще присвои адреса на елемента към str и променливата DO Цикълът ще замени всички срещания на търсената дума.
➤Press F5
Резултат :
След това ще получите името на новия ученик като "Хенри Джаксън" .
Метод-3: Намиране на точно и чувствително към регистъра съвпадение
Ако искате да намерите съвпадение, което се определя от малкия и големия размер на буквите, следвайте този метод. Тук имам две имена, които си приличат, но има разлика в регистъра и в зависимост от регистъра ще заменя името на последния ученик.
Стъпка-01 :
➤Последвайте Стъпка-01 на Метод-1
Sub exactmatch() Dim rng As Range Dim str As String With Worksheets("case-sensitive").Range("B5:B10") Set rng = .Find("Donald Paul", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) If Not rng Is Nothing Then str = rng.Address Do rng.Value = Replace(rng.Value, "Donald Paul", "Henry Jackson") Set rng = .FindNext(rng) Loop While Not rng Is Nothing End If End With EndПод
Тук, "чувствителен към големи и малки букви" е името на листа, а "B5:B10" е обхватът от имена на ученици, а "Доналд Пол" е името на ученика, което трябва да се открие, и след това "Хенри Джаксън" ще бъде името на ученика вместо предишното.
С ще се избегне повтарянето на частта от кода във всяка декларация.
Сайтът IF ще присвои адреса на елемента към str и променливата DO Цикълът ще замени всички срещания на търсената дума.
➤Press F5
Резултат :
Сега, според случая, името на ученика ще бъде променено на "Хенри Джаксън" .
Подобни четива:
- Как да намерите низ в клетка с помощта на VBA в Excel (2 метода)
- Намиране на VBA в колона в Excel (7 подхода)
- Как да намерите низ с VBA в Excel (8 примера)
Метод-4: Използване на функцията InStr
Да предположим, че искате да съответствате на Преминете през или Не води кореспонденция към имената на учениците в зависимост от Колона с резултати където Преминете през или Fail За да намерите този низ в Колона с резултати и запишете "Приет" в Колона за състоянието за учениците, които са положили успешно изпита, можете да използвате функцията InStr .
Стъпка-01 :
➤Последвайте Стъпка-01 на Метод-1
Sub Checkstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.Value, "Pass")> 0 Then cell.Offset(0, 1).Value = "Passed" Else cell.Offset(0, 1).Value = " " End If Next cell End Sub
Тук обхватът на клетките е C5:C10 което е Колона с резултати
InStr(cell. value, "Pass")> 0 е условието, при което числото е по-голямо от нула (когато клетката съдържа "Pass" ), тогава следващият ред ще продължи и ще даде резултата в съседната клетка като Преминато .
Ако условието стане невярно, означава, че клетката не съдържа "Pass" след това редът под ИЛИ ще се изпълни и ще даде изходната стойност в съседната клетка като Празна страница .
Този цикъл ще продължи за всяка клетка.
➤Press F5
Резултат :
След това ще получите "Приет" статут за успешно преминалите ученици.
Метод-5: Намиране на точно съвпадение и извличане на данни
Ако искате да извлечете съответните данни за ученик с име "Майкъл Джеймс" тогава можете да следвате този метод.
Стъпка-01 :
➤Последвайте Стъпка-01 на Метод-1
Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael James")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Тук съм използвал B100 като Диапазон на активния лист (можете да използвате всякакъв диапазон според употребата си).
InStr(1, Range("B" & i), "Michael James")> 0 е условието за проверка дали клетката в колона B съдържа Майкъл Джеймс .
Range("E" & icount & ":G" & icount) е обхватът, в който искате да получите изходните данни, а Range("B" & i & ":D" & i).value ще даде стойностите от колоната B към D .
➤Press F5
Резултат :
След това ще получите следните извлечени данни за учениците с име Майкъл Джеймс .
Практически раздел
За да практикувате сами, сме предоставили Практика раздел, както е показано по-долу, в лист с име Практика . Моля, направете го сами.
Заключение
В тази статия се опитах да опиша най-лесните начини за намиране на точно съвпадение с помощта на VBA в Excel ефективно. Надявам се, че ще ви бъде полезно. Ако имате някакви предложения или въпроси, не се колебайте да ги споделите с нас.