Как да намерим подниз с помощта на VBA (9 начина)

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

Ако търсите някои от най-лесните начини за намиране на подниз с помощта на VBA, значи сте на правилното място. След като преминете през тази статия, ще можете лесно да намирате позицията на подниз или да извличате данни, използвайки този подниз, или да променяте формата на подниз. Нека да преминем към статията.

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

Съдържание на примера

9 начина за намиране на подниз с помощта на VBA

Тук имам следната таблица с данни, чрез която ще покажа начините за намиране на подниз в низ с помощта на VBA. Ще се опитам да покажа и начините за намиране на подниз в произволен низ.

Изпълних тази задача с помощта на Microsoft Excel 365 версия, можете да използвате всяка друга версия според удобството си.

Метод-1: Намиране на подниз в низ с помощта на VBA

Ако искате да намерите желания подниз в низ с помощта на VBA, можете да използвате функцията InStr в кода VBA.

Стъпка-01 :

➤Отидете на Разработчик Tab>> Visual Basic Опция

След това Редактор на Visual Basic ще се отвори.

➤Отидете на Вмъкване на Tab>> Модул Опция

След това Модул ще бъдат създадени.

Стъпка-02 :

➤Напишете следния код

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "Мисля, че затова съм", "мисля") MsgBox Pos End Sub 

Тук, InStr(1, "Мисля, следователно съм", "мисля") ще върне позицията на подниза на даден низ. 1 е началната позиция, " Мисля, следователно съм" е низът, в който ще намерите желания подниз, а "мисля" по подразбиране е чувствителен към малки и големи букви, така че внимавайте за регистъра на подниза, който искате да търсите.

➤Press F5

Резултат :

След това ще получите следното Кутия за съобщения съдържащ позицията на "мисля" подниз.

Метод-2: Намиране на подниз, чувствителен към малкия и големия размер на буквите, в низ

Ако искате да намерите желания подниз в низ, независимо от случая, като използвате VBA, следвайте този метод.

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub 

Тук, vbTextCompare се използва за намиране на подниз без значение на размера на буквите.

➤Press F5

Резултат :

След това ще получите следното Кутия за съобщения съдържащ позицията на "мисля" подниз.

Можете да направите същото, като използвате следния код.

 Опция Сравняване на текст Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub 

Тук, Сравняване на опции Текст ще намери подниз, който не се различава по размер на буквите.

➤Press F5

Резултат :

След това ще получите следното. Кутия за съобщения съдържащ позицията на "мисля" подниз.

Метод-3: Използване на функцията InstrRev във VBA

Тук ще покажа начина за намиране на подниз от края на даден низ.

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Sub FindFromEnd() MsgBox InStrRev("Мисля, следователно съм", "I") End Sub 

InStrRev ще намери подниза от дясната страна, вместо от лявата.

➤Press F5

Резултат :

След това ще получите следното Кутия за съобщения съдържащ позицията на втория "I" подниз от дясната страна.

Метод-4: Намиране на позицията на подниз в низ в диапазон от данни

Ако искате да намерите специалния символ "@" в Идентификатор на електронна поща След това следвайте този метод. Тук съм добавил Колона за позиция за тази цел.

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Функция FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Тя ще създаде функция с име FindSubstring (можете да използвате всяко друго име)

стойност е препратката към клетката, която съдържа символния низ, и е декларирана като Обхват .

Стъпка-02 :

➤Изберете изхода Клетка E5

➤Типирайте следната функция (създадена от VBA )

=Намери подниз(D5)

D5 е клетката, която съдържа символния низ.

➤Press ВЪВЕДЕТЕ

➤Привлечете надолу Дръжка за пълнене Инструмент

Резултат :

След това ще получите позициите на специалния символ " @" в Идентификатор на електронна поща .

Подобни четива:

  • Как да намерите низ в клетка с помощта на VBA в Excel (2 метода)
  • Намиране на следващо с помощта на VBA в Excel (2 примера)
  • Как да намерите низ с VBA в Excel (8 примера)
  • VBA Намиране на последния ред в Excel (5 начина)

Метод-5: Проверка на определен подниз в низ в диапазон от данни

