DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
.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ı
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
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.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ı.
=KA_YUVARLA(A1;2)
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
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