Özellik ikonu

RTrim

İndirme izni yok

Genel Bakış

RTrim (Right Trim), verilen metnin sonundaki (sağ taraftaki) boşluk karakterlerini kaldırıp temizlenmiş metni döndüren bir VBA işlevidir. Dışarıdan alınan, sisteme ya da veri tabanından aktarılan listelerde sık görülen "görünmeyen" sondaki boşlukları temizlemek, karşılaştırma ve eşleştirme hatalarını önlemek için kullanılır. Metnin başındaki ve ortasındaki boşluklara dokunmaz.

Söz dizimi​

RTrim işlevi tek bir bağımsız değişken alır:
VBA
RTrim(string)
  • string: Zorunlu. Sağ tarafı temizlenecek herhangi bir metin ifadesi (değişken, hücre değeri, sabit metin ya da başka bir işlevin sonucu). İsteğe bağlı bağımsız değişken yoktur.
İşlevin metin döndüren RTrim$ biçimi de vardır. RTrim Variant türünde, RTrim$ ise String türünde sonuç verir. Günlük kullanımda iki biçim arasında fark hissedilmez, ancak Null olabilecek bir değerde RTrim$ hata verir.

Dönüş değeri ve davranışı​

RTrim, metnin yalnızca sonundaki normal boşluk karakterlerini (ASCII kodu 32) siler ve yeni metni döndürür. Özgün değişken ya da hücre değişmez; sonucu bir değişkene ya da hücreye sizin yazmanız gerekir.
  • Başındaki boşluklar: Olduğu gibi kalır; bunun için LTrim kullanılır.
  • Ortadaki boşluklar: Silinmez ve birden fazla olsalar da tekilleştirilmez.
  • Null değer: Bağımsız değişken Null ise sonuç da Null olur.
  • Boş metin: Yalnızca boşluklardan oluşan metin, boş metne (uzunluğu 0) dönüşür.
  • Silinmeyen karakterler: Sekme (vbTab), satır sonu (vbCr, vbLf) ve bölünemez boşluk (ChrW(160)) boşluk sayılmaz; RTrim bunları silmez.

LTrim, Trim ve KIRP ile farkı​

VBA'da üç kırpma işlevi vardır: LTrim baştaki, RTrim sondaki, Trim ise hem baştaki hem sondaki boşlukları siler. Üçü de metnin içindeki boşluklara dokunmaz.
Çalışma sayfası işlevi KIRP (TRIM) ise farklıdır; baştaki ve sondaki boşlukların yanında kelimeler arasındaki fazla boşlukları da tek boşluğa indirir. Hücrede kullanımı:
Excel formülü
=KIRP(A2)
=TRIM(A2)
VBA içinden bu çalışma sayfası işlevine Application.WorksheetFunction.Trim ile ulaşılır; bu, VBA'nın Trim işlevinden farklı davranır.

1. Ürün adlarının sonundaki boşlukları temizleme​

A sütunundaki ürün adlarının sonunda fazladan boşluklar var. Aşağıdaki kodu standart bir modüle yapıştırın. Makro, temizlenmiş adı B sütununa, temizlemeden önceki ve sonraki karakter sayılarını C ve D sütunlarına yazar.
VBA 17 satır
Option Explicit

' A sütunundaki ürün adlarının sağındaki boşlukları temizler
Sub SagBosluklariTemizle()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    For i = 2 To 7
        ' Temizlenmiş adı B sütununa yaz
        ws.Cells(i, 2).Value = RTrim(ws.Cells(i, 1).Value)
        ' Temizlemeden önceki ve sonraki karakter sayıları
        ws.Cells(i, 3).Value = Len(ws.Cells(i, 1).Value)
        ws.Cells(i, 4).Value = Len(ws.Cells(i, 2).Value)
    Next i
End Sub
RTrim
Formülünü incelemek için bir hücre seçin.
ABCD
1Ürün AdıTemiz AdÖnceki UzunlukSonraki Uzunluk
2Kalem Kalem85
3Defter Defter76
4SilgiSilgi55
5Kalemtıraş Kalemtıraş1410
6Cetvel Cetvel86
7Ataş Ataş54
Ürün ListesiExcelDepo v1.0.0
B2 hücresine temizlenmiş ad olarak Kalem yazıldı. İlk satırda ad önce 8 karakterdi, sondaki boşluklar silindikten sonra 5 karakter oldu. Aynı mantık diğer satırlar için de geçerlidir; ürün adının kendisi ve içindeki harfler değişmez.

2. LTrim, RTrim ve Trim farkını görme​

A sütunundaki şehir adlarının başında ve/veya sonunda boşluk var. Aşağıdaki kodu standart bir modüle yapıştırın. Boşlukların etkisini görebilmek için sonuçlar köşeli parantez içine alınarak yazılır.
VBA 17 satır
Option Explicit

' Üç kırpma işlevinin sonucunu köşeli parantezle gösterir
Sub KirpmaFarkiniGoster()
    Dim ws As Worksheet
    Dim i As Long
    Dim s As String

    Set ws = ActiveSheet

    For i = 2 To 5
        s = ws.Cells(i, 1).Value
        ws.Cells(i, 2).Value = "[" & LTrim(s) & "]"
        ws.Cells(i, 3).Value = "[" & RTrim(s) & "]"
        ws.Cells(i, 4).Value = "[" & Trim(s) & "]"
    Next i
End Sub
RTrim
Formülünü incelemek için bir hücre seçin.
ABCD
1Ham MetinLTrimRTrimTrim
2 Ankara (Ankara )( Ankara)(Ankara)
3 İzmir (İzmir )( İzmir)(İzmir)
4Bursa (Bursa )(Bursa)(Bursa)
5 Adana(Adana)( Adana)(Adana)
Kırpma FarkıExcelDepo v1.0.0
İlk satırda LTrim sütununda [Ankara ], RTrim sütununda [ Ankara], Trim sütununda [Ankara] görünür. Köşeli parantezler sayesinde LTrim'in yalnızca baştaki, RTrim'in yalnızca sondaki, Trim'in ise iki uçtaki boşlukları sildiği kolayca ayırt edilir. Dördüncü satırda boşluklar yalnızca başta olduğundan RTrim metni değiştirmez: [ Adana].

3. Sekme ve bölünemez boşluğu da silen özel işlev​

Dışarıdan aktarılan verilerde sonda sekme ya da bölünemez boşluk (ChrW(160)) bulunabilir; RTrim bunları silmez. Aşağıdaki kodu standart bir modüle yapıştırın. Kod, A sütunundaki metinlerin ham uzunluğunu, RTrim sonrası uzunluğunu ve özel SagTemizle işlevi sonrası uzunluğunu yazar. Bu örnekteki tabloda A2 ve A3 hücreleri gerçek bir bölünemez boşluk ya da sekme karakteri içermez; hücrelerde düz metin olarak \u00a0 ve \t yazısı bulunur. Bu nedenle bu iki satırda özel işlev de karakter silmez.
VBA 30 satır
Option Explicit

' Sondaki boşluk, sekme, bölünemez boşluk ve satır sonlarını siler
Function SagTemizle(ByVal metin As String) As String
    Dim son As String

    Do While Len(metin) > 0
        son = Right(metin, 1)
        If son = " " Or son = vbTab Or son = ChrW(160) Or son = vbLf Or son = vbCr Then
            metin = Left(metin, Len(metin) - 1)
        Else
            Exit Do
        End If
    Loop

    SagTemizle = metin
End Function

Sub UzunluklariKarsilastir()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ActiveSheet

    For i = 2 To 5
        ws.Cells(i, 2).Value = Len(ws.Cells(i, 1).Value)
        ws.Cells(i, 3).Value = Len(RTrim(ws.Cells(i, 1).Value))
        ws.Cells(i, 4).Value = Len(SagTemizle(ws.Cells(i, 1).Value))
    Next i
End Sub
RTrim
Formülünü incelemek için bir hücre seçin.
ABCD
1MetinHam UzunlukRTrim SonrasıÖzel Sonrası
2Konya\u00a0111111
3Van\t555
4Sivas 855
5Rize \t777
Özel TemizlikExcelDepo v1.0.0
İlk satırda ham uzunluk 11, RTrim sonrası 11, özel işlev sonrası 11 olur; üç değer aynıdır, yani bu satırda hiçbir işlev karakter silmemiştir. Bunun nedeni, hücrenin sonunda gerçek bir bölünemez boşluk yerine düz metin olarak yazılmış bir ifadenin bulunmasıdır. İkinci satırda da RTrim sonrası uzunluk 5, özel işlevin sonucu 5 çıkar; burada da ham uzunluktan bir değişiklik yoktur. Yalnızca normal boşluk içeren üçüncü satırda ise iki yöntem aynı sonucu verir: 5 ve 5.

Kullanırken dikkat edin​

  • Sonucu geri yazmayı unutmayın: RTrim özgün değeri değiştirmez, yalnızca yeni bir metin döndürür. Hücreyi temizlemek istiyorsanız sonucu aynı hücreye ya da başka bir hücreye yazmanız gerekir.
  • Yalnızca normal boşluğu siler: Sekme, satır sonu ve bölünemez boşluk (ChrW(160)) silinmez. Web'den ya da sistemlerden gelen verilerde bölünemez boşluk sık görülür; bu durumda Replace işleviyle ChrW(160) karakterini normal boşluğa çevirip ardından RTrim kullanabilir ya da bu karakterleri silen özel bir işlev yazabilirsiniz. Üçüncü örnekteki tabloda ise ilgili hücreler gerçek bu karakterleri değil düz metni içerdiğinden, o satırlarda hiçbir yöntem karakter silmemiştir.
  • Null değerlere dikkat: Null içeren bir değere RTrim uygulandığında sonuç Null olur. RTrim$ ise Null ile hata verir. Veri tabanından gelen alanlarda önce Null denetimi yapın.
  • Sayı görünümlü metinler: Hücrede sayı gibi görünen ama sonunda boşluk bulunan değerler metindir. RTrim boşluğu sildikten sonra sonucu hücreye yazdığınızda Excel metni sayıya çevirebilir; hücre biçimi Metin ise değer metin olarak kalır.
  • Çok sayıda hücrede hız: Büyük aralıklarda hücreleri tek tek okuyup yazmak yavaştır. Aralığı bir diziye aktarıp döngüde RTrim uygulayın ve diziyi tek seferde geri yazın; ayrıca işlem sırasında Application.ScreenUpdating özelliğini False yapmak süreyi kısaltır.
  • İlgili konular:
    • LTrim ve Trim işlevleri
    • Replace, Left, Right, Len ve ChrW işlevleri
    • Application.WorksheetFunction.Trim yöntemi
    • KIRP, TEMİZ, UZUNLUK ve YERİNEKOY işlevleri
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
12
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst