Özellik ikonu

Len

İndirme izni yok

Genel Bakış

Len (Len function), bir metin ifadesindeki karakter sayısını veren VBA işlevidir. Metin değişkenlerinde karakter sayısını, Integer ya da Double gibi sayısal türlerde ise değişkenin bellekte kapladığı bayt sayısını döndürür. Kod doğrulama, sabit uzunluklu alan hazırlama, metin ayrıştırma ve döngü sınırı belirleme gibi işlerde sık kullanılır.

Söz dizimi​

Len işlevi iki biçimde yazılır:
VBA 2 satır
Len(string)
Len(varname)
  • string: Karakter sayısı bulunacak herhangi bir metin ifadesi; zorunludur. varname ile birlikte kullanılmaz, ikisinden biri verilir.
  • varname: Herhangi bir geçerli değişken adı; zorunludur. Variant türündeki değişken, metin gibi ele alınır ve içeriğinin karakter sayısı döndürülür.
İşlev bir Long değeri döndürür. Argüman olarak hücre başvurusu verecekseniz Cells(1, 1).Value gibi değerini açıkça yazmanız daha okunaklı ve güvenlidir.

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

Len işlevinin sonucu, verdiğiniz bağımsız değişkenin türüne göre değişir:
  • Metin (String): Boşluklar, noktalama işaretleri ve satır sonu karakterleri dahil tüm karakterler sayılır. Boş metin için sonuç 0'dır.
  • Variant: İçindeki değer metne çevrilir ve karakter sayısı verilir. Örneğin Variant içindeki 12345 sayısı için sonuç 5'tir.
  • Sayısal değişkenler: Değişken Integer, Long, Double gibi bildirilmişse karakter sayısı değil, değişkenin kapladığı bayt sayısı döndürülür. Integer için 2, Long için 4, Double için 8'dir.
  • Sabit uzunluklu String: Bildirimde belirtilen uzunluk döndürülür; içine daha kısa bir metin atanmış olması sonucu değiştirmez.
  • Null: Bağımsız değişken Null içeriyorsa sonuç da Null olur.
  • Kullanıcı tanımlı tür: Değişken Type ile tanımlanmış bir türse toplam bayt boyutu döndürülür.
Baytı sayan karşılığı LenB işlevidir; çift baytlı karakter kümelerinde Len ile LenB sonuçları farklı çıkar.

Sık kullanım kalıpları​

Len tek başına kullanıldığı kadar diğer metin işlevleriyle birlikte de güçlüdür:
  • Son karakteri atmak: Left(s, Len(s) - 1) biçiminde yazılır.
  • Belirli bir karakterin kaç kez geçtiğini bulmak: Len(s) - Len(Replace(s, ";", "")) ifadesi, metinden o karakter çıkarıldığında kısalan miktarı verir.
  • Sıfırla doldurmak: String(6 - Len(s), "0") & s ile metin soldan sıfırlarla 6 haneye tamamlanır.
  • Boş metin denetimi: If Len(s) = 0 Then kontrolü, metni boş metinle karşılaştırmaya göre hızlı ve nettir.
Çalışma sayfasında aynı işi yapan işlev UZUNLUK'tur:
Excel formülü
=UZUNLUK(A2)
=LEN(A2)

1. Karakter ve etiket sayısını bulma​

Ürünlerin etiketleri noktalı virgülle ayrılmış olarak A sütunundadır. Makro, her satır için karakter sayısını B sütununa, etiket adedini C sütununa yazar. Kodu standart bir modüle (Ekle > Modül) yapıştırın.
VBA 20 satır
Option Explicit

Sub EtiketSay()
    Dim ws As Worksheet
    Dim i As Long
    Dim s As String

    Set ws = ActiveSheet
    For i = 2 To 7
        s = ws.Cells(i, 1).Value
        ' Len, boşluklar dahil tüm karakterleri sayar
        ws.Cells(i, 2).Value = Len(s)
        If Len(s) = 0 Then
            ws.Cells(i, 3).Value = 0
        Else
            ' Ayraç çıkarılınca kısalan miktar ayraç sayısını verir
            ws.Cells(i, 3).Value = Len(s) - Len(Replace(s, ";", "")) + 1
        End If
    Next i
End Sub
Len
Formülünü incelemek için bir hücre seçin.
ABC
1EtiketlerKarakter SayısıEtiket Adedi
2elektronik;ev;mutfak203
3kırtasiye91
4bahçe;ev 92
500
6spor;outdoor;kamp;yürüyüş254
7oyuncak;hediye142
Etiket SayımıExcelDepo v1.0.0
İlk satırda makro 20 karakter sayar ve ayraçlara bakarak 3 etiket bulur. Üçüncü veri satırındaki metnin sonunda bir boşluk vardır; Len bu boşluğu da saydığı için sonuç 9 çıkar. Boş hücrede karakter sayısı 0, etiket adedi 0 olur; bu yüzden etiket sayımından önce Len(s) = 0 denetimi yapılmıştır.

2. Sipariş numarasını 6 haneye tamamlama​

A sütunundaki sipariş numaraları metin olarak girilmiştir. Makro, numaraları soldan sıfırla 6 haneye tamamlayıp B sütununa yazar; 6 haneden uzun olanları C sütununda uyarır. Kodu standart bir modüle yapıştırın.
VBA 26 satır
Option Explicit

