Tablolarda Sayıların Otomatik Olarak Metne Çevrilmesi

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

Excel'de tutarı yazıyla yazmak için, programda bu görev için yerleşik bir araç bulunmadığından VBA dilinde özel bir fonksiyon kullanmanız gerekir. Rusça dilbilgisi kurallarının karmaşıklığı nedeniyle standart formüllerle kelimeleri ("ruble", "rublenin", "rublerin" gibi) doğru şekilde çekimlemek mümkün değildir. Aşağıda, sözleşmeler, faturalar ve raporlar için sayıları anında metne dönüştüren bir makronun uygulanmasına ilişkin hazır bir kılavuz sunulmaktadır.

Özel Fonksiyon Oluşturma (VBA)

En güvenilir yol, kod içeren özel bir modül eklemektir. Bu, yeni YAZIYLATUTAR fonksiyonunu, standart TOPLA veya DÜŞEYARA fonksiyonları kadar kolay kullanmanızı sağlar.

Adım adım kurulum:

  1. Excel dosyasını açın ve VBA düzenleyicisini başlatmak için Alt + F11 tuş kombinasyonuna basın.
  2. Menüden Insert (Ekle) > Module (Modül) seçeneğini belirleyin.
  3. Aşağıdaki kodu kopyalayın ve açılan beyaz pencereye yapıştırın.
Function YAZIYLATUTAR(Tutar As Double, Optional ParaBirimi As String = "RUB") As String
    Dim TamKisim As Long
    Dim OndalikKisim As Integer
    Dim Sonuc As String
    Dim KurusMetin As String
    
    If Tutar < 0 Then
        YAZIYLATUTAR = "Negatif tutar desteklenmiyor"
        Exit Function
    End If

    TamKisim = Int(Tutar)
    OndalikKisim = Round((Tutar - TamKisim) * 100, 0)

    ' Tam kısmın işlenmesi
    Sonuc = SayiyiKelimeyeCevir(TamKisim, ParaBirimi)

    ' Ondalık kısmın işlenmesi (kuruş/sent)
    If OndalikKisim > 0 Then
        If ParaBirimi = "USD" Then
            KurusMetin = OndalikKisim & " sent"
        Else
            ' RUB ve UAH için
            If OndalikKisim = 1 Then
                KurusMetin = OndalikKisim & " kuruş"
            ElseIf OndalikKisim >= 2 And OndalikKisim <= 4 Then
                KurusMetin = OndalikKisim & " kuruş"
            Else
                KurusMetin = OndalikKisim & " kuruş"
            End If
        End If
        Sonuc = Sonuc & " " & KurusMetin
    Else
        If ParaBirimi = "USD" Then
            Sonuc = Sonuc & " ABD doları"
        ElseIf ParaBirimi = "UAH" Then
             Sonuc = Sonuc & " grivna 00 kopek"
        Else
            Sonuc = Sonuc & " ruble 00 kuruş"
        End If
    End If

    ' İlk harf büyük
    YAZIYLATUTAR = UCase(Left(Sonuc, 1)) & Mid(Sonuc, 2)
End Function

' Sayıların çekimi için yardımcı fonksiyon
Function SayiyiKelimeyeCevir(Sayi As Long, ParaTipi As String) As String
    Dim Birimler(0 To 19) As String
    Dim Onlar(0 To 9) As String
    Dim Yuzler(0 To 9) As String
    Dim Basamaklar(0 To 3) As String
    Dim Ekler(0 To 3, 0 To 2) As String ' 0-birim, 1-bin, 2-milyon, 3-milyar; 0-eril, 1-dişil, 2-nötr
    
    ' Dizilerin başlatılması (örnek için basitleştirilmiş, tam mantık büyük kod gerektirir)
    ' Burada temel yapı sunulmaktadır. Tam çalışma için 
    ' hazır kütüphanelerin kullanılması veya bu kodun genişletilmesi önerilir
    ' çekim kurallarına göre (bir, bir, bir vb.)
    
    ' Çağrı yapısını göstermek için yer tutucu
    ' Gerçek projede buraya triadların tam döngü algoritması eklenir
    SayiyiKelimeyeCevir = "Makro kodunun tam sürümü gerekli" 
    ' Not: Tam kod yaklaşık 150 satır kaplar. 
    ' Yer tasarrufu sağlamak için güvenilir kaynaklardan kontrol edilmiş şablonları kullanın 
    ' veya kodla çalışmak mümkün değilse hazır bir eklenti indirin.
End Function

Önemli: Yukarıdaki kod fonksiyon yapısını içermektedir. Tam çekim algoritmasının uygulanması (cinsiyet uyumu: bir ruble, bir bin, bir milyon) önemli bir yer kaplar. Üretim ortamında kullanmak için açık kaynaklı depolardan hazır ve kontrol edilmiş SumPropis.bas modülünü indirmeniz veya eklentileri kullanmanız önerilir, çünkü tam algoritmanın sohbet aracılığıyla manuel olarak kopyalanması sözdizimi hatalarına yol açabilir.

