9,23456 sayısını iki hane yuvarlama hatası

Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
9,233335 ve .
ama yukarıda belirttiğim gibi ondalık 5 o kadar hesap hassasiyetine gerek duymadığım bir nokta (tabi pursantaj hesaplayan arkadaşlar kızabilir o ayrı mesele)

düzeltme: sadece 9,233335
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayın fergu
Konu ile ilgili
9,23213106 bu sayının iki basamaklı yuvarlanması durumunda sonuç ne olmalı ve ayrıca üç,dört,beş,altı ve yedi basamaklı sayıyı yuvarlayınca sonuç ne olmalı
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın fergu
Konu ile ilgili
9,23213106 bu sayının iki basamaklı yuvarlanması durumunda sonuç ne olmalı ve ayrıca üç,dört,beş,altı ve yedi basamaklı sayıyı yuvarlayınca sonuç ne olmalı
.

Merhaba,

Benim yaptığım çalışmaya göre;

2 9,23

3 9,232

4 9,2321

5 9,23213

6 9,232131

7 9,2321311

olmalı.

.
 
Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
İdris bey
Yeni gördüm.
virgül 7 ye kadar sorun yok.
kontrol etmeye devam ediyorum. başka sayılarla deneyip sonuç tutarlılığını kontrol edeyim sonucu yazarım.
Ama excel'in matematiğini kurtardınız benim için.
Teşekkürler.
 
Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
Geyet stabil çalışıyor. Ellerinize sağlık.
Excel'in yuvarla fonksiyonun da ki hata böylelikle çözülmüş oldu sayenizde İdris Bey.

Artık tek dert (benim için) yuvarla;2,3 gibi bir işlemi bu fonksiyonla Düşey-yatayara-eğer vs ile birleştirmek. Örn: eğer(düşeyara(....;..;..;..);doğruysa sizinfonk*şu;yanlışsa şubu) gibi uzunca bir fonksiyon çıkacak.
Bakalım office ne cevap verecek yuvarla(x;2) gibi basit bir işlemi yıllardır düzeltmediler.

Hocam çok çok Teşekkürler.
 
Son düzenleme:

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Alternatif olarak kod
Esasında tam olarak anlayamadım ama bu KTF 'yi bir deneyiniz.

kod:

Kod:
Function sayilama(sayi, yuvarla)

If sayi = "" Then
sayilama = ""
Exit Function
End If

If yuvarla = "" Then
sayilama = ""
Exit Function
End If


If Len(sayi) > 2 Then
deg1 = Val(sayi)
deg2 = sayi - deg1

    If Len(deg2) > 2 And Len(deg2) > yuvarla + 2 Then
    
    deg5 = Mid(deg2, 3, yuvarla + 1)
    deg6 = Right(deg5, 2)
    deg7 = Right(deg6, 1)
    deg8 = Left(deg6, 1)
    
        If deg7 >= deg8 Then
        
            If deg8 = 0 Then
            deg3 = Val(Mid(deg2, 3, yuvarla)) + 1
            Else
            deg3 = Val(Mid(deg2, 3, yuvarla))
            End If
        Else
        deg3 = Val(Mid(deg2, 3, yuvarla))
        End If
    sayilama = (deg1 & "," & deg3) * 1
    Else
    sayilama = sayi
    End If
Else
sayilama = sayi
End If

End Function
 
Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
Halit bey su an mobil uzerinden yaziyorum.
En kisa sürede pc deneyip sonucu yazarım.
Amaç üst mesajlarda yazmıştım sondan gelerek
Istedigimiz haneye dogru bir şekilde yuvarlamak.
Teşekkürler emeğinize.
 
Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
halit bey.
hata veriyor. daha doğrusu A1 hücresine 9,23456 yazdığınızda "run" herhangi bir işlem yapmıyor.
kod işinin zor kısmı şu (bana göre), işlemi çalışma sayfası yada hücre yada satır sütun bazında buna ayırmanız lazım ve fonksiyonla kombine etme iç içe yazma zorluğu. yanlış düşünüyor da olabilirim tabi. örneğin F sütununda ki sayıları yuvarla gibi derseniz kod bunu güzel yapar. ama F sütunundaki hücreye kodu kullan birde şunu bunu ara doğruysa çarp topla demek zor. (G sütununu kullan arkadaş sende o zaman bir cevap olabilir tabi.)

amaç yukarıda yazdığım gibi excele doğru matematiksel işlem yaptırmak; örn.

1,11444444445 sayısı
yuv(1,11444444445;10)=1,1144444445 (1,1144444445)
yuv(1,11444444445;9)=1,114444445 (1,114444444)
..
..
yuv(1,11444444445;3)=1,115 (1,114)
yuv(1,11444444445;2)=1,12 (1,11)
yuv(1,11444444445;1)=1,10 (1,10)

gibi. parantez içindekiler excelin cevapları.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
halit bey.
hata veriyor. daha doğrusu A1 hücresine 9,23456 yazdığınızda "run" herhangi bir işlem yapmıyor.
kod işinin zor kısmı şu (bana göre), işlemi çalışma sayfası yada hücre yada satır sütun bazında buna ayırmanız lazım ve fonksiyonla kombine etme iç içe yazma zorluğu. yanlış düşünüyor da olabilirim tabi. örneğin F sütununda ki sayıları yuvarla gibi derseniz kod bunu güzel yapar. ama F sütunundaki hücreye kodu kullan birde şunu bunu ara doğruysa çarp topla demek zor. (G sütununu kullan arkadaş sende o zaman bir cevap olabilir tabi.)

amaç yukarıda yazdığım gibi excele doğru matematiksel işlem yaptırmak; örn.

