Excel'de VBA ile String Nasıl Bulunur (8 Örnek)

  • Bunu Paylaş
Hugh West

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, belirli dizeleri verilen başka bir dize içinde nasıl bulacağınızı göstereceğiz VBA Excel'de.

Uygulama Şablonunu İndirin

Ücretsiz uygulama Excel şablonunu buradan indirebilirsiniz.

String.xlsm'de Bulmak için VBA

InStr Fonksiyonu

Microsoft Excel'in şu adda yerleşik bir işlevi vardır InStr Fonksiyonu Belirli dizelerin belirli bir String içindeki konumunu bulmak için.

Genel Sözdizimi:

InStr([başlangıç], string1, string2, [karşılaştır])

İşte,

Argümanlar Gerekli/ İsteğe bağlı Tanım
başla Opsiyonel Aramanın başlangıç konumu.
  • Varsayılan olarak InStr fonksiyonu karakter konumunu başlangıç konumundan değil, 1'den itibaren sayarak hesaplar. Bu nedenle, isterseniz bunu boş bırakabilirsiniz.
string1 Gerekli Arama yapılacak dize, Birincil Dize.
string2 Gerekli Birincil dizede aranacak dize.
karşılaştırın Opsiyonel Bu InStr işlevi varsayılan olarak büyük/küçük harfe duyarlıdır. Ancak büyük/küçük harfe duyarsız bir InStr sonra belirli bir karşılaştırma yapmak için argümanı buraya aktarabilirsiniz. Bu argüman aşağıdaki değerler olabilir,
  • vbBinaryCompare -> ikili karşılaştırma gerçekleştirir, dönüş değeri 0
  • vbTextCompare -> bir metin karşılaştırması gerçekleştirir, dönüş değeri 1
  • vbVeritabanıKarşılaştırma -> bir veritabanı karşılaştırması gerçekleştirir, dönüş değeri 2

Varsayılan olarak, InStr alır vbBinaryCompare karşılaştırma argümanı olarak.

8 VBA Kullanarak Verilen Dizede Belirli Dize Konumunu Bulmak için Kolay Örnekler

Verilen bir dizgideki belirli dizgilerin konumlarını elde etmek için bazı basit örnekler görelim VBA .

1. Dize İçinde Metnin Konumunu Bulmak için VBA

Aşağıda bir örnek verilmiştir InStr bir metnin bir dize içindeki konumunu bulmak için.

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

  • Şimdi kod penceresinde basit bir InStr içindeki program VBA Alt Prosedürü (aşağıya bakınız).
 Sub INSTR_Example() MsgBox InStr("Mutluluk bir seçimdir", "seçim") End Sub 

Kodunuz artık çalışmaya hazır.

  • Basın F5 klavyenizde veya menü çubuğundan Run -> Run Sub/UserForm üzerine de tıklayabilirsiniz. küçük Oynat simgesi makroyu çalıştırmak için alt menü çubuğunda.

Açılan mesaj kutusunun size bir mesaj vereceğini göreceksiniz. pozisyonu bildiren sayı Kontrol etmek istediğiniz metnin.

Açıklama:

Birincil dizemiz, " Mutluluk bir seçimdir " 21 harfli bir cümle (boşluklarla birlikte) ve biz metnin konumunu bulmak istedik " seçim " metni bu dizede yer alır. seçim " birincil dizenin 16. konumundan başladı, dolayısıyla 16 mesaj kutusunda bizim çıktımız olarak.

2. Dize İçinde Belirli Bir Konumdaki Metni Bulmak için VBA

Şimdi pozisyonu belirli bir sayıdan almak istersek ne olacağını bulalım.

  • Öncekiyle aynı şekilde, açık Visual Basic Düzenleyicisi bir şey yok. Geliştirici sekmesi ve Ekleme a Modül kod penceresinde.
  • Kod penceresinde, basit bir InStr programını kullanın ve metninizi saymak istediğiniz konuma göre başlangıç argümanına değer aktarın.
 Sub INSTR_Example() MsgBox InStr(17, "Mutluluk bir seçimdir", "seçim") End Sub 

  • Sıradaki, Koşmak kodu.

Açılan mesaj kutusunun size bir mesaj vereceğini göreceksiniz. pozisyonu bildiren sayı metnin belirli bir konumdan başlayarak kontrol etmek istediğin.

Açıklama:

Zaten bildiğimiz gibi (1. aşama tartışmasından) metnin " seçim " pozisyonundan başlamıştır. 16 bu yüzden iki " seçim " ifadesini birincil dizeye ekleyin ve 17 ilkini atlamak için 1. parametre olarak " seçim "Yani, biz Koşmak yukarıdaki makro ve bize pozisyon numarasını gösterdi 27 'nin tam olarak konum numarası olan ikinci " seçim " verilen dizede.

3. VBA ile String İçinde Harfe Duyarsız InStr Fonksiyonu ile Metin Bulma

Girişten itibaren InStr fonksiyonunun varsayılan olarak InStr fonksiyonu büyük/küçük harfe duyarlıdır. Bunu bir örnekle öğrenelim.

Aşağıdakilere bakınız VBA kelimesinin konumunu bulmak istediğimiz kod " Seçim " ile büyük "C" dizesinde " Mutluluk bir seçimdir " ile yazıldığı yerde seçim küçük "c" .

  • Koşmak kodu ve bul 0 bizim çıktımız olarak.

