EXCEL VBA'DA INSTR İFADESİ

 

VBA InStr, verilen metin değeri içinde istenilen alfabenin veya sayının konumunu bulmamıza yardımcı olan bir metin fonksiyonudur. InStr, VBA Excel'de "In String" anlamına gelir.


Örneğin, 'Wallstreetmojo' metninde 's' alfabesinin yerini bulmak istiyorsak, InStr fonksiyonu 's' metninin yerini 5 olarak döndürecektir.

Bu arada, VBA InStr fonksiyonu, tam dizeden çeşitli konumlara göre alt dizeyi almak için destekleyici bir fonksiyon olarak diğer metin fonksiyonlarıyla birlikte yaygın olarak kullanılır.

Unutmayın, InStr fonksiyonunun çıktısı her zaman tam sayıdır.


ÖNEMLİ NOKTALAR

  • VBA InStr fonksiyonu, verilen tam metin içerisinde istenilen metnin konumunu döndürür.
  • VBA InStr'nin büyük/küçük harfe duyarlı bir formül olduğunu unutmayın, dolayısıyla büyük ve küçük harf karakter konumlarını arayabiliriz.
  • InStr fonksiyonunu kullanarak adı ve soyadını alabiliriz.
  • Benzer şekilde InStr fonksiyonunu kullanarak çalışma sayfası adında belirli bir ada sahip çalışma sayfalarını gizleyebiliriz.

VBA InStr Fonksiyonunun Sözdizimi

Herhangi bir fonksiyonu pratik olarak uygulamadan önce sözdizimini anlamak önemlidir. Aşağıda Excel VBA'da InStr fonksiyonunun sözdizimi verilmiştir.

InStr([Start],[String1],[String2],[Compare as VbCompareMethod = vbBinaryCompare]

[Başlat]: Öncelikle, InStr fonksiyonunun verilen metin değerini aramaya hangi konumdan başlayacağını belirtmemiz gerekir. Varsayılan olarak, başlangıç ​​konumu her zaman 1'dir.

Örneğin, 'Excel' kelimesindeki 'e' metnini aramak için [başlangıç] pozisyonunu 3 olarak girersek , InStr fonksiyonu çıktı olarak 4 döndürecektir. Harf 'E'dir ancak başlangıç ​​pozisyonunu 3 olarak verdiğimizden, InStr fonksiyonu verilen metnin 3. karakterinden sonra 'E' harfini aramaya başlayacaktır , bu yüzden sonuç 4 olacaktır.

[Dize 1]: Bu argümanda, alt dizeyi bulmamız gereken metin değerini vermemiz gerekir. Örneğin, 'Excel' [Dize 1]' dir .

[Dize 2]: [Dize 1]' den hangi alt dizenin konumunu bulmaya çalışıyoruz. Yani, 'E' harfi bulmaya çalıştığımız alt dizenin konumudur.

[Karşılaştır]: Bu argümanda, karşılaştırma türünü belirtmemiz gerekir. 3 tür karşılaştırma yöntemi mevcuttur ve bunlar şunlardır:

  1. vbBinaryKarşılaştırma
  2. vbVeritabanıKarşılaştırması
  3. vbTextKarşılaştırma

vbBinaryCompare: Bu, karakterlerin büyük/küçük harfe duyarlı aramasını bulmak için kullanılır. Unutmayın, bu, tam dizedeki (dize 1) bir alt dizenin (dize 2) büyük/küçük harfe duyarlı aramasıdır.

Şimdi vbBinaryCompare olarak 0 girdiğimizde örnek çıktılar aşağıdaki gibidir.

  • Eğer ikili arama girişi 0 olan 'Sydney' (Dize 1) dizesindeki 'y' (Dize 2) karakterini bulmak istiyorsak, sonuç 1 olarak döndürülecektir, çünkü 'Sydney' dizesindeki 'y' harfinin konumu 2'dir.
  • Benzer şekilde, ikili arama girişi 0 olan 'Sydney' (Dize 1) dizesindeki 'Y' (Dize 2) karakterini bulmak istersek, sonuç 0 olarak döndürülecektir, çünkü 'Y' harfi büyük harftir ve verdiğimiz arama büyük/küçük harfe duyarlıdır ve 1 numaralı 'Sydney' dizesinde büyük harfli 'Y' yoktur.

vbTextCompare: Bu seçenek büyük/küçük harfe duyarlı aramaların göz ardı edilmesi için kullanılabilir. Şimdi, giriş argümanı olarak 1'i geçebiliriz.

vbTextCompare olarak 1 girdiğimizde örnek çıktılar aşağıdaki gibidir.

  • 'Sydney' (Dize 1) dizesindeki 'y' veya 'Y' (Dize 2) karakterini, metin arama girişi 1 olarak bulmak istiyorsak, her iki durumda da sonucu 2 olarak döndürecektir. Bu, büyük/küçük harfe duyarlı olmayan bir aramadır.

vbDatabaseCompare: Bu yalnızca Microsoft Access için kullanılır. Burada vbDatabaseCompare yerine 2 girebiliriz.


VBA InStr Fonksiyon Örnekleri

Örnek 1 – Belirtilen Karakterin Pozisyonunu Bul

'A' harfinin çeşitli konumlardaki yerini bulmak için 'Abaküs Öğrenimi' kelimesini kullanacağız .

  • Adım 1: İlk olarak makroya bir isim vererek alt rutin prosedürünü başlatın.
VBA InStr - Örnek 1 - Adım 1
  • Adım 2: Daha sonra InStr fonksiyonunun sonucunu atayacak bir değişken tanımlayın.
Örnek 1 - Adım 2
  • Adım 3: Daha sonra metin değerini atayacak başka bir değişken tanımlayın.
Örnek 1 - Adım 3
  • Adım 4: Şimdi hedeflenen alt dizeyi atamak için bir değişken daha tanımlayın.
Örnek 1 - Adım 4
  • Adım 5: Daha sonra 'Actual_String' değişkenine 'Abacus Learning' kelimesini atayın.
Örnek 1 - Adım 5
  • Adım 6: Benzer şekilde 'A' kelimesini 'Required_String' değişkenine atayın.
Örnek 1 - Adım 6
  • Adım 7: Şimdi değişkene InStr fonksiyonu tarafından verilen değeri atayacağız.
VBA InStr - Örnek 1 - Adım 7
  • Adım 8: Daha sonra başlangıç ​​pozisyonunu 1 olarak verin.
Örnek 1 - Adım 8
  • Adım 9: Daha sonra 1. dize için 'Actual_String' değişken adını verin.
Örnek 1 - Adım 9
  • Adım 10: Şimdi, 2. dize için 'Required_String' değişken adını verin.
VBA InStr - Örnek 1 - Adım 10
  • Adım 11: Benzer şekilde, karşılaştırma yöntemi için 0 veya vbBinaryCompare'i kullanalım.
VBA InStr - Örnek 1 - Adım 11
  • Adım 12: Ardından, değişken adını mesaj kutusuna atayın.
VBA InStr - Örnek 1 - Adım 12

Aşağıda kodun tamamı yer almaktadır.

Sub Instr_Function()

Dim k As Integer
Dim Actual_String As String
Dim Required_String As String

Actual_String = "Abacus Learning"

Required_String = "a"

k = InStr(4, Actual_String, Required_String, vbBinaryCompare)

MsgBox k

End Sub

Şimdi bu kodu çalıştırdığımızda sonuç 1 olarak dönecek.

VBA InStr - Örnek 1 - Adım 12a

Şimdi, verdiğimiz string 'A' ve büyük/küçük harfe duyarlı arama için ikili karşılaştırmayı verdik.

'Abacus Learning' kelimesinde büyük harf 'A' ilk sırada yer aldığından, InStr fonksiyonu değeri 1 olarak döndürüyor.

  • A harfini büyük harften küçük harfe çevirme: Şimdi, harfi büyük harften küçük harfe çevirelim.
VBA InStr - Örnek 1 - Adım 12b

Şimdi kodu çalıştırdığınızda aşağıdaki sonucu alacaksınız.

VBA InStr - Örnek 1 - Adım 12c

Şimdi sonuç 3 yani ilk harf A pozisyonu bulmak için dikkate alınmadı. Bu nedenle, 'Abacus Learning' kelimesindeki 3. örneği döndürdü .

  • Başlangıç ​​pozisyonunu değiştir: Varsayılan olarak InStr başlangıcı 1 olarak alır, mevcut kodda bunu 4 olarak değiştirelim.
Örnek 1 - Adım 13a

Daha sonra bu kodu çalıştırdığımızda aşağıdaki sonucu elde edeceğiz.

Örnek 1 - Adım 13b

Şimdi sonuç 10.

'Abaküs Öğrenme ' kelimesinde 'a' harfinin 4. sıradan itibaren yeri 10'dur .


Örnek 2 – Tüm Benzer Çalışma Sayfalarını Gizle

Şimdi, VBA'da InStr işlevini kullanmanın gelişmiş örneklerinden bazılarını verelim. Örneğin, Excel çalışma kitabındaki aşağıdaki çalışma sayfalarına bakın.

Excel VBA InStr - Örnek 2

Excel çalışma kitabında birçok çalışma sayfamız var. Şimdi, 'Ay' kelimesini içeren tüm çalışma sayfalarını gizlememiz ve 'Ay' kelimesini içermeyen çalışma sayfalarını gizlemememiz gerekiyor.

Aşağıda 'Ay' adlı tüm çalışma sayfalarını gizlememize yardımcı olan VBA kodu yer almaktadır.

Sub Instr_Example_Çalışma_Sayfalarını_Gizle()

Dim Ws As Worksheet
'WS = Worksheet

For Each Ws In ActiveWorkbook.Worksheets

    If InStr(Ws.Name, "Month") > 0 Then
        Ws.Visible = xlSheetHidden
    End If
Next Ws

End Sub

Şimdi size kodu açıklayalım.

Örnek 2 - Adım 1

Öncelikle 'Ws' değişkenini tanımladık ve nesnenin veri türünü çalışma sayfası olarak atadık.

Örnek 2 - Adım 2

Daha sonra tüm çalışma sayfalarını dolaşacak FOR EACH döngüsünü başlattık.

FOR EACH döngüsünün içinde, çalışma sayfası adını kontrol etmek için IF mantıksal ifadesini InStr işleviyle birlikte kullandık. Burada, InStr işlevi çalışma sayfası adını kontrol edecek ve 'Ay' sözcüğüne sahip olup olmadığını bulacak, çalışma sayfası adı 'Ay' sözcüğüne sahipse, InStr işlevi 'Ay' sözcüğünün tam çalışma sayfası adındaki konumunu döndürecek, bu nedenle sayı 0'dan büyük olacaktır.

Artık InStr fonksiyonu 0'dan büyük bir sayı döndürdüğünde, o çalışma sayfasını gizleyecektir.

Daha sonra bu kodu çalıştırdığınızda 'Ay' adlı tüm çalışma sayfalarının gizlenmesi gerekir.

Örnek 2 - Adım 3

Benzer şekilde, 'Ay' çalışma sayfası adına sahip tüm öğeleri göstermek istiyorsak aşağıdaki kodu kullanabiliriz.

Sub Instr_Example_UnHide_Worksheets()

Dim Ws As Worksheet
'WS = Worksheet

For Each Ws In ActiveWorkbook.Worksheets

    If InStr(Ws.Name, "Month") > 0 Then
        Ws.Visible = xlSheetVisible
    End If
Next Ws

End Sub

Şimdi, bu kodu çalıştırdığımızda, içinde 'Ay' kelimesi bulunan tüm gizli çalışma sayfalarını gizleyecektir. 'Ay' adı olmadan başka bir çalışma sayfası gizlenmişse, onları gizlemeyecektir.


Örnek 3 – Adınızı ve Soyadınızı Çıkarın

Tam adınızdan ad ve soyadını çıkarmak, çalışma sayfası fonksiyonlarında hepimizin yaptığı yaygın bir görevdir.

Örneğin Excel’de şu verilerimiz var.

Excel VBA InStr - Örnek 3

Sonra, A sütununda tam adlarımız var ve B ve C sütunlarında sırasıyla adı ve soyadını çıkarmamız gerekiyor. Şimdi, aşağıdaki koda bakın:

Sub Instr_Example_Ad_Soyadı()

Dim k As Integer
Dim LR As Integer
Dim Space As Integer
Dim Lenght As Integer

LR = Cells(Rows.Count, 1).End(xlUp).Row

For k = 2 To LR
    Space = InStr(Cells(k, 1).Value, " ")
    Lenght = Len(Cells(k, 1).Value)
    Cells(k, 2).Value = Left(Cells(k, 1).Value, Space - 1)
    Cells(k, 3).Value = Right(Cells(k, 1).Value, Length - Space)
Next k

End Sub

Şimdi size kodu açıklayalım.

  • Değişken Bildirimi: Bazı değişkenleri bildirdik ve bunlar şunlardır:
Örnek 3 - Adım 1

Dim k As Integer – Bu, döngüyü tüm hücrelerde dolaşmak için uygulamaktır.

Dim LR As Integer – Bu, A sütununda kullanılan son satırı bulmak içindir.

Dim Space As Integer – Bu, verilen metindeki boşluk karakterinin konumunu bulmak içindir.

Dim Lenght As Integer – Bu, verilen metnin toplam karakter sayısını bulmak içindir.

  • Son Kullanılan Satırı Bul: Şimdi, son kullanılan satır numarasını bulup bunu LR değişkenine atayacağız.
Örnek 3 - Adım 2
  • Döngüyü Başlat: Sonra, tüm hücreleri dolaşmak için döngüyü başlatıyoruz.
Örnek 3 - Adım 3

Daha sonra 'k' değişkenini kullanarak başlangıç ​​noktası 2 ve bitiş noktası son kullanılan satıra (LR) eşit olacak şekilde döngüyü başlattık.

  • Metindeki Boşluk Karakterini Bul: Şimdi, 'Boşluk' değişkeni için, geçerli döngü hücresindeki boşluk karakterinin konumunu bulmamız gerekiyor.
Örnek 3 - Adım 4
  • Metindeki toplam karakteri bul: Sırada, verilen metindeki toplam karakter sayısını bulup bunu 'Uzunluk' değişkenine atıyoruz.
Örnek 3 - Adım 5
  • Adı Çıkar: Şimdi LEFT işlevini kullanarak adı çıkaracağız. LEFT excel işlevi, metnin sol tarafındaki karakterleri çıkaracaktır. Çıkarmamız gereken karakter sayısı boşluk karakterine bağlıdır.

Şimdi, InStr fonksiyonunu kullanarak metin değerindeki boşluk konumunu zaten bulduk. İlk adda boşluk karakterine ihtiyacımız olmadığı için -1 uyguladık.

Örnek 3 - Adım 6
  • Soyadını Çıkar: Şimdi soyadını RIGHT fonksiyonunu kullanarak çıkarıyoruz. RIGHT excel fonksiyonu metnin sağ tarafındaki değerleri çıkaracaktır.

Şimdi bunun için metin değerinin toplam uzunluğundan boşluk karakterinin konumunu çıkarıyoruz.

Excel VBA InStr - Örnek 3 - Adım 7

Bu kodu çalıştırdığımızda adımızı ve soyadımızı alacağız.

Excel VBA InStr - Örnek 3 - Adım 8

1. VBA InStr Nasıl Çalışır?

VBA'daki InStr fonksiyonu verilen metnin ana metin içindeki konumunu döndürür. Örneğin, 'Melbourne' kelimesindeki 'e' metnini bulmak istiyorsak, aşağıdaki kodu kullanabiliriz.

VBA InStr

Şimdi, bu sonucu 2 olarak döndürecektir çünkü "e" harfi 'Melbourne' kelimesinde ikinci sırada yer almaktadır.

SSS 1 - 1

2. VBA InStr büyük/küçük harfe duyarlı mıdır?

Evet, InStr büyük/küçük harfe duyarlı bir fonksiyondur. Büyük/küçük harfe duyarlı olmayan bir arama yapmak için InStr fonksiyonunun compare argümanına vbTextCompare seçeneğini vermemiz gerekir.

3. VBA InStr Neden Çalışmıyor?

Genellikle, VBA InStr fonksiyonu tarafından döndürülen sonucu değişkene atarız. InStr sonucu bir tam sayı olarak döndürdüğünden değişken veri türü yalnızca bir tam sayı olmalıdır.


Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...