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).
Merhaba, Tek bilgisayardan ağ üzerinden çalışma yapamadım. Size sormak istediğim birşeyi var. Ben bilgisayar da bir dosyayı açarken veri kopyalamak için dim path as string diyor c:\user yolunu yapıyorum. Ağ yolu nasıl oluyor aynı mantık mı
Excel makroda İlk sesli harfe kadar ilerle 1- Bir sonraki harfi kontrol et Seslimi Evet=Sesliharfin sağından heceyi böl (Na-il) Hayır 2-İki sonraki Harfi kontrol et Seslimi Evet=Sesli harfin sagından heceyi böl (Sa-na) Hayır 3-Üçüncü harfi kontrol et Seslimi Evet=Birsonraki harfin sağından heceyi böl (Tav-la) yazmak istiyorum beni ararsanız sevinirim 0532 2719541