1,11444444445 sayısı
yuv(1,11444444445;10)=1,1144444445 (1,1144444445)
yuv(1,11444444445;9)=1,114444445 (1,114444444)
..
..
yuv(1,11444444445;3)=1,115 (1,114)
yuv(1,11444444445;2)=1,12 (1,11)
yuv(1,11444444445;1)=1,10 (1,10)

gibi. parantez içindekiler excelin cevapları.
Aşağıdaki resimden 1,2,3,9 ve 10 sayılarına yuvarlama yapmışsınız ben anlayamadım bunu neye göre yuvarlama yapıyorsunuz.

1 basamaklı yuvarlama 1,10 bulmuşsunuz 2 basamaklı yuvarlamayı 1,12 bulmuşsunuz 3 basamaklı yuvarlamayı 1.115 bulmuşsunuz.

1 basamaklı 1.1 ; 2 basamaklı 1.11 : 3 basamaklı 1,114 gözüküyor

neden 1 bazamaklı 1,10 ; 2 bazamaklı 1,12 ; 3 basamaklı 1.115 oluyor. ve basamak arttıkca yuvarlamanın durumu değişiyormu.

 
Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
Ustad yuvarlama islemi sondan istedigimiz haneye cekerek yapiyoruz.sondaki 5 surekli ondekini tetikliyor. Yani 3 basamak istesekte en sondan basa dogru yuvarlaya yuvarlaya geliyoruz.1 basamak olsada.
Kusura bakmayin pc ve hdd duman onla ugrasiyorum. O yuzden cepten yazdim.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Halit bey ben açıklamaya çalışayım

1,11444444445

rakamının en sağdaki hanesi 5.

Hiç yuvarlama yapmazsak sayı aynı.

şimdi yavaş yavaş sola gidelim.

=YUVARLA(1,11444444445;10)=1,1144444445
=YUVARLA(YUVARLA(1,11444444445;10);9)=1,114444445
=YUVARLA(YUVARLA(YUVARLA(1,11444444445;10);9);8)=1,11444445
...
....
....

Bu şekilde devam ettirin. Olay bu.


.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif kullanıcı tanımlı fonksiyon;

Hücrede kullanım şekli;
Kod:
=KA_YUVARLA(A1;2)

Kod;
Kod:
Function KA_YUVARLA(Veri As Range, Ondalık As Integer)
    Dim Tamsayı As Double, Küsürat As Double
    Dim Uzunluk As Integer, X As Integer, Sayı As Double
    
    Application.Volatile True
    
    If Veri.Value = Empty Then
        KA_YUVARLA = 0
        Exit Function
    End If
    
    If Ondalık > 0 Then
        Tamsayı = Left(Veri.Value, InStr(1, Veri.Value, Application.DecimalSeparator) - 1)
        Küsürat = Veri.Value - Tamsayı
        Uzunluk = Len(Replace(Veri.Value, Tamsayı, ""))
        
        If Uzunluk < Ondalık Then
            KA_YUVARLA = Veri.Value
        Else
            For X = Uzunluk To Ondalık Step -1
                If Sayı = 0 Then
                    Sayı = Application.WorksheetFunction.Round(Küsürat, X)
                Else
                    Sayı = Application.WorksheetFunction.Round(Sayı, X)
                End If
            Next
            KA_YUVARLA = Tamsayı + Sayı
        End If
    Else
        KA_YUVARLA = Application.WorksheetFunction.Round(Veri.Value, Ondalık)
    End If
End Function
 

Ekli dosyalar

Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
Korhan bey.
Pc toplayinca deneyeyim.
Kod anlamam ama hucre ile boyle iliskilendirilirin cevabi olmus.
Teşekkürler
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Korhan bey, Merhaba.

Ben dosyamda denedim. Çok güzel olmuş.

Ellerinize sağlık.

.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İdris Bey,

Rica ederim. Tüyo sizden geldi ben sadece kodlamasını yaptım.
 
Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
Merhabalar,
Korhan Hocam Elinize sağlık.
İdris Hocam kontrol için teşekkürler.

İdris Bey ve Sizin çalışmanızı ekte birleştirdim. Size zahmet hatayı bulamadım bakabilir misiniz?
Virgül 2 için çok güze çalışıyor ve bundan sonra Excel (office) bir hotfix yayınlayana kadar budur hocam. Yuvala(syı;2) 'nin adı Kor.Ayhan_Yuv(sayı;2) olmuştur.

http://s3.dosya.tc/server8/26nrab/yuv2.rar.html
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sistemin nasıl işlediğini anlamaya çalışıyorum belki bu olmuştur diye ekliyorum.

Birde bu kodu denermisiniz.

kod:

Kod:
Function sayısay(sayi, yuvarla)

If sayi = "" Then
sayısay = ""
Exit Function
End If

If yuvarla = "" Then
sayısay = ""
Exit Function
End If

deger1 = Split(sayi, ",")
If UBound(deger1) > 0 Then
Say = Len(deger1(1))
Veri = sayi
If Say < yuvarla Then GoTo atla

For i = Say To yuvarla Step -1
Veri = Application.WorksheetFunction.Round(Veri, i)
Next i

sayısay = Veri
Else
atla:
sayısay = sayi
End If

End Function
 

Ekli dosyalar

Katılım
21 Nisan 2008
Mesajlar
21
Excel Vers. ve Dili
2003
Korhan & İdris Bey.
Katkılarınızdan dolayı çok çok teşekkürler.

Bu iş burada son bulmuştur.
Dileyen İdris Bey'in fonksiyonunu kullansın, dileyen de Korhan Bey'in Makroyu.
Ellerinize Sağlık.
Teşekkürler.
 
Üst