İçindekiler
Uygulama VBA Excel'de herhangi bir işlemi çalıştırmak için en etkili, en hızlı ve en güvenli yöntemdir. Bu makalede, Excel'de bir dizenin başka bir dizeyi içerip içermediğini nasıl kontrol edeceğinizi göstereceğiz VBA .
Uygulama Şablonunu İndirin
Ücretsiz uygulama Excel şablonunu buradan indirebilirsiniz.
Dizenin Değer İçerip İçermediğini Kontrol Etmek için VBA.xlsm
Excel'de Dizenin Başka Bir Dizeyi İçerip İçermediğini Kontrol Etmek İçin VBA'da 6 Yöntem
Aşağıda, bu bölümde, nasıl uygulanacağına dair 6 etkili yöntem bulacaksınız VBA Bir dizenin başka bir dizeyi içerip içermediğini kontrol etmek için.
1. Dizenin Alt Dize İçerip İçermediğini Kontrol Etmek için VBA
Aşağıda bir örnek verilmiştir InStr fonksiyonu Excel'de bir dizenin bir alt dize içerip içermediğini bulmak için.
Adımlar:
- Basın Alt + F11 sekmesine gidin veya klavyenizde Geliştirici -> Visual Basic açmak için Visual Basic Düzenleyicisi .
- Açılır kod penceresinde, menü çubuğundan Insert -> Modül .
- Kod penceresinde, aşağıdaki kodu kopyalayın ve yapıştırın.
Public Sub ContainSub() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Film bulundu" Else MsgBox "Film bulunamadı" End If End Sub
Kodunuz artık çalışmaya hazır.
- Koşmak makro.
Eğer senin dizesi alt dizeyi içerir o zaman bir eşleşme bulundu alırsınız, aksi takdirde eşleşme bulunamadı döndürür.
Örneğimizde, birincil dizemizin " Film: Demir Adam, Batman, Süpermen, Örümcek Adam, Thor " kelimesi " Hulk " ya da değil. Olmadığı için, bir Film bulunamadı Sonuç.
2. Dizenin Sayı İçerip İçermediğini Kontrol Etmek için VBA
kullanarak dizelerin sayı içerip içermediğini arayabilirsiniz. VBA Kod.
Hangi dizelerin film adları ile sayılar içerdiğini bulacağımız aşağıdaki örneğe bakın.
ile dizelerin sayı içerip içermediğini kontrol etme adımları VBA aşağıda verilmiştir.
Adımlar:
- Öncekiyle aynı şekilde, açık Visual Basic Düzenleyicisi bir şey yok. Geliştirici sekmesi ve Ekleme a Modül kod penceresinde.
- Kod penceresinde, aşağıdaki kodu kopyalayın ve yapıştırın.
Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function
- Bu, aşağıdakiler için bir Alt Prosedür değildir VBA programı çalıştırmak için, bu bir Kullanıcı Tanımlı İşlev (UDF), görevi yürütmek için çalışma sayfamızda çağıracağız. Bu nedenle, kodu yazdıktan sonra Koşmak düğmesine tıklayın, ardından Kaydet Makro dosyasını kaydetmek için menü çubuğundan düğmesine basın.
- Şimdi ilgili çalışma sayfasına geri dönün ve az önce oluşturduğunuz kullanıcı tanımlı işlevi VBA kod ( AramaNumarası kodun ilk satırında) ve fonksiyonun parantezlerinin içine, önde gelen sayıları olan dizenin hücresinin hücre referans numarasını girin (örn. Hücre B5 ).
- Basın Girin .
Bir boolean değeri alacaksınız ( DOĞRU veya Yanlış ), eğer hücredeki dize sayılar içeriyorsa o zaman DOĞRU , aksi takdirde YANLIŞ .
- Hücreyi şu kadar aşağı sürükleyin Doldurma Kolu Hangi dizenin sayı içerip hangisinin içermediğini kontrol etmek için formülü hücrelerin geri kalanına uygulamak.
3. Dizeden Sayıları Çıkarmak için VBA
Yukarıdaki bölümde, dizenin sayı içerip içermediğini nasıl kontrol edeceğimizi öğrendik. Ve bu bölümde, aşağıda verilen örnekle bu sayıları nasıl çıkaracağımızı ve başka bir hücreye nasıl yerleştireceğimizi öğreneceğiz.
Dizelerin sayı içerip içermediğini kontrol etme ve bunları ayıklama adımları VBA aşağıda verilmiştir.
Adımlar:
- Açık Visual Basic Düzenleyicisi bir şey yok. Geliştirici sekmesi ve Ekleme a Kullanıcı Formu Bu kez kod penceresindeki Ekle sekmesinden.
- Ortaya çıkanlardan Araç Kutusu , sürükle ve bırak CommandButton içinde Kullanıcı Formu .
- Çift tıklama düğmesine tıklayın, aşağıdaki kodu kopyalayın ve yapıştırın.
Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Sonraki myAccessary End Sub
- Koşmak kodu girdiğinizde sizi ilgili çalışma sayfasına götürecektir.
- Komut Düğmesine Tıklayın ve dizelerden çıkarılan numarayı alacaksınız.
4. Dizenin Belirli Harf İçerip İçermediğini Kontrol Etmek için VBA
Bu yöntem, bir dize içindeki alt dizeyi kontrol etme yöntemine neredeyse benzer.
Aşağıda InStr Excel'de bir dizenin belirli bir harf içerip içermediğini bulmak için işlev.
Adımlar:
- Öncekiyle aynı şekilde, açık Visual Basic Düzenleyicisi bir şey yok. Geliştirici sekmesi ve Ekleme a Modül kod penceresinde.
- Kod penceresinde, aşağıdaki kodu kopyalayın ve yapıştırın.
Public Sub ContainChar() If InStr("Film: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Harf bulundu" Else MsgBox "Harf bulunamadı" End If End Sub
Kodunuz artık çalışmaya hazır.
- Koşmak Eğer programınız dizesi harf içerir o zaman bir eşleşme bulundu alırsınız, aksi takdirde eşleşme bulunamadı döndürür.
Örneğimizde, birincil dizemizin " Film: Demir Adam, Batman, Süpermen, Örümcek Adam, Thor " harfini içerir " Z " ya da değil. Olmadığı için, bir Mektup bulunamadı Sonuç.
5. Bir Dize Aralığının Başka Bir Dize İçerip İçermediğini Kontrol Etmek için VBA
Belirli bir dizenin başka bir dizeyi içerip içermediğini nasıl kontrol edeceğimizi öğrendik. Ancak bu bölümde, örnek olarak aşağıdaki veri kümesi ile bir dizi dizenin alt dize içerip içermediğini nasıl kontrol edeceğimizi öğreneceğiz.
Adımlar:
- Açık Visual Basic Düzenleyicisi bir şey yok. Geliştirici sekmesi ve Ekleme a Modül kod penceresinde.
- Kod penceresinde, aşağıdaki kodu kopyalayın ve yapıştırın.
Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Film bulundu" Else MsgBox "Film bulunamadı" End If End Sub
Kodunuz artık çalışmaya hazır.
- Koşmak kodu.
Eğer menziliniz dizesi alt dizeyi içerir o zaman bir eşleşme bulundu alırsınız, aksi takdirde eşleşme bulunamadı döndürür.
6. Dizeden Dizeleri Çıkarmak için VBA
Bu bölümde, dizelerin belirli alt dizeleri içerip içermediğini nasıl kontrol edeceğimizi ve bunları başka bir hücrede nasıl ayıklayacağımızı göreceğiz.
" ile başlayan isimlerin bilgilerini çıkaracağız. Chris " aşağıdaki veri kümesinden.
Adımlar :
- Açık Visual Basic Düzenleyicisi bir şey yok. Geliştirici sekmesi ve Ekleme a Modül kod penceresinde.
- Kod penceresinde, aşağıdaki kodu kopyalayın ve yapıştırın.
Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub
Kodunuz artık çalışmaya hazır.
- Koşmak kodu.
Sadece " ile başlayan isimler Chris " önceden tanımlanmış hücrelerde saklanacaktır.