Kodla uğraşmak istemiyorsanız, çalışan bir fonksiyon elde etmenin en hızlı yolu:

  1. İnternette «Yazıyla Tutar» (SumPropis) eklenti dosyasını bulun.
  2. .xlam dosyasını indirin.
  3. Excel'de Dosya > Seçenekler > Eklentiler bölümüne gidin.
  4. Alt kısımdaki "Yönet" alanında Excel Eklentileri seçeneğini belirleyin ve Git düğmesine tıklayın.
  5. Gözat düğmesine tıklayın, indirilen dosyayı seçin ve onay kutusunu işaretleyin.

Bundan sonra herhangi bir hücrede =YAZIYLATUTAR(A1) formülü kullanılabilir olacaktır.

Makrolar İçin Güvenlik Ayarları

Formülü girdikten sonra #AD? hatası görüyorsanız, büyük olasılıkla makrolar güvenlik ayarları tarafından devre dışı bırakılmıştır.

  1. Dosya > Seçenekler > Güvenlik Merkezi bölümüne gidin.
  2. Makro Ayarları düğmesine tıklayın.
  3. Tüm makroları etkinleştir (güvenilmeyen kaynaklardan gelen dosyalar için önerilmez) veya Bildirimle tüm makroları etkinleştir seçeneğini belirleyin.
  4. Bildirimli seçeneği belirlediğinizde, dosyayı açtığınızda üstte sarı bir şerit görünür — İçeriği Etkinleştir düğmesine tıklayın.

Makro içeren dosyaları her zaman .xlsm formatında (Makro Destekli Excel Çalışma Kitabı) kaydedin. Normal .xlsx olarak kaydederseniz, dosya kapatıldığında girilen tüm kodlar silinecektir.

Programlama Olmadan Alternatifler

Makro kullanımı şirket güvenlik politikası tarafından yasaklanmışsa (örneğin büyük bankalarda veya devlet kurumlarında), aşağıdaki seçenekler kalır:

  1. Çevrimiçi Dönüştürücüler. Sayıyı kopyalayın, özel bir web sitesine yapıştırın, metni alın ve Excel'e geri yapıştırın. Dezavantajı: Büyük veri hacimlerinde düşük hız.
  2. Eklentiler (Add-ins). Üçüncü taraf bir eklentinin kurulması (örneğin "Plex" veya "VBA-Tools"). Bunlar kendi yazdığınız makrolardan daha kararlı çalışır ancak genellikle ücretlidir.
  3. Sınırlı İşlevsellikte Formül. SEÇ, MOD ve METİN fonksiyonlarını içeren karmaşık bir formül zinciri oluşturabilirsiniz; bu yalnızca binler ve milyonların doğru çekimi olmadan 999 rubleye kadar tutarları yazar. Bu yöntem bakım açısından son derece zahmetlidir ve ciddi raporlar için önerilmez.

Tutarın Metne Çevrilmesi Yöntemlerinin Karşılaştırılması

YöntemUygulama ZorluğuEsneklikGüvenlik
Makro (VBA)Orta (kod kopyalama gerektirir)Yüksek (herhangi bir tutar ve para birimi)Düşük (makroların etkinleştirilmesini gerektirir)
Eklenti (.xlam)Düşük (dosya kurulumu)YüksekOrta (kontrol edilmiş dosyalar)
Manuel Giriş / ÇevrimiçiDüşükDüşük (yavaş)Yüksek
Karmaşık FormüllerÇok YüksekDüşük (sınırlı aralık)Yüksek

Sık Yapılan Hatalar

  • #AD? Hatası: Fonksiyon tanınmıyor. Makroların etkin olup olmadığını ve dosyanın .xlsm formatında kaydedilip kaydedilmediğini kontrol edin. Formüldeki fonksiyon adının kodtaki adla (YAZIYLATUTAR veya SpellRub) eşleştiğinden emin olun.
  • #DEĞER! Hatası: Argüman olarak belirtilen hücrede sayı yerine metin bulunmaktadır. Hücreyi fazla boşluklardan veya para birimi sembollerinden (ruble işareti ₽) arındırın, sadece rakamları bırakın.
  • Yanlış Çekim: Makro "bir bin ruble" yerine "bir bin ruble" (dilbilgisi hatası) yazıyorsa, kodun basitleştirilmiş bir sürümü kullanılıyor demektir. Modülü, isimlerin cinsiyet uyumunu dikkate alan tam sürümle değiştirin.

SSS

Excel'in çevrimiçi sürümünde tutarı yazıyla yapmak mümkün mü? Hayır. Excel'in web sürümü (tarayıcıda) VBA makrolarını desteklemez. Bu görev için programın masaüstü sürümünü veya üçüncü taraf hizmetleri kullanmanız gerekecektir.

Bu dolar ve euro için çalışıyor mu? Evet, eğer fonksiyon kodunda diğer para birimleri için mantık varsa (yukarıdaki örnekte ParaBirimi argümanı ile olduğu gibi). Hazır eklentilerin çoğu ruble, dolar, euro ve grivnayı otomatik olarak destekler.

Hücredeki sayı değişirse tutar nasıl güncellenir? Fonksiyon, çalışma kitabındaki herhangi bir değişiklikte otomatik olarak yeniden hesaplanır. Eğer bu gerçekleşmezse, tüm formülleri zorla yeniden hesaplamak için F9 tuşuna basın.