Excel'de gereksiz çaba harcamadan kelime sayısını hesaplama

Kerem Aydın·13 Temmuz 2026·⏱4 dk

Excel'de bir hücredeki kelime sayısını hızlıca hesaplamak için LEN, TRIM ve SUBSTITUTE fonksiyonlarının kombinasyonunu kullanın. A1 hücresi için temel formül şöyledir: =LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1);" ";""))+1. Bu formül fazla boşlukları kaldırır, boşluksuz metin uzunluğunu toplam uzunluktan çıkarır ve bir ekler. Bu yöntem editörün tüm sürümlerinde çalışır ve eklenti kurulumu gerektirmez.

Excel arayüzünde standart bir "Kelime Say" düğmesi yoktur, ancak yerleşik fonksiyonlar görevi saniyeler içinde çözmenize olanak tanır. Aşağıda tek bir hücrenin analizinden makrolar aracılığıyla binlerce satırın işlenmesine kadar farklı senaryolar için hazır çözümler sunulmaktadır.

Önemli: Türkçe Excel sürümünde formüllerdeki argüman ayırıcı genellikle noktalı virgül (;) iken, İngilizce sürümde virgül (,) kullanılır. Örnekleri bölge ayarlarınıza göre uyarlayın.

Tek bir hücre için formül

Belirli bir metindeki tam kelime sayısını elde etmenin en güvenilir yolu, çift boşlukları ve girintileri yok sayan bir formül kullanmaktır.

Herhangi bir boş hücreye şunu yazın:

=LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1);" ";""))+1

Çalışma prensibi:

  1. TRIM(A1): Metnin başındaki ve sonundaki tüm boşlukları kaldırır ve kelimeler arasındaki çoklu boşlukları tek bir boşluğa indirir.
  2. SUBSTITUTE(...; " "; ""): Temizlenmiş metindeki tüm boşlukları tamamen kaldırır.
  3. Uzunluk farkı: Boşluklu metin uzunluğundan boşluksuz metin uzunluğunun çıkarılması, ayraç (boşluk) sayısını verir.
  4. +1: Kelime sayısı her zaman ayraç (boşluk) sayısından bir fazladır.

Hücre boşsa, formül 1 döndürür. Bunu düzeltmek ve 0 almak için ifadeyi bir kontrol içine alın:

=IF(A1=""; 0; LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1);" ";""))+1)

Aralıkta veya sütunda kelime sayma

Birden fazla hücredeki kelimeleri hemen toplamak için (örneğin, A1:A10 aralığında) SUMPRODUCT fonksiyonu mükemmeldir, çünkü Ctrl+Shift+Enter tuşlarına basmaya gerek kalmadan dizileri işler.

Aralık için formül:

=SUMPRODUCT(LEN(TRIM(A1:A10))-LEN(SUBSTITUTE(TRIM(A1:A10);" ";""))+(A1:A10<>""))

Hesaplama mantığı:

  • Ana kısım, aralıktaki her hücredeki kelimeleri sayar.
  • (A1:A10<>"") kısmı, yalnızca boş olmayan hücrelere bir ekler ve hücrede tek bir kelime yazıldığında (içinde boşluk olmadan) durumları doğru şekilde işler.
  • Boş hücreler otomatik olarak sıfır olarak kabul edilir.

Bu formül evrenseldir: Kısa listelerle birkaç yüz satırlık tablolarla aynı derecede iyi çalışır ve dosyanın çalışma hızını yavaşlatmaz.

Noktalama işaretlerinin dikkate alınması

Standart formül, virgül bir boşluk olmadığı için "Merhaba,dünya!" yapısını iki kelime olarak sayar. Yüksek doğruluk ve noktalama işaretlerinin yok sayılması gerekiyorsa, noktalama işaretlerinin önceden boşluklarla değiştirilmesi gerekir.

A1 hücresi için karmaşıklaştırılmış formül (virgülleri, noktaları, ünlem ve soru işaretlerini kaldırır):

=LET(
  clean; SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1; ","; " "); "."; " "); "!"; " "); "?"; " ");
  words; LEN(TRIM(clean))-LEN(SUBSTITUTE(TRIM(clean); " "; ""))+1;
  IF(A1=""; 0; words)
)

Not: LET fonksiyonu Excel 365 ve 2021+ sürümlerinde mevcuttur. Eski sürümler için SUBSTITUTE fonksiyonlarını doğrudan iç içe yerleştirmek gerekecektir, bu da formülü çok uzun hale getirecektir.

