VBA Kullanarak Alt Dize Bulma (9 Yol)

  • Bunu Paylaş
Hugh West

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çerik

9 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.

Hugh West, sektörde 10 yılı aşkın deneyime sahip oldukça deneyimli bir Excel eğitmeni ve analistidir. Muhasebe ve Finans alanında lisans derecesine ve İşletme alanında yüksek lisans derecesine sahiptir. Hugh öğretme tutkusuna sahiptir ve takip etmesi ve anlaması kolay benzersiz bir öğretim yaklaşımı geliştirmiştir. Excel konusundaki uzman bilgisi, dünya çapında binlerce öğrencinin ve profesyonelin becerilerini geliştirmesine ve kariyerlerinde başarılı olmasına yardımcı olmuştur. Hugh, blogu aracılığıyla bilgisini dünyayla paylaşıyor, bireylerin ve işletmelerin tam potansiyellerine ulaşmalarına yardımcı olmak için ücretsiz Excel eğitimleri ve çevrimiçi eğitimler sunuyor.