Cuma, 28 Temmuz 2017

Excel’de Sayıyı Metne Çevirme

Excel’de kullanıcıların en çok istedikleri olaylardan bir tanesi de bir hücrenin içindeki sayısal verinin başka bir hücreye metinsel olarak yazdırılmasıdır.

Bu olay en çok Excel üzerinde fatura şablonu oluşturulup basılması esnasında karşımıza çıkar.

Öncelikle şunu belirtmek istiyorum, bunu direk olarak yapan Excel’in bir özelliği yoktur. Bunu yapabilmek için Excel’in VBA tarafını kullanacağız. Yani Visual Basic Applications kullanarak Excel üzerinde bunu gerçekleştirecek fonksiyonu oluşturup, sayfamızda bu fonksiyonu kullanarak sonuca ulaşacağız.

1.adım: Öncelikle ALT+F11 tuş bileşenini kullanarak Excel VBA ara yüzünü açacağız.

2.adım: Menü çubuğundaki Insert seçeneğine tıklamak suretiyle açılan menüden Module seçeneğini seçiyoruz. Bunu yapmamızdaki amaç kullanacağımız VBA kodumuzun dosyamızdaki her sayfada kullanılabilir olmasını sağlatmaktır.

3.adım: Module seçeneğini ile boş bir module sayfası açmış olduk.

4.adım: Aşağıda yazmış olduğum VBA kodunu bu pencerenin içine kopyala-yapıştır metodu ile yapıştırınız.

Function ParaCevir(Para, Optional PBirim = “Lira”, Optional KBirim = “Kuruş”)

Dim ParaStr As String

Dim Lira As String, Kurus As String

If Not IsNumeric(Para) Then

ParaCevir = “GİRİLEN DEĞER SAYI DEĞİL!”

Exit Function

End If

ParaStr = Format(Abs(Para), “0.00”)

Lira = Left(ParaStr, Len(ParaStr) – 3)

Kurus = Right(ParaStr, 2)

ParaCevir = IIf(Para < 0, “Eksi “, “”) & Cevir(Lira) & ” ” & PBirim & ” ” & _

IIf(Val(Kurus) <> 0, Cevir(Kurus) & ” ” & KBirim & ” “, “”)

End Function

Private Function Cevir(SayiStr As String) As String

Dim Rakam(15)

Dim c(3), Sonuc, e

Birler = Array(“”, “bir”, “iki”, “üç”, “dört”, “beş”, “altı”, “yedi”, “sekiz”, “dokuz”)

Onlar = Array(“”, “on”, “yirmi”, “otuz”, “kırk”, “elli”, “altmış”, “yetmiş”, “seksen”, “doksan”)

Binler = Array(“trilyon”, “milyar”, “milyon”, “bin”, “”)

SayiStr = String(15 – Len(SayiStr), “0”) + SayiStr

For i = 1 To 15

Rakam(i) = Val(Mid$(SayiStr, i, 1))

Next i

Sonuc = “”

For i = 0 To 4

c(1) = Rakam(i * 3 + 1)

c(2) = Rakam(i * 3 + 2)

c(3) = Rakam(i * 3 + 3)

If c(1) = 0 Then

e = “”

ElseIf c(1) = 1 Then

e = “yüz”

Else

e = Birler(c(1)) + “yüz”

End If

e = e + Onlar(c(2)) + Birler(c(3))

If e <> “” Then e = e + Binler(i)

If (i = 3) And (e = “birbin”) Then e = “bin”

Sonuc = Sonuc + e

Next i

If Sonuc = “” Then Sonuc = “Sıfır”

Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) – 1)

End Function

Yapıştırma işlemi bittikten sonra aşağıdaki görüntüyü elde etmiş olmalısınız.

5.adım: Sıra geldi Excel üzerinde kod le oluşturulan fonksiyonu kullanmaya. Sayımızı metine çevirmek istediğimiz hücrenin içine “=paracevir(hücre adresi)” şeklinde fonksiyonumuzu yazıyoruz. Hücre adresi olarak metine çevirmek istediğimiz hücrenin adresini yazıyoruz.

Böylece istediğimiz sayıyı metine çevirmiş oluyoruz. Eğer elimizdeki sayı hem tamsayı hem de ondalık sayı içeriyorsa Lira ve Kuruş olarakta ayrımı yaparak yazımı sağlatmış oluyoruz.

Bir başka makalemizde oluşturduğumuz fonksiyonun diğer tüm Excel kitaplarında çalışmasını nasıl sağlatırız ondan bahsedeceğiz.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir