İçindekiler
VBA kullanarak alt dize bulmanın en kolay yollarından bazılarını arıyorsanız, o zaman doğru yerdesiniz. Bu makaleyi inceledikten sonra, bir alt dizenin konumunu bulabilecek veya bu alt dizeyi kullanarak veri çıkarabilecek veya bir alt dizenin biçimini kolayca değiştirebileceksiniz. Makaleye geçelim.
Çalışma Kitabını İndirin
Örnek içerik9 VBA Kullanarak Alt Dize Bulmanın Yolları
Burada, VBA kullanarak bir dizede alt dizeyi bulmanın yollarını göstereceğim aşağıdaki veri tablosuna sahibim. Ayrıca rastgele bir dizede alt dizeyi bulmanın yollarını da göstermeye çalışacağım.
Bu görevi aşağıdakileri kullanarak gerçekleştirdim Microsoft Excel 365 sürümünü kullanıyorsanız, uygunluğunuza göre başka herhangi bir sürümü kullanabilirsiniz.
Yöntem-1: VBA Kullanarak Bir Dizedeki Alt Dizeyi Bulma
VBA kullanarak bir dize içinde istediğiniz alt dizeyi bulmak istiyorsanız InStr fonksiyonu VBA kodunda.
Adım-01 :
➤ Şuraya git Geliştirici Tab>> Visual Basic Opsiyon
O zaman Visual Basic Düzenleyicisi açılacak.
➤ Şuraya git Ekleme Tab>> Modül Opsiyon
Bundan sonra, bir Modül oluşturulacaktır.
Adım-02 :
➤ Aşağıdaki kodu yazın
Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "I think therefore I am", "think") MsgBox Pos End Sub
İşte, InStr(1, "Düşünüyorum, öyleyse varım", "düşünüyorum") bir dizenin alt dizesinin konumunu döndürür. 1 başlangıç pozisyonudur, " Düşünüyorum, öyleyse varım" istediğiniz alt dizeyi bulacağınız dize ve "düşün" Varsayılan olarak büyük/küçük harfe duyarlıdır, bu nedenle aramak istediğiniz alt dizenin büyük/küçük harfe duyarlı olmasına dikkat edin.
Basın F5
Sonuç :
Bundan sonra, aşağıdakileri alacaksınız Mesaj Kutusu konumunu içeren "düşün" alt dize.
Yöntem-2: Bir Dizede Harfe Duyarsız Alt Dizeyi Bulma
VBA kullanarak büyük/küçük harf fark etmeksizin bir dize içinde istediğiniz alt dizeyi bulmak istiyorsanız, bu yöntemi izleyin.
Adım-01 :
Takip et Adım-01 . Yöntem-1
Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think",vbTextCompare) MsgBox Pos End Sub
İşte, vbTextCompare büyük/küçük harfe duyarlı olmayan alt dizeyi bulmak için kullanılır.
Basın F5
Sonuç :
Ardından, aşağıdakileri alacaksınız Mesaj Kutusu konumunu içeren "düşün" alt dize.
Aynı işlemi aşağıdaki kodu kullanarak da yapabilirsiniz.
Option Compare Text Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "I Think Therefore I Am", "think") MsgBox Pos End Sub
İşte, Seçenek Karşılaştırma Metni büyük/küçük harfe duyarlı olmayan alt dizeyi bulacaktır.
Basın F5
Sonuç :
Daha sonra, aşağıdakileri alacaksınız Mesaj Kutusu konumunu içeren "düşün" alt dize.
Yöntem-3: VBA'da InstrRev işlevini kullanma
Burada, bir dizenin sonundan bir alt dizeyi bulmanın yolunu göstereceğim.
Adım-01 :
Takip et Adım-01 . Yöntem-1
Sub FindFromEnd() MsgBox InStrRev("I think therefore I am", "I") End Sub
InStrRev alt dizeyi sol taraf yerine sağ taraftan bulacaktır.
Basın F5
Sonuç :
Ardından, aşağıdakileri alacaksınız Mesaj Kutusu ikinci konumunu içeren "I" sağ taraftan alt dize.
Yöntem-4: Bir Veri Aralığındaki Bir Dizede Alt Dizenin Konumunu Bulma
Özel karakteri bulmak istiyorsanız "@" içinde E-posta Kimliği sonra bu yöntemi takip edin. Pozisyon sütunu bu amaç için.
Adım-01 :
Takip et Adım-01 . Yöntem-1
Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function
isimli bir fonksiyon oluşturacaktır. FindSubstring (başka bir isim kullanabilirsiniz)
değer dizeyi içeren hücre referansıdır ve şu şekilde bildirilir Menzil .
Adım-02 :
➤Çıkışı seçin Hücre E5
➤Aşağıdaki fonksiyonu yazın (tarafından oluşturulmuştur VBA )
=FindSubstring(D5)
D5 dizeyi içeren hücredir.
Basın GİRİŞ
Aşağı sürükleyin Doldurma Kolu Alet
Sonuç :
Daha sonra, özel karakterin konumlarını alacaksınız " @" içinde E-posta Kimliği .
Benzer Okumalar:
- Excel'de VBA Kullanarak Bir Hücredeki Dizeyi Bulma (2 Yöntem)
- Excel'de VBA Kullanarak FindNext (2 Örnek)
- Excel'de VBA ile String Nasıl Bulunur (8 Örnek)
- VBA Excel'de Son Satırı Bulma (5 yol)
Yöntem-5: Bir Veri Aralığındaki Dizede Belirli Bir Alt Dizeyi Kontrol Etme
Diyelim ki şunları yazmak istiyorsunuz Geçmek veya Yazışma yapmamak bağlı olarak öğrencilerin isimlerine Sonuç sütunu nerede Geçmek veya Başarısız parantez içinde yazılmıştır. Bu alt dizeyi bulmak için Sonuç sütunu ve bir yere yazın Geçti veya kaldı sütunu bu yöntemi izleyin.
Adım-01 :
Takip et Adım-01 . Yöntem-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
Burada, hücre aralığı C5:C10 ki bu da Sonuç sütunu
InStr(cell.value, "Pass")> 0 sayının sıfırdan büyük olduğu durumdur (hücre aşağıdakileri içerdiğinde "Pas" ) sonra aşağıdaki satır devam edecek ve bitişik hücredeki çıktıyı şu şekilde verecektir Geçti .
Koşulun yanlış olması, hücrenin hiçbir şey içermediği anlamına gelir "Pas" altındaki satır Başka yürütülecek ve bitişik hücredeki çıktı değerini şu şekilde verecektir Başarısız .
Bu döngü her hücre için devam edecektir.
Basın F5
Sonuç :
Ardından, aşağıdaki çıktıları alacaksınız Başarılı ya da başarısız sütun.
Yöntem-6: Bir Dizede Belirli Bir Alt Dizeyi Kontrol Etme ve Verileri Çıkarma
Adı geçen öğrencileri bulmanın yolunu göstereceğim Michael içinde Öğrenci Adı sütunu kullanarak ilgili verileri ayıklayın VBA bu yöntemde.
Adım-01 :
Takip et Adım-01 . Yöntem-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
Burada şunları kullandım B100 olarak Aktif Sayfa Aralığı ancak kullanımınıza göre herhangi bir aralığı kullanabilirsiniz.
InStr(1, Range("B" & i), "Michael")> 0
sütunundaki hücrenin B içerir Michael
Range("E" & icount & ":G" & icount)
çıktı verilerinizi istediğiniz aralık ve Range("B" & i & ":D" & i).value
sütunlarındaki değerleri verecektir B için D .
Basın F5
Sonuç :
Bundan sonra, isme sahip öğrenciler için aşağıdaki çıkarılmış verileri alacaksınız Michael .
Yöntem-7: Kelime için Alt Dize Arama
Alt dizeyi bir sözcük olarak bulmak istiyorsanız, bu yöntemi izleyin.
Adım-01 :
Takip et Adım-01 . Yöntem-1
Sub Stringforword() Dim j As Integer j = InStr("İşte benim", "is") If j = 0 Then MsgBox "Word not found" Else MsgBox "Word found in position: " & j End If End Sub
Dizenin aşağıdakileri içerip içermediğini kontrol edecektir o ve sonra konumu verilecektir
Basın F5
Sonuç :
Daha sonra, aşağıdaki mesaj kutusunu alacaksınız pozisyon:6'da bulunan kelime (pozisyonu) o ).
Bu kodu dizede olmayan bir sözcük için test edebilirsiniz.
➤ Aşağıdaki kodu yazın
Sub Stringforword() Dim j As Integer j = InStr("İşte ben buyum", "vardır") If j = 0 Then MsgBox "Kelime bulunamadı" Else MsgBox "Kelime şu konumda bulundu: " & j End If End Sub
Basın F5
Sonuç :
Daha sonra, aşağıdaki mesaj kutusunu alacaksınız kelime bulunamadı .
Yöntem-8: Instr ve LEFT fonksiyonlarını kullanma
Burada, bir dize içindeki bir alt dizenin konumunu bulmanın ve bu alt dizeden önceki metinleri çıkarmanın yolunu açıklayacağım. VBA ve LEFT işlevi .
Adım-01 :
Takip et Adım-01 . Yöntem-1
Sub InstrandLeft() Dim txt As String Dim j As Long txt = "İşte ben buyum" j = InStr(txt, "is") MsgBox Left(txt, j - 1) End Sub
j = InStr(txt, "is")
alt dizenin konumudur o ve Sol(txt, j - 1)
'den önceki alt dizeleri çıkaracaktır. o .
Basın F5
Sonuç :
Daha sonra, aşağıdaki mesaj kutusunu göreceksiniz İşte (önce alt dize o ).
Yöntem-9: Bir Dizede Belirli Bir Alt Dizeyi Kalınlaştırma
Parantezlerden önceki notları kalın yazabilirsiniz. Sonuç sütunu Bu yöntemi izleyerek.
Adım-01 :
Takip et Adım-01 . Yöntem-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, "(")
ilk parantezin konumunu ve Cell.Characters(1, txt - 1).Font.Bold
ilk ayraçtan önceki alt dizeyi oluşturacaktır Kalın .
Adım-02 :
➤Seçin Sonuç sütunu
➤ Şuraya git Geliştirici Tab>> Makrolar Opsiyon
O zaman, bir Makro sihirbazı görünecektir.
➤Seç Boldingsubstring (VBA kod adı) ve ardından Koşmak .
Sonuç :
Bundan sonra, notlar Sonuç Sütun kalın yazılacaktır.
Uygulama Bölümü
Kendi kendinize pratik yapmanız için bir Uygulama adlı bir sayfada aşağıdaki gibi bir bölüm Uygulama Lütfen bunu kendiniz yapın.
Sonuç
Bu makalede, alt dizeyi bulmanın en kolay yollarını ele almaya çalıştım VBA Umarım faydalı bulursunuz. Herhangi bir öneriniz veya sorunuz varsa, bunları bizimle paylaşmaktan çekinmeyin.