VBA InStrRev | Excel VBA InStrRev Fonksiyonu nasıl kullanılır?

Excel VBA INSTRREV

VBA INSTRREV Function, 'In String Reverse' anlamına geldiği gibi, aradığımız dizenin sonundan (sağdan sola) başlayarak, başka bir dizedeki bir arama dizesinin (alt dize) ilk oluşumunun konumunu döndürür. aranabilir bir dize.

INSTRREV işlevi, bulmamız gereken dizgenin sonundan itibaren aranabilir dizgeyi aramaya başlar, ancak konumu baştan sayar. Başka bir dizgede bir dizeyi arayan ve konumu döndüren bir tane daha INSTR vba Fonksiyonu ( 'In String' anlamına gelir ) vardır, ancak bu fonksiyon aramayı aranabilir dizgeyi aradığımız dizenin başından başlatır.

INSTRREV ve INSTR , her ikisi de MS Excel'in Dize / Metin VBA işlevidir . Bunları Microsoft Visual Basic Editor'da herhangi bir makro yazarken kullanabiliriz.

Sözdizimi

Yukarıdaki görselde görebileceğimiz gibi, 2 zorunlu ve 2 isteğe bağlı argüman vardır.

  • StringCheck As String: Bu gerekli argümandır. Aranacak string ifadesini vermemiz gerekiyor.
  • StringMatch As String: Bu bağımsız değişken de gereklidir. Aranacak dizge ifadesini belirtmemiz gerekiyor.
  • Uzun Başlama = -1: Bu isteğe bağlı bir argümandır. Sayısal ifadeyi belirtiyoruz. Varsayılan olarak -1 alır, bu da aramanın son karakter konumunda başladığı anlamına gelir. 80 gibi pozitif bir değer belirtirsek, solun o 80 karakterinde dizenin sonundan aramaya başlar.
  • As VbCompareMethod = vbBinaryCompare As Long: Bu bağımsız değişken isteğe bağlıdır.

Bu argüman için aşağıdaki değerleri belirtebiliriz.

Dönen Değerler

  1. InStrRev işlevini verir 0 ise dize onay  sıfır uzunluk veya taşımaktadır dize maç  bulunamadı veya değil 'başlangıç' argümanı> uzunluk dize maç .
  2. Bu işlev döndürüyor 'null' a eğer dize çek  veya dize maç  olduğunu 'Boş' .
  3. Eğer dize maç sıfır uzunlukta, sonra işlev döner etmek başlar .
  4. Bir ederse dize maç bir dize çek içinde bulunursa , o zaman fonksiyon maç bulunduğu noktada pozisyonunu döndürür.

VBA INSTRREV Fonksiyonu Nasıl Kullanılır?

Bu VBA INSTRREV Excel Şablonunu buradan indirebilirsiniz - VBA INSTRREV Excel Şablonu

Diyelim ki, film isimleri ve yönetmenleri için verilerimiz var. Yönetmen isimlerini ayırmak istiyoruz.

1201 satırda verimiz var. Bu görevi manuel olarak yaparsak, çok zaman alacak.

Aynısını yapmak için VBA kodunu kullanacağız. Adımlar:

  • 'Geliştirici' Sekmesinde 'Kod' Grubunda bulunan 'Visual Basic' Komutuna tıklamamız gerekir veya görsel temel düzenleyiciyi açmak için Alt + F11 tuşlarına basabiliriz .

  • 'Ekle' menüsünü kullanarak bir modül ekleyeceğiz .

  • 'SplittingNames' adlı bir alt rutin oluşturacağız .

  • 6 değişkene ihtiyacımız var. Bir tanesi manipüle edeceğimiz hücrelerin değerlerini depolamak için. İkincisi, dizedeki ilk boşluğun konumunu depolamak için, üçüncüsü dizedeki son boşluğun konumunu depolamak için, dördüncü, son satır numarasını depolamak için dördüncü, bitişik hücrelerdeki değerleri yazdırmak için kullanacağımız satır ve sütun için beşinci ve altıncı.

  • Sayfadaki son kullanılan satırı bulmak için aşağıdaki kodu kullanmamız gerekir.

Bu kod önce B1 hücresini seçecek ve ardından aynı sütundaki son kullanılan hücreyi seçecek ve ardından hücrenin satır numarasını 'LastRow' değişkenine atayacağız.

  • Şimdi B sütunundaki tüm hücreleri işlemek için bir 'for' döngüsü çalıştıracağız .

  • B sütununun hücrelerinin değerini 2. satırdan 1201 satırına kadar tek tek 's' değişkeninde saklayacağız.

  • Bölme isimlerini C'ye (3. Sütun) ve ileriye doğru bir sütuna yazmamız gerektiğinden 'Sütun' değişkeninin değerini 3 olarak ayarlamamız gerekir.

  • Dizge yalnızca bir sözcükse, bu dizede boşluk olmadığı anlamına gelir, o zaman dizenin kendisini çıktı olarak isteriz. Bunun için, bir yıldız işaretiyle (bir veya daha fazla karakteri gösteren) 'If ve Else ifadesi' kullanarak koşulu aşağıdaki gibi belirleyeceğiz:

  • Dizede boşluk varsa, dizeyi bölmek istiyoruz. Aynısını yapmak için INSTR ve INSTRREV işlevlerini sırasıyla hem ilk uzay konumunu hem de son uzay konumunu bulmak için kullandık. Sırasıyla dizedeki ilk kelimeyi ve son kelimeyi bulmamıza yardımcı olacaktır.

INSTR işlevi argümanı aşağıdaki gibi alır:

Bağımsız Değişken Ayrıntıları

  • Başlangıç: Hangi konumdan başlayacağınız.
  • String1: Aranacak string ifadesini vermemiz gerekiyor.
  • String2: Aranacak string ifadesini belirtmemiz gerekiyor.

VbCompareMethod ile karşılaştırıldığında : Karşılaştırma yöntemini belirtme. Varsayılan olarak, ikili karşılaştırmadır.

  • Dizeden sol karakterleri çıkarmak için vba LEFT işlevini kullanmamız gerekir . Biz kullandık 'Son Space-1' son uzay önce sol karakterleri alır.

İlk boşluktan sonra dizeden doğru karakterleri çıkarmak için SAĞ ve UZUNLUK işlevlerini kullanmamız gerekir .

Makro yazılır. Şimdi makroyu F5 tuşunu kullanarak çalıştırmamız gerekiyor .

Kod:

 Alt Bölme Adları () Boyutları Dize Olarak Dim İlk Boşluk Boyunca Uzun Sönük SonSıra Uzun Sıyrılmış Son Satır Kadar Uzun Sönük Satır Kadar Uzun Sayfa1.Range ("B1"). Seçim.End (xlDown) öğesini seçin. Satır İçin Satır = 2 - LastRow s = Sayfa1.Cells (Satır, 2) .Değer Sütun = 3 Eğer s Beğen "* *" Sonra FirstSpace = InStr (1, s, "") LastSPace = InStrRev (s, "") Sheet1.Cells (Row, Column) .Değer = Left (s, LastSPace - 1) Sheet1.Cells (Row, Column + 1) .Value = Right (s, Len (s) - FirstSpace) Else Sheet1.Cells (Row, Sütun) .Value = s End If Next End Sub 

Şimdi bir sonucumuz var.