Excel'de Yazıyı Rakama Çevirme: VBA ile Doğru Yöntem
Excel'de "Beş yüz elli" gibi metinle yazılmış bir sayıyı 550 rakamına veya "10.000 TL" gibi bir tutarı 10000 rakamına çevirmek için yerleşik bir formül yoktur. Bunun yerine, Excel'in programlama dili olan VBA ile özel bir kod yazmamız gerekir. Aşağıda, bu işlemi nasıl yapacağınızı baştan sona, hiç bilmeyen birine uygun şekilde anlatıyorum.
Adım 1: VBA Editor'ü Açma
Excel dosyanızı açın.
Klavyenizden Alt + F11 tuşlarına basın. Bu, VBA Editor penceresini açar.
VBA Editor'de, sol üstteki menüden Insert (Ekle) > Module (Modül) seçeneğine tıklayın. Bu, kod yazacağımız yeni bir alan oluşturur.
Adım 2: VBA Kodu Yazma
Aşağıdaki kodu, açılan modül penceresine kopyalayıp yapıştırın. Bu kod, Türkçe metinle yazılmış sayıları rakama çevirebilen basit bir örnektir:
vba
DaraltMetni gizleKopyala
Function MetniRakamaCevir(metin As String) As Double
Dim sonuc As Double
Dim kelime As String
Dim i As Integer
' Metni küçük harfe çevir ve gereksiz boşlukları kaldır
metin = LCase(Trim(metin))
' Türkçe sayıları ve çarpanları tanımla
Select Case metin
Case "sıfır": sonuc = 0
Case "bir": sonuc = 1
Case "iki": sonuc = 2
Case "üç": sonuc = 3
Case "dört": sonuc = 4
Case "beş": sonuc = 5
Case "altı": sonuc = 6
Case "yedi": sonuc = 7
Case "sekiz": sonuc = 8
Case "dokuz": sonuc = 9
Case "on": sonuc = 10
Case "yirmi": sonuc = 20
Case "otuz": sonuc = 30
Case "kırk": sonuc = 40
Case "elli": sonuc = 50
Case "altmış": sonuc = 60
Case "yetmiş": sonuc = 70
Case "seksen": sonuc = 80
Case "doksan": sonuc = 90
Case "yüz": sonuc = 100
Case "bin": sonuc = 1000
Case Else
' Birden fazla kelime varsa (örneğin "beş yüz")
If InStr(metin, " ") > 0 Then
Dim kelimeler() As String
kelimeler = Split(metin, " ")
sonuc = 0
For i = 0 To UBound(kelimeler)
Select Case kelimeler(i)
Case "bir": sonuc = sonuc + 1
Case "iki": sonuc = sonuc + 2
Case "üç": sonuc = sonuc + 3
Case "dört": sonuc = sonuc + 4
Case "beş": sonuc = sonuc + 5
Case "altı": sonuc = sonuc + 6
Case "yedi": sonuc = sonuc + 7
Case "sekiz": sonuc = sonuc + 8
Case "dokuz": sonuc = sonuc + 9
Case "on": sonuc = sonuc + 10
Case "yirmi": sonuc = sonuc + 20
Case "otuz": sonuc = sonuc + 30
Case "kırk": sonuc = sonuc + 40
Case "elli": sonuc = sonuc + 50
Case "altmış": sonuc = sonuc + 60
Case "yetmiş": sonuc = sonuc + 70
Case "seksen": sonuc = sonuc + 80
Case "doksan": sonuc = sonuc + 90
Case "yüz": sonuc = sonuc * 100
Case "bin": sonuc = sonuc * 1000
End Select
Next i
Else
sonuc = 0 ' Tanımlı değilse 0 döndür
End If
End Select
MetniRakamaCevir = sonuc
End Function
Adım 3: Kodu Kaydetme
Kodu yapıştırdıktan sonra, VBA Editor'de File (Dosya) > Save (Kaydet) seçeneğine tıklayın.
Ardından Alt + F11 ile Excel'e geri dönün.
Adım 4: Excel'de Kodu Kullanma
Excel'de bir hücreye metin yazın, örneğin A1 hücresine "beş yüz elli".
Başka bir hücreye şu formülü yazın: =MetniRakamaCevir(A1)
Enter'a basın. Hücrede 550 sonucunu göreceksiniz.
Nasıl Çalışır?
Bu kod, Türkçe'de yazılmış sayıları tanır (örneğin "beş", "yüz", "bin").
Birden fazla kelime içeren ifadeleri toplar (örneğin "beş yüz" = 500, "elli" = 50, toplam 550).
Büyük sayılar için "bin" gibi çarpanları da hesaba katar.
Örnekler
A Hücresi (Metin)
Formül
Sonuç (Rakam)
beş yüz elli
=MetniRakamaCevir(A1)
550
on bin
=MetniRakamaCevir(A2)
10000
üç
=MetniRakamaCevir(A3)
3
Sınırlamalar ve Notlar
Basitlik: Bu kod, temel Türkçe sayıları çevirir. Daha karmaşık ifadeler (örneğin "on bir" veya "yüz otuz iki") için kodu genişletmek gerekir.
Para Birimi: "10.000 TL" gibi formatları çevirmek için ek bir fonksiyon veya düzenleme gerekebilir.
Hata Kontrolü: Eğer metin tanınmazsa, kod 0 döndürür. İsterseniz hata mesajı ekleyebilirsiniz.
Daha Gelişmiş Bir Çözüm İstiyorsanız
Eğer "On bin Türk Lirası" gibi ifadeleri veya "1.234,56 TL" gibi noktayla ayrılmış tutarları çevirmek istiyorsanız, kodu şu şekilde geliştirebiliriz:
vba
DaraltMetni gizleKopyala
Function ParaBirimiCevir(metin As String) As Double
Dim sonuc As Double
metin = Trim(metin) ' Boşlukları temizle
' "TL" veya para birimini kaldır
metin = Replace(metin, "TL", "")
metin = Replace(metin, "Türk Lirası", "")
' Noktaları ve virgülleri düzenle
metin = Replace(metin, ".", "")
metin = Replace(metin, ",", ".")
' Sayıya çevir
If IsNumeric(metin) Then
sonuc = CDbl(metin)
Else
sonuc = MetniRakamaCevir(metin) ' Metin sayıysa önceki fonksiyona yönlendir
End If
ParaBirimiCevir = sonuc
End Function
Bu fonksiyonu kullanarak:
=ParaBirimiCevir("10.000 TL") → 10000
=ParaBirimiCevir("beş yüz") → 500
Excel'de yazıyı rakama çevirmek için şu anda VBA dışında bir çözüm yok. Yukarıdaki adımları takip ederek kendi özel fonksiyonunuzu oluşturabilir ve Excel'de bu işlemi kolayca yapabilirsiniz.