sayıyı yazıya çevirme modül yuvarlama hatası

Katılım
18 Mayıs 2005
Mesajlar
395
Excel Vers. ve Dili
Excel 2019 TR
Altın Üyelik Bitiş Tarihi
12-02-2024
arkadaşlar örnek dosyada açıklama yaptım. sayılarımı yuvarlanmış olarak topluyorum.
ama excel.web.tr den aldığım vba kodları benim toplamım dışında yazıya çeviriyor. yardımlarınız için teşekürler. bakarsanız sevinirim.
 

Ekli dosyalar

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
arkadaşlar örnek dosyada açıklama yaptım. sayılarımı yuvarlanmış olarak topluyorum.
ama excel.web.tr den aldığım vba kodları benim toplamım dışında yazıya çeviriyor. yardımlarınız için teşekürler. bakarsanız sevinirim.

Dosyanızın içinde kod yok

Yanlız dosyanızdaki rakamların sonunda görünmeyen değerler olduğundan hatalı sonuç aldığınızı düşünüyorsunuz.

Rakamlar sıfırdan sonra iki basamaklı gözüküyor bu durumda ya basamak sayısını arttıracaksınız yada sıfırdan sonra iki basamaklı sayıya yuvarlıyacaksınız.

Rakamınızın gerçek değeri 1186,056
görünen değer 1186,06
 
Katılım
30 Mayıs 2008
Mesajlar
101
Excel Vers. ve Dili
2003 türkçe
doğru yere yazıp yazmadıgımı bılmıyorum ama bana cok ama cok acıl bırs sekılde yardımcı olabılırmısınız.ben " ULKER YUPO SEKERLEME 170GR BEN10 " bu metinde gecen 170 gr ı metinden ayırmak ıstıyorum yanı bunun gibi 40.000 adet urun var ve bunları tek tek yazmak çok zor olacak birkaç formul yazdım ama olmadı.en son buldugum formul bu ama işe yaramadı " =1*PARÇAAL(A5;KAÇINCI(DOĞRU;ESAYIYSA(1*PARÇAAL(A5;SATIR($1:$9);1));0);BAĞ_DEĞ_SAY(1*PARÇAAL(A5;SATIR($1:$9);1)))" çok acil arkadaslar.şimdiden teşekkürler
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
doğru yere yazıp yazmadıgımı bılmıyorum ama bana cok ama cok acıl bırs sekılde yardımcı olabılırmısınız.ben " ULKER YUPO SEKERLEME 170GR BEN10 " bu metinde gecen 170 gr ı metinden ayırmak ıstıyorum yanı bunun gibi 40.000 adet urun var ve bunları tek tek yazmak çok zor olacak birkaç formul yazdım ama olmadı.en son buldugum formul bu ama işe yaramadı " =1*PARÇAAL(A5;KAÇINCI(DOĞRU;ESAYIYSA(1*PARÇAAL(A5;SATIR($1:$9);1));0);BAĞ_DEĞ_SAY(1*PARÇAAL(A5;SATIR($1:$9);1)))" çok acil arkadaslar.şimdiden teşekkürler
Sorunuz konu bütünlüğüne uymuyor

Örnek olarak formun ana sayfasında excele geni başlayanlar başlığına tıklayınız.Daha sonra sol üst yerde yeni konu kamut duğmesini tıklayınız ve açılan penceren sorunuzu yazınız tabi soru başlığınızıda buna göre yazınız.
 
Katılım
30 Mayıs 2008
Mesajlar
101
Excel Vers. ve Dili
2003 türkçe
çok tşk ederım halıt bey alakanız ıcın hemen yapıyorum dedıgınız işlemi.kusura bakmayın
 
Katılım
18 Mayıs 2005
Mesajlar
395
Excel Vers. ve Dili
Excel 2019 TR
Altın Üyelik Bitiş Tarihi
12-02-2024
sayın İhsan ve Halit Hocam,
ilginize teşekür ediyorum. benim anlatmak istediğim Krş hanesi 2 rakam olacak. örnekte verdiğim rakamları incelerseniz 1.098,20 nin %8 altına yazdırıp topluyorum. excelin toplamına bakarsanız ramam ve yüzdesinin toplamı 1.186.06 çıkıyor. aşağıdaki kodlar sanırım İhsan hocamın neden hücrede gördüğünü gördüğü şekilde yazıya çevirmiyor. ben hücredeki olduğu şekilde görmesini istiyorum. teşekürler. kodları ekliyorum.
Function Yaziyla(sayi#)
Dim TL As String
Dim KR As String
Dim i As Integer
Dim virgul1 As Integer
Dim virgul2 As String
Dim cevap As String
Dim yazi As String
Dim say As String
Dim deg1 As String
If sayi# = 0 Then Yaziyla = "": Exit Function
ReDim birler$(10), onlar$(10), basamak$(5)
birler$(0) = "": birler$(1) = "bir"
birler$(2) = "iki": birler$(3) = "üç"
birler$(4) = "dört": birler$(5) = "beş"
birler$(6) = "altı": birler$(7) = "yedi"
birler$(8) = "sekiz": birler$(9) = "dokuz"
onlar$(0) = "": onlar$(1) = "on"
onlar$(2) = "yirmi": onlar$(3) = "otuz"
onlar$(4) = "kırk": onlar$(5) = "elli"
onlar$(6) = "altmış": onlar$(7) = "yetmiş"
onlar$(8) = "seksen": onlar$(9) = "doksan"
basamak$(1) = "": basamak$(2) = "bin"
basamak$(3) = "milyon": basamak$(4) = "milyar"
basamak$(5) = "trilyon"
virgul2 = "": cevap = "": TL = ".TL.": KR = ".Krş."
say = Str$(sayi#)
virgul1 = InStr(1, say, ".")
If virgul1 Then
If Len(Mid(say, virgul1 + 1)) = 1 Then say = say + "0"
say = Right$(say, Len(say) - virgul1)
GoSub cevir
If cevap = "" Then KR = ""
virgul2 = cevap + KR
cevap = ""
say = Left$(Str$(sayi#), virgul1 - 1)
End If
GoSub cevir
If cevap = "" Then TL = ""
Yaziyla = WorksheetFunction.Proper(cevap) + TL + WorksheetFunction.Proper(virgul2)
Exit Function
cevir:
say = String$(3 - (Len(say) - Int(Len(say) / 3) * 3), 48) + say
For i = 1 To Len(say) / 3
deg1 = Mid$(say, Len(say) - i * 3 + 1, 3)
yazi = ""
If Val(Mid$(deg1, 1, 1)) <> 0 Then
If Val(Mid$(deg1, 1, 1)) > 1 Then yazi = birler$(Val(Mid$(deg1, 1, 1)))
yazi = yazi + "yüz"
End If
yazi = yazi + onlar$(Val(Mid$(deg1, 2, 1))) + birler$(Val(Mid$(deg1, 3, 1)))
If yazi <> "" Then
If LCase(yazi) = "bir" And i = 2 Then yazi = ""
cevap = yazi + basamak$(i) + cevap
End If
Next i
If sayi# < 0 Then cevap = "-Eksi-" + cevap
Return
End Function
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
A4 hücresindeki formülü böyle yapıp denermisiniz.

Kod:
=TAVANAYUVARLA(TOPLA(A2:A3);0,01)
Kod:
=SAYIYAÇEVİR(SAYIDÜZENLE(TOPLA(A2:A3);2))
 
Katılım
18 Mayıs 2005
Mesajlar
395
Excel Vers. ve Dili
Excel 2019 TR
Altın Üyelik Bitiş Tarihi
12-02-2024
halit hocam,
verdiğiniz formüller doğru çalışıyor. ama benim örnek verdiğim rakamlardan çok var. hepsini bu şekilde değiştirmemmi ğerekiyor. vb kodu üzerinde bu düzenlemeyi yapamazmısınız. ilginiz için teşekür ederim. hakkınızı helal edin.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
halit hocam,
verdiğiniz formüller doğru çalışıyor. ama benim örnek verdiğim rakamlardan çok var. hepsini bu şekilde değiştirmemmi ğerekiyor. vb kodu üzerinde bu düzenlemeyi yapamazmısınız. ilginiz için teşekür ederim. hakkınızı helal edin.

Bu dediğiniz yapılır ama doğru bir çözüm değil rakamların sonlarındaki görünmeyen değerler bir kaçtane verinin toplanmasında bir sıkıntı yapmaz ama binlerce bu türden olan rakamların sonuçta küsüratlardan dolayı farklılıklar olur bunu hiç tavsiye etmem ama illada ben bunu böyle yapmak istiyorum diyorsanız aşağıdaki bölümün yerine

Kod:
say = Right$(say, Len(say) - virgul1)
bunu ekleyiniz.

Kod:
say = Right$(Application.WorksheetFunction.Fixed(sayi, 2), 2)
 
Katılım
18 Mayıs 2005
Mesajlar
395
Excel Vers. ve Dili
Excel 2019 TR
Altın Üyelik Bitiş Tarihi
12-02-2024
sayın yurttaş,
verdiğiniz bilgi için teşekürler. Allah razı olsun. Sağolun.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Üst