Как да намерите точно съвпадение с помощта на VBA в Excel (5 начина)

  • Споделя Това
Hugh West

Ако търсите някои от най-лесните начини за намиране на точно съвпадение чрез VBA , тогава тази статия ще ви бъде полезна. И така, нека да започнем статията и да се запознаем с начините за намиране на точно съвпадение.

Изтегляне на работна тетрадка

VBA Намиране на точно съвпадение.xlsm

5 начина за намиране на точно съвпадение чрез 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 ефективно. Надявам се, че ще ви бъде полезно. Ако имате някакви предложения или въпроси, не се колебайте да ги споделите с нас.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.