Ondalıklı sayıları yazıya çevirme

Katılım
21 Haziran 2007
Mesajlar
1
Excel Vers. ve Dili
2003 Türkçe
lütfen biri bana yardım etsin.
makrolar yoluyla, virgüllü( ondalıklı) sayıları yazıya çevirmek için bir çözüm gerekiyor.
örneğin 56,17: ellialtı virgül onyedi
14,07: ondört virgül sıfır yedi gibi(özellikle bunlar için ondört virgül yedi değil)
3,00(üç virgül sıfır sıfır) gibi
bir de virgülden sonra dört basamağa kadar gerekiyor. Öğrenci sıralaması için gerekli.
şimdiden teşekkür ederim.
 
Katılım
10 Ekim 2006
Mesajlar
53
Excel Vers. ve Dili
office 2003 türkçe
lütfen biri bana yardım etsin.
makrolar yoluyla, virgüllü( ondalıklı) sayıları yazıya çevirmek için bir çözüm gerekiyor.
örneğin 56,17: ellialtı virgül onyedi
14,07: ondört virgül sıfır yedi gibi(özellikle bunlar için ondört virgül yedi değil)
3,00(üç virgül sıfır sıfır) gibi
bir de virgülden sonra dört basamağa kadar gerekiyor. Öğrenci sıralaması için gerekli.
şimdiden teşekkür ederim.
Virgülsüz istersen buyur;




Microsoft Excel’i açın, Araçlar>Makro>Visual Basic Düzenleyicisi (Kısayol: Alt+F11)Insert>Module tıklayın. Açılan boş sayfaya aşağıdaki kodu yapıştırın. Kaydedip Excel’e geri dönün.Deneme için A1 hücresine bir sayı yazın B1 hücresine geçip şu formülü yazın =yaz(A1) Yazdığınız rakamlar metne dönüşecektir. Burada kullanacağımız işlem terimi =yaz(hücre_adı) olacaktır.



Dim b$(9)
Dim y$(9)
Dim m$(4)
Dim v(15)
Dim c(3)

Function yaz$(sayi)



b$(0) = ""

b$(1) = "bir"

b$(2) = "iki"

b$(3) = "üç"

b$(4) = "dört"

b$(5) = "beş"

b$(6) = "altı"

b$(7) = "yedi"

b$(8) = "sekiz"

b$(9) = "dokuz"



y$(0) = ""

y$(1) = "on"

y$(2) = "yirmi"

y$(3) = "otuz"

y$(4) = "kırk"

y$(5) = "elli"

y$(6) = "altmış"

y$(7) = "yetmiş"

y$(8) = "seksen"

y$(9) = "doksan"



m$(0) = "trilyon"

m$(1) = "milyar"

m$(2) = "milyon"

m$(3) = "bin"

m$(4) = ""



a$ = Str(sayi)



If Left$(a$, 1) = " " Then pozitif = 1 Else pozitif = 0

a$ = Right$(a$, Len(a$) - 1)

For x = 1 To Len(a$)

If (Asc(Mid$(a$, x, 1)) > Asc("9")) Or (Asc(Mid$(a$, x, 1)) < Asc("0")) Then GoTo hata



Next x



If Len(a$) > 15 Then GoTo hata

a$ = String(15 - Len(a$), "0") + a$



For x = 1 To 15

v(x) = Val(Mid$(a$, x, 1))

Next x



s$ = ""

For x = 0 To 4

c(1) = v((x * 3) + 1)

c(2) = v((x * 3) + 2)

c(3) = v((x * 3) + 3)

If c(1) = 0 Then

e$ = ""

ElseIf c(1) = 1 Then

e$ = "yüz"

Else

e$ = b$(c(1)) + "yüz"

End If

e$ = e$ + y$(c(2)) + b$(c(3))

If e$ <> "" Then e$ = e$ + m$(x)

If (x = 3) And (e$ = "birbin") Then e$ = "bin"

s$ = s$ + e$

Next x



If s$ = "" Then s$ = "sıfır"

If pozitif = 0 Then s$ = "Eksi" + s$



yaz$ = s$

GoTo tamam

hata: yaz$ = "Hata"

tamam:

End Function
 
Üst