Sub SiparisNoDoldur()
    Dim ws As Worksheet
    Dim i As Long
    Dim sonSatir As Long
    Dim s As String
    Const HANE As Long = 6

    Set ws = ActiveSheet
    sonSatir = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Baştaki sıfırlar kaybolmasın diye B sütununu metin biçimine alın
    ws.Range("B2:B" & sonSatir).NumberFormat = "@"

    For i = 2 To sonSatir
        s = Trim(ws.Cells(i, 1).Value)
        If Len(s) > HANE Then
            ws.Cells(i, 3).Value = "Çok uzun"
        Else
            ' Eksik hane kadar sıfır üretip numaranın soluna ekleyin
            ws.Cells(i, 2).Value = String(HANE - Len(s), "0") & s
            ws.Cells(i, 3).Value = "Tamam"
        End If
    Next i
End Sub
Len
Formülünü incelemek için bir hücre seçin.
ABC
1Sipariş NoDoldurulmuş NoDurum
245000045Tamam
31207001207Tamam
48000008Tamam
593015093015Tamam
6123456123456Tamam
71234567Çok uzun
Sipariş NumaralarıExcelDepo v1.0.0
Birinci numara 000045 olarak tamamlanır ve durum Tamam yazılır. Tek haneli numara 000008 biçimini alır. Tam 6 haneli numara olduğu gibi kalır (123456). Son satırdaki numara 6 haneden uzun olduğu için B sütunu doldurulmaz ve durum sütununda Çok uzun uyarısı görünür. B sütunu önce metin biçimine alındığı için baştaki sıfırlar silinmez.

3. Değişken türlerine göre Len sonucu​

Aynı işlevin metin, sayısal ve Variant değişkenlerde farklı sonuç verdiğini göstermek için makro, her türden bir değişken tanımlar ve Len sonucunu C sütununa yazar. Kodu standart bir modüle yapıştırın.
VBA 27 satır
Option Explicit

Sub TurBoyutlari()
    Dim ws As Worksheet
    Dim sMetin As String
    Dim iSayi As Integer
    Dim lSayi As Long
    Dim dSayi As Double
    Dim vSayi As Variant

    sMetin = "Merhaba"
    iSayi = 100
    lSayi = 100000
    dSayi = 3.14
    vSayi = 12345

    Set ws = ActiveSheet

    ' String: karakter sayısı
    ws.Range("C2").Value = Len(sMetin)
    ' Integer, Long, Double: bellekte kapladığı bayt sayısı
    ws.Range("C3").Value = Len(iSayi)
    ws.Range("C4").Value = Len(lSayi)
    ws.Range("C5").Value = Len(dSayi)
    ' Variant: içeriğin metin olarak karakter sayısı
    ws.Range("C6").Value = Len(vSayi)
End Sub
Len
Formülünü incelemek için bir hücre seçin.
ABC
1Değişken TürüÖrnek DeğerLen Sonucu
2StringMerhaba7
3Integer1002
4Long1000004
5Double3,148
6Variant123455
Tür BoyutlarıExcelDepo v1.0.0
String değişkeninde sonuç karakter sayısıdır (7). Sayısal türlerde ise bayt boyutu döner: Integer için 2, Long için 4, Double için 8. Variant değişkeninde değer metne çevrilip karakterleri sayıldığı için sonuç 5 olur. Sayının kaç basamaklı olduğunu öğrenmek istiyorsanız değişkeni Variant ya da String olarak tutmanız veya önce CStr ile metne çevirmeniz gerekir.

Kullanırken dikkat edin​

  • Sayısal değişkenlerde karakter sayısı beklemeyin: Integer, Long ya da Double olarak bildirilmiş bir değişkende Len bayt sayısı verir. Basamak sayısı gerekiyorsa Len(CStr(sayi)) biçiminde metne çevirin.
  • Null değeriyle dikkatli olun: Veritabanından ya da bir Variant değişkenden gelen değer Null ise Len sonucu da Null olur. Bu sonucu Long türünde bir değişkene atarsanız "Null kullanımı geçersiz" hatası alırsınız. Güvenli yol, Len(deger & "") yazmaktır.
  • Boşlukları unutmayın: Baştaki ve sondaki boşluklar da sayılır. Kullanıcı girdilerini denetlerken Len(Trim(s)) kullanmak yanlış uyarıları önler. Web'den kopyalanan metinlerde bölünmez boşluk (Chr(160)) bulunabilir; Trim bunu temizlemez, Replace ile ayrıca silmeniz gerekir.
  • Hücre değerini açıkça yazın: Hücredeki sayı biçimli görünür ancak asıl değeri farklıdır. Örneğin 0,5 değeri yüzde biçiminde 50% görünür, ancak .Value ile okunan metin 0,5'tir. Ekrandaki görünümün uzunluğu gerekiyorsa .Text özelliğini kullanın; sonuç hücre genişliğine ve biçime bağlıdır.
  • Emoji ve özel karakterler: VBA metinleri UTF-16 olarak tutar. Bazı emoji ve nadir karakterler iki kod birimi kapladığı için Len bunları 2 karakter olarak sayabilir.
  • İlgili konular:
    • LenB: Metnin kapladığı bayt sayısını verir.
    • Left, Right, Mid: Metnin belirli bölümünü alan VBA işlevleri; konum hesabında sıkça Len ile birlikte kullanılır.
    • Trim, LTrim, RTrim: Baştaki ve sondaki boşlukları siler.
    • Replace ve InStr: Metin içinde değiştirme ve arama yapar.
    • String: Bir karakteri belirli sayıda tekrarlar; doldurma işlemlerinde kullanılır.
    • UZUNLUK: Çalışma sayfasındaki karşılığı olan işlev; ilgili işlevler SOLDAN, SAĞDAN, PARÇAAL ve KIRP işlevleridir.
Ö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
11
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst