İç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, 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.
|
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,
Varsayılan olarak, InStr alır vbBinaryCompare karşılaştırma argümanı olarak. Ayrıca bakınız: Excel'de Birden Çok Sayfada TOPLA (3 Yöntem) |
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.