Excel VBA InStr İşlevi - Örneklerle Açıklandı

Dün, okuyucularımdan birinden bir e-posta aldım - June.

Bir hücre içindeki bir dizenin belirli bir bölümüne kalın yazı tipi biçiminin nasıl uygulanacağını bilmek istiyordu. Örneğin, kalın biçimi yalnızca "Merhaba Dünya"dan "Merhaba" kelimesine uygulayın.

Ve bunu yüzlerce hücre için aynı anda yapmak istedi.

Excel'de bunu yapabilen yerleşik bir işlev olmadığından, aşağıdakileri kullanan basit bir makro oluşturdum. Excel VBA InStr işlevi (bu eğitimdeki Örnek 4'te bunu nasıl yapacağınızı göreceksiniz).

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

Excel VBA InStr İşlevi

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

Excel VBA InStr İşlevi - Giriş

InStr işlevi, dize içinde belirtilen bir alt dizenin konumunu bulur ve oluşumunun ilk konumunu döndürür.

Örneğin, 'Excel'de 'x' konumunu bulmak istiyorsanız, Excel VBA InStr işlevini kullanmak 2 döndürür.

InStr İşlevinin Sözdizimi

InStr( [Başlat], String1, String2, [Karşılaştır] )
  • [Başlangıç] - (isteğe bağlı argüman) bu, InStr işlevine aramaya başlaması gereken başlangıç ​​konumunu söyleyen bir tamsayı değeridir. Örneğin, aramanın baştan başlamasını istersem değeri 1 olarak gireceğim. Üçüncü karakterden itibaren başlamasını istersem 3'ü kullanacağım. Atlanırsa, varsayılan değer olan 1 alınır.
  • dize1 - Bu, içinde arama yapmak istediğiniz ana dizedir (veya ana dizedir). Örneğin, Excel'de x'in konumunu arıyorsanız, Dize 1 "Excel" olacaktır.
  • dize2 - Bu, aradığınız alt dizedir. Örneğin, Excel'de x'in konumunu arıyorsanız, String2 x olur.
  • [Karşılaştırmak] - (isteğe bağlı bağımsız değişken) [karşılaştır] bağımsız değişkeni için aşağıdaki üç değerden birini belirtebilirsiniz:
    • vbBinaryCompare - Bu, karakter karakter karşılaştırma yapar. Örneğin, 'Excel'de 'x' arıyorsanız, 2 döndürür, ancak 'Excel'de' 'X' arıyorsanız, X büyük harf olduğu için 0 döndürür. Ayrıca vbBinaryCompare yerine 0 kullanabilirsiniz. [Karşılaştır] argümanı atlanırsa, bu varsayılan olarak alınır.
    • vbTextCompare - Bu, metinsel bir karşılaştırma yapar. Örneğin, Excel'de 'x' veya 'X' ararsanız, her iki durumda da 2 döndürür. Bu argüman harf durumunu yok sayar. Ayrıca vbTextCompare yerine 1 kullanabilirsiniz.
    • vbDatabaseKarşılaştır - Bu yalnızca Microsoft Access için kullanılır. Karşılaştırma yapmak için veritabanındaki bilgileri kullanır. 2'yi vbDatabaseCompare yerine de kullanabilirsiniz.

Excel VBA InStr İşlevi Hakkında Ek Notlar:

  • InStr, bir çalışma sayfası işlevi değil, bir VBA işlevidir. Bu, onu çalışma sayfasında kullanamayacağınız anlamına gelir.
  • String2 (konumu aradığınız alt dizedir) boşsa, işlev [Start] bağımsız değişkeninin değerini döndürür.
  • InStr işlevi, ana dize içindeki alt dizeyi bulamazsa, 0 döndürür.

Şimdi Excel VBA InStr İşlevini kullanmanın bir örneğine bakalım

Örnek 1 - Pozisyonu Baştan Bulma

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

Bunun için kod şöyle olacaktır:

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

