İçindekiler
Excel VBA kodları ile çalışırken, karmaşık bir görevi tek satırlık küçük bir koda dönüştüren birkaç yerleşik işlevle karşılaşırız. InStr Excel VBA'da bulunan ve belirli bir konumdan başlayarak belirli bir dizeyi başka bir dizenin içinde arayan bir işlevdir. InStr VBA'da belirli bir dizeyi verilen başka bir dize içinde aramak için işlev.
Alıştırma Çalışma Kitabını İndirin
InStr Fonksiyonu.xlsm
Giriş VBA InStr Fonksiyonu
- Özet
Verilen bir dizenin içinde, verilen bir konumdan başlayarak belirli bir dizeyi arar. Bir eşleşme bulursa, verilen dizede eşleşmenin başladığı konumu döndürür.
- Sözdizimi
InStr([başlangıç],string1,string2,[karşılaştır])
- Argümanlar
TARTIŞMA | GEREKLİLİK | AÇIKLAMA |
---|---|---|
[start] | Opsiyonel | Aramaya başlayacağı konum. Varsayılan değer 1'dir. |
string1 | Gerekli | İçinde belirli bir dizeyi aradığı dize. |
string2 | Gerekli | Belirli bir dize içinde aradığı dize. |
[karşılaştır] | Opsiyonel | Karşılaştırma türünü belirten {-1,0,1,2} arasında bir sayısal değer. Varsayılan değer -1'dir (vbUseCompareOption). Option Compare deyimi belirtilmezse, İkili Karşılaştırma gerçekleştirilir. |
Not:
- Her ne kadar [start] argümanı ve [Karşılaştır] argümanının isteğe bağlı olması durumunda [start] argümanını belirtirseniz [karşılaştır] Aksi takdirde, bir hata oluşturur.
- Biri ya da her ikisi birden [start] argümanı ve [Karşılaştır] argüman şudur Null bir hata ile karşılaşırsınız.
- içinde belirtilen dört değer [karşılaştır] argümanı dört farklı karşılaştırma türü gerçekleştirir. Bunlar aşağıda belirtilmiştir:
DEĞER | SABİT | AÇIKLAMA |
---|---|---|
-1 | vbUseCompareOption | Option Compare deyiminde belirtilen karşılaştırmayı gerçekleştirir. |
0 | vbBinaryCompare | İkili karşılaştırma gerçekleştirir. |
1 | vbTextCompare | Bir metin karşılaştırması gerçekleştirir. |
2 | vbVeritabanıKarşılaştırma | Veritabanınıza dayalı bir karşılaştırma gerçekleştirir. |
- Seçenek Karşılaştırma deyimi, ana VBA kodu başlamadan önce sağlanan bir deyimdir. Kodun gerektiğinde İkili Karşılaştırma mı yoksa Metin Karşılaştırması mı arayacağını belirtir.
Seçenek Karşılaştırma Metni
- Basit bir ifadeyle , İkili Karşılaştırma büyük/küçük harfe duyarlı karşılaştırma anlamına gelir.
- Basit bir ifadeyle , Metin Karşılaştırma büyük/küçük harfe duyarlı olmayan karşılaştırma anlamına gelir.
- Dönüş Değeri
- İçindeki konumu döndürür string1 hangi string2 başladı.
- Bu durumda string2 içinde bulunmaz string1 başlayarak başla konumu, 0 döndürür.
- Eğer string1 sıfır uzunlukta ise 0 döndürür.
- Eğer string2 sıfır uzunlukta ise, bağımsız değişkeni döndürür başla .
- Ve son olarak, eğer herhangi biri string1 veya string2 o Null , bir hata döndürür.
VBA InStr Fonksiyonunu Kullanmak için 3 Kolay Örnek
Bu bölümde, VBA'yı uygulamak için üç kolay örnek göreceğiz InStr fonksiyonunun ilk örneğini görelim. InStr fonksiyonunu VBA kodlarında kullanabilirsiniz.
1. Bir Adresin E-posta Adresi Olup Olmadığına Karar Verme VBA InStr Fonksiyonunu Kullanarak
Burada, müşterilerin bazı iletişim adreslerini içeren bir veri seti aldık. Buradaki amacımız, adreslerin e-posta adresi olup olmadığını belirlemek olacaktır.
Şimdi, aşağıdakileri kullanarak bir VBA kodu geliştireceğiz InStr işlevini kullanarak E-posta Adresi olup olmadığını belirleyin. Bunu yapmak için aşağıdaki adımları izleyin.
Adımlar:
- Başlangıçta, şu adrese gidin Geliştirici sekmesini seçin ve Visual Basic ( Veya basın Alt+F11) açmak için VBA Pencere.
- Sonra da VBA penceresinde, şu adrese gidin Insert> Modül .
- Bundan sonra, modül üzerine aşağıdaki kodu yapıştırın:
Function DECISION(string1 As String) Dim Position As Integer Position = InStr(1, string1, "@", 0) If Position = 0 Then DECISION = "Not Email" Else DECISION = "Email" End If End Function
- Ayrıca, aşağıdaki gibi bir fonksiyon oluşturduk KARAR Bir adresin e-posta adresi olup olmadığına karar verir. Fonksiyonu elimizdeki veri setine uygulayalım.
- Hücre üzerinde C5 'yi kullanarak aşağıdaki formülü yazın ve ardından geri kalan hücreleri otomatik olarak doldurun. Doldurma Kolu .
=KARAR(B5)
- Gördüğümüz gibi, e-posta adresi olsun ya da olmasın her bir adresi tanımladık.
🎓 Kod Nasıl Çalışır?
- Fonksiyon KARAR(string1 As String)
İlk olarak, bu bir fonksiyon oluşturur KARAR adlı bir dize bağımsız değişkeniyle string1 .
- Dim Position As Integer
Adında bir tamsayı değişkeni bildirir Pozisyon .
- Konum = InStr(1, string1, "@", 0)
Bu, değerini atar Pozisyon değişkeninin çıktısı olarak InStr argümanları ile fonksiyon 1, string1, "@" ve 0 Kısacası, bu, adresin içinde bir "@" .
- If Position = 0 Then DECISION = "E-posta Değil"
Çıktısını atar KARAR olarak işlev "E-posta değil" eğer Pozisyon değişkeni 0 bu da demek oluyor ki "@" adreste.
(Verilen dize içinde herhangi bir dize bulunamazsa InStr fonksiyon döner 0 ).
- Else KARAR = "E-posta"
Bu, aşağıdakilerin çıktısını atar KARAR olarak işlev "E-posta" eğer bir "@" Böylece, adresin içinde "@" olarak kategorize edilir E-posta ve geri kalanı şu şekilde kategorize edilir "E-posta değil" .
Benzer Okumalar
- Excel'de VBA UCASE işlevi Nasıl Kullanılır (4 Örnek)
- Excel VBA'da MsgBox İşlevini Kullanın (Tam Bir Kılavuz)
- Excel'de VBA SPLIT işlevi nasıl kullanılır (5 Örnek)
- Excel'de VBA'da LCase İşlevini Kullanın (4 Örnekle)
- Excel VBA'da Fix Fonksiyonu Nasıl Kullanılır (4 Örnek)
2. için VBA InStr Fonksiyonunu Kullanma Bazı E-posta Adreslerinin Uzantısını Çıkarma
Burada, bazı müşterilerin bazı E-posta Adreslerinin bir listesine sahibiz. Bu sefer, e-posta adresinin uzantısını, sahip olup olmadıkları gibi çıkaracağız gmail.com veya yahoo.com .
Bunu yapmak için aşağıdaki adımları izleyin.
Adımlar:
- Başlamak için, önceki yöntemde olduğu gibi, yeni bir VBA modülünü açın ve aşağıdaki kodu pencereye yapıştırın.
Function EXTENSION(Email As String) Dim Position As Integer Position = InStr(1, Email, "@", 0) EXTENSION = Right(Email, (Len(Email) - Position)) End Function
- Buna ek olarak, aşağıdaki gibi bir fonksiyon oluşturduk UZATMA Herhangi bir e-posta adresinin uzantısını çıkarır.
- Ayrıca, bu işlevi elimizdeki veri kümesine uygulayalım. İlk olarak, hücreye şu formülü girin C5 üzerine çift tıklayın ve ardından Doldurma Kolu .
=EXTENSION(B5)
- Son olarak, tüm E-postaların Uzantısını başarıyla çıkardığımızı görebiliriz.
🎓 Kod Nasıl Çalışır?
- Function EXTENSION(Email As String)
Bu, şu adda yeni bir işlev oluşturur UZATMA adlı bir dize bağımsız değişkeniyle E-posta .
- Dim Position As Integer
Bu bölüm, aşağıdaki adda bir tamsayı değişkeni bildirir Pozisyon.
- Konum = InStr(1, E-posta, "@", 0)
Bu, değerini atar Pozisyon değişkeninin çıktısı olarak InStr argümanları ile fonksiyon 1, E-posta, "@" ve 0 . Kısacası, bu durum E-posta olduğu bir yerde "@" .
- UZATMA = Sağ(E-posta, (Len(E-posta) - Konum))
Bu bölüm, aşağıdaki çıktıları atar UZATMA sembolünden sonraki karakterler olarak işlev görür "@" . Bu, aşağıdaki belgenin gerekli uzantısıdır E-posta .
3. Bir Addan Ad veya Soyadı Çıkarma VBA InStr Fonksiyonunu Kullanarak
Son olarak, tamamen farklı bir görev gerçekleştireceğiz. Bu kez elimizde bir şirketin bazı çalışanlarının isimleri var. Ve çalışanların adlarını ya da soyadlarını ayıklamak için bir fonksiyon oluşturmaya çalışacağız.
Bunu yapmak için aşağıdaki adımları izleyin.
Adımlar:
- İlk olarak, benzer şekilde yöntem 1 aşağıdaki kodu VBA penceresinde yeni bir modüle yapıştırın.
Function SHORTNAME(Name As String, First_or_Last As Integer) Dim Break As Integer Break = InStr(1, Name, " ", 0) If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1) Else SHORTNAME = Right(Name, Len(Name) - Break) End If End Function
- Burada, şöyle bir fonksiyon oluşturduk KISA AD Bu formül, bir addan ilk adı veya soyadı çıkarır. Bu formülü veri kümemize uygulayalım.
- İlk olarak, ilk adı çıkarmak için aşağıdaki formülü hücreye yazın C5 .
=KISA AD(B5,-1)
- Son olarak, soyadlarını çıkarmak için aşağıdaki formülü yazıyoruz D5 :
=KISA AD(B5,1)
- Daha sonra, hücrelerin geri kalanını otomatik olarak Dolgu İşleyicisi istediğimiz sonucu göreceğiz.
🎓 Kod Nasıl Çalışır?
- Function SHORTNAME(Name As String, First_or_Last As Integer)
Adında yeni bir fonksiyon oluşturur KISA AD adlı bir String argümanı ile İsim ve bir Tamsayı Argümanı İlk_veya_Son .
- Dim Break As Integer
Bu kısım yeni bir tamsayı değişkeni bildirir Mola .
- Break = InStr(1, Ad, " ", 0)
değerini atar. Mola değişkeninin çıktısı olarak InStr argümanları ile fonksiyon 1, İsim, " " ve 0 . Kısacası, bu durum İsim olduğu bir yerde boşluk (" ").
- If First_or_Last = -1 Then SHORTNAME = Left(Name, Break - 1)
Bu satır, aşağıdaki çıktıları atar KISA AD fonksiyonundan önceki karakterler olarak uzay eğer İlk_veya_Son argümanı -1'dir. Bu ilk isimdir.
- SHORTNAME = Right(Name, Len(Name) - Break)
Bu bölüm, aşağıdaki çıktıları atar KISA AD 'den sonraki karakterler olarak işlev görür. uzay eğer İlk_veya_Son argümanı 1'dir. Bu soyadıdır.
Sonuç
Bu şekilde, VBA kodlarını InStr fonksiyonunu kullanarak belirli bir dizenin başka bir dize içindeki konumunu bulabilir ve daha sonra çeşitli kullanımlar için kendi fonksiyonlarınızı oluşturabilirsiniz. Ayrıca, herhangi bir sorunuz varsa, bize sormaktan çekinmeyin.