Да предположим, че искате да напишете Преминете през или Не води кореспонденция към имената на учениците в зависимост от Колона с резултати където Преминете през или Fail е изписан в скоба. За да намерите този подниз в Колона с резултати и го запишете в Колона за преминаване или отпадане следвайте този метод.

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Sub CheckSubstring() 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 = "Failed" End If Next cell End Sub 

Тук обхватът на клетките е C5:C10 което е Колона с резултати

InStr(cell.value, "Pass")> 0 е условието, при което числото е по-голямо от нула (когато клетката съдържа "Pass" ), тогава следващият ред ще продължи и ще даде резултата в съседната клетка като Преминато .

Ако условието стане невярно, означава, че клетката не съдържа "Pass" след това редът под В противен случай ще се изпълни и ще даде изходната стойност в съседната клетка като Неуспешен .

Този цикъл ще продължи за всяка клетка.

➤Press F5

Резултат :

След това ще получите следните резултати в Преминаване или отказ колона.

Метод-6: Проверка на определен подниз в низ и извличане на данни

Ще покажа как да намерите учениците с имена Майкъл в Колона с името на ученика и да извлечете съответните данни с помощта на VBA по този метод.

Стъпка-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")> 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")> 0 е условието за проверка дали клетката в колона B съдържа Майкъл

Range("E" & icount & ":G" & icount) е обхватът, в който искате да получите изходните данни, а Range("B" & i & ":D" & i).value ще даде стойностите от колоните B към D .

➤Press F5

Резултат :

След това ще получите следните извлечени данни за учениците с име Майкъл .

Метод-7: Търсене на подниз за дума

Ако искате да намерите подниз като дума, следвайте този метод.

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Sub Stringforword() Dim j As Integer j = InStr("Ето какво съм аз", "е") If j = 0 Then MsgBox "Думата не е намерена" Else MsgBox "Думата е намерена в позиция: " & j End If End Sub 

Ще се провери дали низът съдържа е и след това позицията му ще бъде дадена

➤Press F5

Резултат :

След това ще получите следното съобщение, което показва дума, намерена в позиция: 6 (позицията на е ).

Можете да изпробвате този код за дума, която не се съдържа в низа.

➤Въведете следния код

 Sub Stringforword() Dim j As Integer j = InStr("Ето какво съм аз", "са") If j = 0 Then MsgBox "Думата не е намерена" Else MsgBox "Думата е намерена в позиция: " & j End If End Sub 

➤Press F5

Резултат :

След това ще получите следното съобщение, което показва думата не е намерена .

Метод-8: Използване на функциите Instr и LEFT

Тук ще обясня начина за намиране на позицията на подниз в низ и извличане на текстовете преди този подниз с помощта на VBA и функцията LEFT .

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Ето какво съм аз" j = InStr(txt, "е") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "is") е позицията на подниза е и Вляво(txt, j - 1) ще извлече поднизите преди е .

➤Press F5

Резултат :

След това ще получите следното съобщение, което показва Тук (подниз преди е ).

Метод-9: Удебеляване на определен подниз в низ

Можете да удебелявате оценките пред скобите в Колона с резултати като следвате този метод.

Стъпка-01 :

➤Последвайте Стъпка-01 на Метод-1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Cell, "(") ще върне позицията на първата скоба, а Cell.Characters(1, txt - 1).Font.Bold ще направи поднизът преди първата скоба Bold .

Стъпка-02 :

➤Изберете Колона с резултати

➤Отидете на Разработчик Tab>> Макроси Опция

Тогава a Macro ще се появи съветник.

➤Изберете Удебелен подниз (кодовото име на VBA) и след това Изпълнявайте .

Резултат :

След това оценките в Резултат Колона ще бъдат удебелени.

Практически раздел

За да практикувате сами, сме предоставили Практика раздел, както е показано по-долу, в лист с име Практика . Моля, направете го сами.

Заключение

В тази статия се опитах да разгледам най-лесните начини за намиране на подниз с помощта на VBA в Excel ефективно. Надявам се, че ще ви бъде полезно. Ако имате някакви предложения или въпроси, не се колебайте да ги споделите с нас.

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