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

İçindekiler

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 INSTR VBA İşlevi daha vardır (" Dizede " anlamına gelir ), ancak bu işlev aramayı aranabilir dizgeyi aradığımız dizenin başlangıcı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 resimde 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 dize ifadesi 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.
  • 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?

Film isimleri ve yönetmenleri için verilerimiz olduğunu varsayalım. 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' Sekmesindeki 'Kod' Grubunda bulunan 'Visual Basic' Komutuna tıklamamız gerekiyor 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 program oluşturacağız .
  • Değiştireceğimiz hücrelerin değerlerini depolamak için 6 değişkene ihtiyacımız var. İ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ü, satır ve sütun için beşinci ve altıncı, bitişikteki değerleri yazdırmak için kullanacağız hücreler.
  • 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, dizede boşluk olmadığı anlamına gelen tek bir sözcükse, dizenin kendisini çıktı olarak isteriz. Bunun için, bir yıldız işaretiyle (bir veya daha fazla karakteri gösteren) 'If ve Else ifadesini' 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 fonksiyonlarını 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:

Argument Details

  • Start: From which position to start.
  • String1: We need to give string expression being searched.
  • String2: We need to specify string expression being searched for.

Compared as VbCompareMethod: Specifying Comparing method. By default, it is binary compare.

  • We need to use the VBA LEFT function to extract left characters from the string. We have used ‘Last Space-1’ to get the left characters before the last space.

We need to use the RIGHT and LEN functions to extract the right characters from the string after the first space.

Macro is written. Now we just need to run the macro using the F5 key.

Code:

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.

Ilginç makaleler...