Bunun nedeni InStr işlev davranır büyük "C" ve küçük "c" farklı. Bu yüzden " Seçim " ifadesini dizede aradı ve herhangi bir eşleşme elde edemedi, bu nedenle 0 .

  • Yapmak için InStr fonksiyon büyük/küçük harf duyarsız , karşılaştırma bağımsız değişkenini vbTextCompare (aşağıya bakınız).
 Sub INSTR_Example() MsgBox InStr(1, "Mutluluk bir seçim ve tercih", "Tercih", vbTextCompare) End Sub 

  • Koşmak kodu.

Sen alacaksın metnin konumu dizesinden, metnin şu şekilde yazılı olup olmadığı büyük harfler veya küçük harfler .

4. Bir Dizenin Sağından Metin Bulmak için VBA

Şimdiye kadar InStr fonksiyonu bize sadece dizenin sol tarafındaki konumu veriyordu. Peki ya dizenin sağ tarafındaki metin konumunu bulmak istiyorsanız.

InStrRev Fonksiyonu sağdan arar. InStrRev fonksiyonuna çok benzer şekilde çalışır. InStr fonksiyonuna girdiğinizde size bir metnin konumunu bulacaktır. sağ taraf dizenin.

Farkı anlamak için aşağıdaki örneklere bakın.

  • ile aşağıdaki kodu çalıştırırsak InStr o zaman,

bize pozisyonu verir ( 16 ) ilk metnin " seçim ".

  • Ancak aynı kodu şu şekilde çalıştırırsak InStrRev İşlev o zaman,

bize pozisyonu verir ( 27 ) son metnin " seçim ".

Benzer Okumalar:

  • Excel'de VBA Kullanarak FindNext (2 Örnek)
  • VBA Kullanarak Bulma ve Değiştirme (11 Yol)
  • Excel'de VBA Kullanarak Tam Eşleşmeyi Bulma (5 Yol)

5. Dize İçinde Bir Karakterin Konumunu Bulmak için VBA

Ayrıca, metni bulduğunuz şekilde bir dize içindeki belirli bir karakterin konumunu da bulabilirsiniz.

  • Aşağıdaki kodu kendi VBA kod penceresi
 Sub Find_Character() Dim z As Long z = InStr("Mutluluk bir seçimdir", "e") MsgBox z End Sub 

  • Ve Koşmak makro.

İlk " e " verilen dizemizdeki sayı 7 Pozisyon.

6. Bir Dizede Alt Dize Bulmak için VBA

Burada, bir dizenin bir dizeyi içerip içermediğini nasıl bulacağımızı öğreneceğiz alt dize ya da değil.

Bunu elde etmek için, bir EĞER İfadesi kodumuzda.

  • Ö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 FindSub() If InStr("Mutluluk bir seçimdir", "seçim") = 0 Then MsgBox "Eşleşme bulunamadı" Else MsgBox "Eşleşme bulundu" 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 Aksi takdirde, eşleşme bulunamadı sonucunu döndürür. Örneğimizde, birincil dizemizin " Mutluluk bir seçimdir " kelimesi " seçim "ya da değil. Yaptığı gibi, bir Eşleşme bulundu Sonuç.

7. Hücre Aralığında Dize Bulmak için VBA

Bir dize hücre aralığında belirli bir metni arayabilir ve belirli bir dizeyi döndürebilirsiniz.

Aşağıdaki örneğe bakın, burada " Dr. " ve bir eşleşme olduğunda " Doktor ".

  • Yukarıda tartışılan sonucu elde etmek için kod aşağıdadır,
 Sub Find_String_in_Range() Dim cell As Range For Each cell In Range("B5:B10") If InStr(cell.Value, "Dr.")> 0 Then cell.Offset(0, 1).Value = "Doctor" End If Next cell End Sub 

  • Koşmak kodu ve sonuç aşağıda gösterilmiştir

  • Makroyu ihtiyacınıza göre değiştirebilirsiniz. Örneğin, eğer " Prof. " dizesinin herhangi bir hücresinde " Profesör " öğesini geri dönüş olarak geçirdikten sonra " Prof. " yerine değer olarak " Dr. ." makronun 4. satırında ve " Profesör " yerine " Doktor " ifadesini makronun 5. satırına ekleyin ve hücre aralığı numarasını buna göre tanımlayın.

8. Bir Hücredeki Dizeyi Bulmak için VBA

Ayrıca şunları da yapabilirsiniz dizenin tek bir hücresinde belirli bir metni arayın ve belirli bir dize döndürür.

  • Aşağıdaki kodu kopyalayın ve kod penceresine yapıştırın.
 Sub Find_String_in_Cell() If InStr(Range("B5").Value, "Dr.")> 0 Then Range("C5").Value = "Doctor" End If End Sub 

Arayacaktır " Dr. " içinde Hücre B5 ve eşleşmeyi bulursa " Doktor " içinde Hücre C5 .

  • Makroyu ihtiyacınıza göre değiştirebilirsiniz. Örneğin, eğer " Prof. " dizesinin herhangi bir hücresinde " Profesör " öğesini return olarak geçirin, sonra sadece " Prof. " yerine değer olarak " Dr. ." makronun 2. satırında ve " Profesör " yerine " Doktor " ifadesini makronun 3. satırına ekleyin ve hücre referans numarasını buna göre tanımlayın.

Sonuç

Bu makale, Excel'de dize içindeki belirli metinleri nasıl bulacağınızı göstermiştir VBA makrosu. Umarım bu makale sizin için çok faydalı olmuştur. Konuyla ilgili her türlü soruyu sormaktan ç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.