anlamlı rakama yuvarlama

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Altın Üyelik Bitiş Tarihi
25-12-2029
Merhaba arkadaşlar,

mesala 0,000000587 bu değeri 0,00000059 şeklinde yani sıfırlardan sonrasını 2 basamak olacak şekilde yuvarlayacak

mesala 0,00423565 değerini 0,0042 şeklinde yuvarlayacak
mesala 1,0568 değerini 1,057 şeklinde yuvarlayacak
mesala 3,00048665 değerini 3,00049 şeklinde yuvarlayacak

kısacası değeri yuvarlarken virgülden sonraki değerleri 2 basamak olacak şekilde yuvarlayacak ancak virgülden sonra sıfırlar varsa o sıfırlara karışmadan sıfırlardan sonraki kısımlarda 2 basamak olacak şekilde yuvarlayacak

mesala 1,056 değerinide 1,06 şeklinde yuvarlayacak

böyle bir fonksiyon yada formül var mı?
 
Katılım
5 Ocak 2011
Mesajlar
82
Excel Vers. ve Dili
Excel 2003
Bilgim çerçevesinde affınıza sığınarak konuşuyorum. Merhaba arkadaşım . =YUKARIYUVARLA(0,000000587;8) gibisinden birşey yapsan dicem ama ustalarımız daha iyi bilir tabii. Ama böylede her sayının kendi basamak sayısını girmek gerekli oluyo . Bana da lazım çözümü bu sorunun. Fiyat hesaplamalarımda hep böyle oluyo :S
 
Katılım
22 Eylül 2010
Mesajlar
10
Excel Vers. ve Dili
Excel 2007 - TR
****

Merhaba ,

Kardeşim "YUVARLA" formülü ile rahatça yaparsın bunu

Örneğin; =YUVARLA(D21;3) noktalı virgülden sonraki sayı örnekteki "3" yuvarlanacak sayının virgülden sonra kaç basamak olacağına göre değiştirebilirsin... oraya "0" sıfır koyarsan en yakın tamsayıya yuvarlar

Dosyadan gidebilirsin
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
0,000000587 - 0,00000059
0,00423565 - 0,0042
1,0568 - 1,057
3,00048665 - 3,00049

.


1,056 - 1,06
Merhaba,

Burada bir tutarsızlık yok mu?

İlk örneklerde virgülden sonra sıfır hariç olan rakamları 2 basamağa göre yuvarlerken sonra örneği 1 basamağa göre yuvarlamışsınız.

Aynı mantıkla,

1,056 değer 1,056 olarak kalması gerekirdi.

.
 

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Altın Üyelik Bitiş Tarihi
25-12-2029
ömer hocam.

işte yuvarlamada çektiğim sıkıntı yapamamın sebeide o.
virgülden sonra ki sıfırlardan sonra anlamlı rakama yuvarlayacak yani sıfırları anlamlı rakam olarak düşünmeyin virgülden sonraki sıdırlardan sonra 2 hane olacak şekilde yuvarlama yapacak sıfırlara karışmayacak dediğim gibi
mesala
0,000423 sayısını 0,00042 şeklinde yuvarlayacak
0,0028 sayısını 0,0028 şeklinde yuvarlayacak
0,002 sayısını 0,002 şeklinde yuvarlkayacak
3,589656 sayısını ise 3,59 şeklinde yuvarlayacak
0,489652 sayısını 0,49 şeklinde yuvarlayacak.

Yani virgülden sonra gelen sıfırları olduğu gibi alacak o sıfırlardan sonra 2 hane olacak şekjilde normal yuvarlama yapacak. İnşallah anlatabilmişimdir hocam.

İlgilendiğiniz için teşekkürler
 

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Altın Üyelik Bitiş Tarihi
25-12-2029
Yani hocam anlamlı rakamlara göre yuvarlama mantığı vardır matematikte ve sanırım excelde de var böyle bir şey internetten şöyle bir şey buldum ama anlayamadım ben aşağıda yazıyorum belki siz anlarsınız

YUVARLA (val, rakamlar (1 + INT (LOG10 (ABS (val )))))
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
.

Yani virgülden sonra gelen sıfırları olduğu gibi alacak o sıfırlardan sonra 2 hane olacak şekjilde normal yuvarlama yapacak. İnşallah anlatabilmişimdir hocam.
Benim sorduğum bu değildi.

Örneklerinizde tutarsızlık yok mu diye sormuştum.

0,000000587 - 0,00000059
0,00423565 - 0,0042
1,0568 - 1,057
3,00048665 - 3,00049

.


1,056 - 1,06

Mavi grup iki basamağa göre yuvarlama yaparken kırmızı grup tek basamapa göre yuvarama yapmış.

Bundan bir tutarsızlık yok mu?

------------------------------------------------------------

1,056 değerini 1,06 yuvarlıyorsanız.

0,000000587 değerinide 0,0000006 ya yuvarlamanız gerekir.

Yada,

0,000000587 değerini 0,00000059 yuvarlıyorsanız.

1,056 değerini de 1,056 yuvarlamanız gerekir.

.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
çabamız boşuna oldu desene :)
Sayın mfcanbaz,