Bu kodu çalıştırdığınızda, 'Excel VBA' dizesindeki 'V'nin konumu olan 7 değerine sahip bir mesaj kutusu gösterecektir.

Örnek 2 - İkinci Kelimenin Başından Konumu Bulma

Diyelim ki, "hızlı kahverengi tilki tembel köpeğin üzerinden atlar" cümlesindeki "the" konumunu bulmak istiyorum.

Ancak, aramanın ikinci kelimeden itibaren başlamasını istiyorum.

Bu durumda, ikinci kelimenin başladığı konumu belirttiğinden emin olmak için [Start] argümanını değiştirmemiz gerekir.

İşte bunu yapacak kod:

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

Bu kod, başlangıç ​​konumunu 4 olarak belirlediğimiz için 32 değerindeki mesaj kutusunu gösterecektir. Dolayısıyla cümledeki ilk 'The'yi yok sayar ve ikinci 'the'yi bulur.

Daha dinamik hale getirmek istiyorsanız, kodu ilk kelimeyi otomatik olarak yok sayacak şekilde geliştirebilirsiniz.

İşte bunu yapacak gelişmiş kod:

Sub FindFromSecondWord() Dim StartPosition As Integer Dim Position As Integer StartPosition = InStr(1, "Hızlı kahverengi tilki tembel köpeğin üzerinden atlar", " ", vbBinaryCompare) Position = InStr(StartingPosition, "Hızlı kahverengi tilki tembelin üzerinden atlar dog", "the", vbBinaryCompare) MsgBox Position End Sub

Bu kod önce bir boşluk karakterinin konumunu bulur ve bunu StartPosition değişkeninde saklar.

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

Bu nedenle 32 değerini döndürür (bu, ilk kelimeden sonra 'the'nin başlangıç ​​konumudur).

Ö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 kod:

Fonksiyon FindPosition(Ref As Range) As Integer Dim Position As Integer Konum = InStr(1, Ref, "@") FindPosition = Konum Bitiş Fonksiyonu

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

Benzer şekilde, ana dize içindeki herhangi bir alt dizenin konumunu bulmak için özel bir işlev oluşturabilirsiniz.

Örnek 4 - Hücreler İçinde Dizenin Bir Bölümünü Vurgulama

Bu, Haziran tarafından sorulan sorudur (bu öğreticiyi yazmam için bana ilham veren okuyucum).

İşte June'un bana gönderdiği formatta bir örnek veri:

Onun sorgusu, parantez dışındaki sayıları kalın yapmaktı.

İşte bunu yapan oluşturduğum kod:

Sub Bold() Dim rCell As Range Dim Char As Integer Seçimdeki Her rCell İçin CharCount = Len(rCell) Char = InStr(1, rCell, "(") rCell.Characters(1, Char - 1).Font.Bold = True Next rCell End Sub

Yukarıdaki kod, seçimdeki her bir hücreden geçmek için For Her döngüsünü kullanır. InStr işlevini kullanarak parantez açma karakterinin konumunu tanımlar. Ardından, parantezden önceki metnin yazı tipini değiştirir.

Bu kodu kullanmak için VB düzenleyicideki bir modüle 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).

Aşağıdaki Excel VBA Eğitimlerini de Beğenebilirsiniz:

  • Excel VBA BÖLME İşlevi.
  • VBA TRIM İşlevi.
  • Excel VBA Döngüleri İçin En İyi Kılavuz.
  • Excel VBA'da Sonraki Döngü İçin Kullanmaya Yönelik Yeni Başlayanlar Kılavuzu.
  • Excel Eklentisi Nasıl Oluşturulur ve Kullanılır.
  • Birden Çok Çalışma Kitabını Bir Excel Çalışma Kitabında Birleştirme.
  • Excel'de Renkli Hücreler Nasıl Sayılır.
  • Yeni Başlayanlar için Faydalı Excel VBA Makro Örnekleri.
  • VBA Kullanarak Excel'de Veriler Nasıl Sıralanır (Adım Adım Kılavuz)

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave