Excel VBA InStr İşlevi Nasıl Kullanılır

Excel VBA InStr İşlevi Nasıl Kullanılır

Bunu yapabilen Excel'de dahili bir işlevsellik olmadığı için, Excel VBA InStr işlevini kullanan basit bir makro oluşturdum (bunu, bu öğreticide Örnek 4'te nasıl yapılacağını göreceksiniz ).

Ama önce, Excel VBA InStr işlevinin nasıl çalıştığını görelim!

Excel VBA InStr İşlevi

Bu yazıda Excel VBA'da InStr işlevinin kullanımını açıklayacağım ve kullanılabilecek bazı pratik örnekler göreceğim.

Excel VBA InStr İşlevi - Giriş

InStr işlevi, dizedeki belirli bir alt dizgenin konumunu bulur ve oluşumunun ilk konumunu döndürür.

Örneğin, 'Excel' içindeki 'x''in konumunu bulmak isterseniz, Excel VBA InStr işlevini kullanarak 2'yi döndürürsünüz.

InStr İşlevinin Sözdizimi

InStr ( [Start] , String1 , String2 , [Compare] )
  • [Başlat] - (isteğe bağlı bağımsız değişkeni) bu, InStr işlevi için aramaya başlamanız gereken başlangıç ​​konumunu belirten bir tam sayı değeridir. Örneğin, aramayı en baştan başlatmak istersem, değeri 1 olarak girerim. Üçüncü karakterle başlamak istiyorsanız, 3 kullanacağım. Atlandığında, 1 varsayılan değeri alınır.
  • String1 - Bu, aramak istediğiniz ana dizedir (veya üst dize). Örneğin, Excel'deki x'in konumunu arıyorsanız, String 1 "Excel" olacaktır.
  • String2 - Bu aradığınız alt dize olduğunu. Örneğin, Excel'deki x'in konumunu arıyorsanız, String2 x olur.
  • [ Karşılaştır ] - (isteğe bağlı argüman) [compare] argümanı için aşağıdaki üç değeri belirtebilirsiniz:
    • VbBinaryCompare - Bu karakter karşılaştırmasıyla bir karakter yapardı. Örneğin, 'Excel''de' x 'arıyorsanız, 2 döndürür ancak' Excel 'bölümünde' X 'arıyorsanız, X büyük harfle 0 döndürür. Ayrıca, vbBinaryCompare yerine 0'ı da kullanabilirsiniz. [Karşılaştır] argümanı atlanırsa, bu varsayılan olarak kabul edilir.
    • VbTextCompare - Bu, metinsel bir karşılaştırma yapar. Örneğin, Excel'de 'x' veya 'X' bakarsanız, her iki durumda da 2 döndürür. Bu bağımsız değişken mektubu yok sayıyor. Ayrıca vbTextCompare yerine 1 değerini kullanabilirsiniz.
    • VbDatabaseCompare - Bu yalnızca Microsoft Access için kullanılır. Karşılaştırmayı gerçekleştirmek için veritabanındaki bilgileri kullanır. Ayrıca, vbDatabaseCompare yerine 2'yi de kullanabilirsiniz.

Excel VBA InStr İşlevi Üzerine Ek Notlar:

  • InStr bir VBA işlevi ve çalışma sayfası işlevi değil. Bu, çalışma sayfasında kullanamazsınız anlamına gelir.
  • String2 (aradığınız konumdaki alt dizedir) boşsa, işlev [Start] argümanının değerini döndürür.
  • InStr işlevi, ana dizideki alt dizgeyi bulamazsa, 0 döndürür.

Şimdi, Excel VBA InStr İşlevini kullanma örneğine bir göz atalım

Örnek 1 - Pozisyonu en başından bulma

Bu örnekte, 'Excel VBA' içindeki 'V' konumunu baştan bulmak için InStr işlevini kullanacağım.

Bunun kodu şu şekilde olacaktır:

Alt FindFromBeginning ()
Dim Pozisyonu As Integer
Position = InStr (1, "Excel VBA", "V", vbBinaryCompare)
MsgBox Konumu
End Sub