Tabiki çabanız boşuna olmadı. Fakat ondalık kısmı değişken olacağı için her seferinde;

=yuvarla(sayı;sayı_rakamlar)

sayı_rakamlar değerini manuel girmek pratik olmayacağından formülü buna göre düzenlemekte fayda var.

Şu şekilde örnek vereyim. A1:A5555 arasına yazılan karışık değeri B sütununda bu düzende yuvarlama yapmak isterseniz 5555 satırda yuvarlama ölçütünü formülde tek tek kontrol edip düzeltmeniz gerekir.

Amaç ise bu düzenlemeye gerek kalmadan formülü oluşturmaktır diye düşünüyorum.

.
 

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Altın Üyelik Bitiş Tarihi
25-12-2029
Hocam tekrar ilginiz için teşekkür ederim.

Anlamlı rakama yuvarlama mantığını bilen bir hocam var mı acaba
Bana gereken anlamlı rakama uyarlaması Yardımcı olursanız sevinirim.
 

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
Bu kodun sayısal bölümü bana mantıksız geldi ekli dosyayı inceleyiniz kod kullanıcı tanımlı fonksiyonla yapılmıştır.

Kod:
Function SAYILARIBUL(hucre)
Dim i As Integer
say = 0
son = 0
For i = 1 To Len(hucre)
sayi = Mid(hucre, i, 1)
If sayi = "," Then
For r = i To Len(hucre)
sayi1 = Mid(hucre, r, 1)
If IsNumeric(sayi1) = True Then
If Val(sayi1) > 0 Then
say = say + 1
If say >= 3 Then
son = r
Exit For
End If
End If
End If
Next r
If son > 0 Then
SAYILARIBUL = Mid(hucre, 1, son)
Else
SAYILARIBUL = hucre
End If
If Val(Left(Right(SAYILARIBUL, 3), 1)) > 0 Then
If Val(Right(Mid(SAYILARIBUL, 1, Len(SAYILARIBUL) - 1), 1)) > 5 Then
SAYILARIBUL = Mid(SAYILARIBUL, 1, Len(SAYILARIBUL) - 3) & Val(Left(Right(SAYILARIBUL, 3), 2)) + 1
Else
SAYILARIBUL = Mid(SAYILARIBUL, 1, Len(SAYILARIBUL) - 3) & Val(Left(Right(SAYILARIBUL, 3), 2))
End If
End If
SAYILARIBUL = SAYILARIBUL * 1
Exit For
End If
Next i
End Function
 

Ekli dosyalar

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Altın Üyelik Bitiş Tarihi
25-12-2029
Hocam çok teşekkür ederim. Elinize ve bilginize sağlık
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,009
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Alternatif olarak formülle aşağıdaki şekilde yuvarlama yapabilirsiniz.

Veriniz A1 hücresinde ise C1 hücresine aşağıdaki formülü uygulayınız.

Kod:
=EĞER(ESAYIYSA(BUL(",";A1;1));EĞER(UZUNLUK(--PARÇAAL(A1;BUL(",";A1;1)+1;30))>2;YUVARLA(A1;EĞER(UZUNLUK(PARÇAAL(A1;BUL(",";A1;1)+1;30))<>UZUNLUK(--PARÇAAL(A1;BUL(",";A1;1)+1;30));UZUNLUK(PARÇAAL(A1;BUL(",";A1;1)+1;30))-UZUNLUK(--PARÇAAL(A1;BUL(",";A1;1)+1;30))+2;2));A1);A1)
 

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Aynı mantıkla farklı bir alternatif.

Değer A1 hücresinde düşünülmüştür.

Kod:
=EĞER(NSAT(A1)=A1;A1;YUVARLA(A1;1+UZUNLUK(A1)-UZUNLUK(NSAT(A1))-
  UZUNLUK((SAĞDAN(A1;UZUNLUK(A1)-BUL(",";A1)))+0)))
.
 
Katılım
30 Aralık 2010
Mesajlar
6
Excel Vers. ve Dili
office 2003 TR
merhaba benim elimde 372,295 sayısı var bunu virgülden sonra 2 basamak olacak şekilde yuvarlamak istiyorum =yuvarla(372,295;2) yaptığımda 372,30 oluyor fakat bu benim ayrı bir formülümde 372,29 şeklinde kaldı bunu yapmanın başka bir yolu daha var mı acaba NASIL YAPABİLİRİZ cevaplarınızı bekliyorum çok acil ihtiyacım var ilgileriniz için ş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
merhaba benim elimde 372,295 sayısı var bunu virgülden sonra 2 basamak olacak şekilde yuvarlamak istiyorum =yuvarla(372,295;2) yaptığımda 372,30 oluyor fakat bu benim ayrı bir formülümde 372,29 şeklinde kaldı bunu yapmanın başka bir yolu daha var mı acaba NASIL YAPABİLİRİZ cevaplarınızı bekliyorum çok acil ihtiyacım var ilgileriniz için şimdiden teşekkürler....
Böyle denermisiniz?

Kod:
=TABANAYUVARLA(372,295;0,01)
 
Üst