Eski Excel sürümlerinde iç içe geçmiş SUBSTITUTE kullanarak tüm olası karakterleri kaldırmaya çalışmayın. 7-8 seviye iç içe geçmeden sonra formül zor okunur hale gelir ve büyük tablolar hesaplanırken performansı düşürebilir.

Büyük veriler için VBA ile otomasyon

On binlerce satır içeren dosyalarla çalışıyorsanız, karmaşık formüllerin yeniden hesaplanması çok zaman alabilir. Bu durumda, VBA dilinde kullanıcı tanımlı bir fonksiyon oluşturmak daha etkilidir.

  1. Makro düzenleyicisini açmak için Alt + F11 tuşlarına basın.
  2. Menüden Insert > Module seçeneğini seçin.
  3. Aşağıdaki kodu yapıştırın:
Function CountWords(rng As Range) As Long
    Dim cell As Range
    Dim total As Long
    Dim txt As String
    
    Application.Volatile True
    total = 0
    
    For Each cell In rng
        If Not IsEmpty(cell.Value) Then
            txt = Trim(CStr(cell.Value))
            If Len(txt) > 0 Then
                ' Boşlukları say + 1 ekle
                total = total + (Len(txt) - Len(Replace(txt, " ", "")) + 1)
            End If
        End If
    Next cell
    
    CountWords = total
End Function
  1. Düzenleyiciyi kapatın ve yeni fonksiyonu normal bir formül gibi hücrede kullanın:
    =CountWords(A1:A1000)
    ```

**Yöntemin avantajları:**
*   Büyük verilerde массивные formüllere göre çok daha hızlı çalışır.
*   Kodun bakımı daha kolaydır ve özel sayma kurallarına göre değiştirilebilir.
*   Dosya **.xlsm** formatında (makro destekli çalışma kitabı) kaydedilmelidir.

## Sık yapılan hatalar ve çözümleri

Kelime sayarken kullanıcılar sonucu bozan tipik sorunlarla sıkça karşılaşır.

<div class="table-container"><table style="border-collapse: collapse; width: 100%; margin: 16px 0;"><thead><tr><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Sorun</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Neden</th><th style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; background: #f9fafb; font-weight: 600;">Çözüm</th></tr></thead><tbody><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>Sonuç olduğundan yüksek</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Çift boşlukların veya girintilerin varlığı</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Hesaplamadan önce mutlaka <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">TRIM</code> fonksiyonunu kullanın.</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>Boş hücre 1 kelime olarak sayılıyor</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">+1</code> formülü boşluklara bile uygulanıyor</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">IF(Hücre=&quot;&quot;; 0; ...)</code> koşulunu ekleyin.</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>#DEĞER! hatası</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Aralıkta sayılar veya hatalar var</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">IFERROR</code> kullanın veya aralığın yalnızca metin içerdiğinden emin olun.</td></tr><tr><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;"><strong>Satır sonlarının yok sayılması</strong></td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Metin <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">CHAR(10)</code> karakterleri içeren web formlarından alındı</td><td style="border: 1px solid #e5e7eb; padding: 8px; text-align: left; vertical-align: top;">Ana hesaplamadan önce <code style="background-color: rgba(0,0,0,0.05); padding: 2px 4px; border-radius: 3px; font-family: monospace; font-size: 0.9em;">SUBSTITUTE(...; CHAR(10); &quot; &quot;)</code> ekleyin.</td></tr></tbody></table></div>


## SSS

**Tüm sayfadaki kelimeler aynı anda sayılabilir mi?**
Evet, tüm sütun için aralık formülü kullanın (örneğin, `A:A`) veya `CountWords` makrosunu gerekli alana uygulayın. Ancak tüm sayfanın (1 milyondan fazla satır) işlenmesi arayüzü geçici olarak dondurabilir.

**Bu yöntem diğer diller için çalışır mı?**
Evet, prensip boşluk ayraçlarının sayılmasına dayanır. Boşluk kullanan İngilizce, Rusça, Almanca ve diğer diller için doğru çalışır. Kelime ayırıcı olarak boşluk kullanmayan Çince veya Japonca metinler için karmaşık komut dosyaları veya sözlükler gerekir.

**Metin değiştikten sonra veriler nasıl güncellenir?**
Formüller, sayfadaki herhangi bir değişiklikte otomatik olarak yeniden hesaplanır. Makro (VBA) kullanıyorsanız, sonuç yalnızca formül tekrar girildikten veya zorunlu yeniden hesaplama (`F9`) yapıldıktan sonra güncellenir.