Bu kodu çalıştırdığınızda, 'Excel VBA' dizesindeki 'V' konumu olan 7 değeri olan bir ileti kutusu gösterilir.

Örnek 2 - İkinci Sözcüğün başlangıcından Pozisyonu Bulma

Diyelim ki cümledeki 'ben' pozisyonunu bulmak istiyorum - 'Hızlı kahverengi tilki tembel köpeği atlar'

Bununla birlikte, aramanın ikinci kelimeyle başlamasını istiyorum.

Bu durumda, ikinci kelimenin başlayacağı konumu belirten olduğundan emin olmak için [Start] argümanını değiştirmeliyiz.

İşte bunu yapacak kod:

Alt FindFromSecondWord ()
Dim Pozisyonu As Integer
Position = InStr (4, "Hızlı kahverengi tilki tembel köpeğe atlar", "the", vbBinaryCompare)
MsgBox Konumu
End Sub

Bu kod, başlangıç ​​konumu 4 olarak belirttiğimiz gibi, 32 değerli ileti kutusunu gösterecektir. Bu nedenle, ilk 'The' öğesini yoksayar ve cümledeki ikinci 'the' öğesini bulur.

Daha dinamik hale getirmek isterseniz, kodu ilk kelimeyi otomatik olarak yoksayacak şekilde geliştirebilirsiniz.

İşte bunu yapacak gelişmiş kod:

Alt FindFromSecondWord ()
Dim StartingPosition As Integer
Dim Pozisyonu As Integer
StartingPosition = InStr (1, "Hızlı kahverengi tilki tembel köpeğe atlar", "", vbBinaryCompare)
Konum = InStr (StartingPosition, "Hızlı kahverengi tilki tembel köpeğe atlar", "the", vbBinaryCompare)
MsgBox Konumu
End Sub

Bu kod önce bir boşluk karakterinin yerini bulur ve onu StartingPosition değişkeninde saklar.

Daha sonra 'the' kelimesini aramak için bu değişkeni başlangıç ​​konumu olarak kullanır.

Bu nedenle 32 (ilk kelimeden sonra 'the' başlama konumu) döndürür.

Örnek 3 - E-posta Adresinde @ Konumunu Bulma

Excel VBA InStr işlevini kullanarak bir e-posta adresindeki @ konumunu bulmak için kolayca özel bir işlev oluşturabilirsiniz.

Özel işlevi oluşturmak için kullanılan kod:

İşlev FindPosition (Ref As Range) As Integer
Dim Pozisyonu As Integer
Konum = InStr (1, Ref, "@")
FindPosition = Konum
Son Fonksiyon

Artık bu özel işlevi herhangi bir çalışma sayfası işlevi olarak kullanabilirsiniz. Bir hücre referansı girdi olarak alacak ve içindeki @ konumunu verecektir.

Benzer şekilde, ana dizideki herhangi bir alt dizgenin konumunu bulmak için özel bir işlev oluşturabilirsiniz.

Örnek 4 - Hücrelerde Bir Parçanın Vurgulanıyor

Bu, Haziran ayında sorulan sorudur (okuyucum da bu yazıyı yazmak için bana ilham verdi).

İşte Haziran gönderilen biçiminde bir örnek veri:

Sorgusu, parantezin dışındaki sayıları cesur kılmaktı.

İşte bunu oluşturduğum kod:

Alt Kalın ()
Dim rCell As Aralık
Dim Char As Integer
Seçimde Her Bir Daire İçin
 CharCount = Len (rCell)
 Char = InStr (1, rCell, "(")
 RCell.Characters (1, Char - 1) .Font.Bold = True
Sonraki rCell
End Sub

Bu kodu kullanmak için, bir modülde VB düzenleyicisinde kopyalayıp yapıştırmanız gerekir.

Kodu kopyalayıp yapıştırdıktan sonra, bu biçimlendirmeyi yapmak istediğiniz hücreleri seçin ve makroyu çalıştırın  (aşağıda gösterildiği gibi).

Henüz Yorum Yapılmamış, İlk Yorumu Siz Yapın

Yorum Yollayın