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