• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Tam Sayı ve Ondalık Sayı Kısmını Ayrı Ayrı Toplama

  • Konbuyu başlatan Konbuyu başlatan bzace
  • Başlangıç tarihi Başlangıç tarihi
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Merhabalar,
Cevabını bildiğim ama farklı yollar görmek istediğim bir soru sormak istiyorum.

Sorum;
1254,654 yada 98756,12 gibi rakamlarım var.Ben bunları virgülden öncesi ve virgülden sonrası olmak üzere teker teker toplatmak istiyorum.
Soru içerisinde ufak bir şartım daha vardır.

Şöyle;

1254,654
Virgülden öncesi için: 1+2+5+4=12 / 1+2=3
Virgülden sonrası için: 6+5+4=15 / 1+5=6
İstediğim sonuç = 3,6

98756,12
Virgülden öncesi: 9+8+7+5+6=35 / 3+5=8
Virgülden sonrası: 1+2=3
İstediğim sonuç = 8,3

Az daha açmak gerekirse; Virgülden önceki yada sonraki sayıları tek haneli sayıya düşünceye kadar tolamak, ilk önce virgülden önce yada sonraki sayıları kendi arasında toplamak çıkan sonuç ÇİFT yada daha fazla basamaklı sayıysa bunlarıda kendi arasında toplayarak tek haneli sayıya düşürmek.

Cevap gelecek olursa özellikle formül ile verilen cevap(ları) çok merak ediyorum.
 
Merhaba,
KTF isterseniz deneyiniz.
Kod:
Function RAKAMTOPLA(sayı)
If sayı < 0 Then eksi = "-" Else eksi = ""
tamsayı = Split(Abs(sayı), ",")(0)
ondalık = Split(Abs(sayı), ",")(1)

Do Until Len(tamsayı) = 1
    sonuç = 0
    For a = 1 To Len(tamsayı)
        sonuç = sonuç + Mid(tamsayı, a, 1)
    Next
    tamsayı = sonuç
Loop

Do Until Len(ondalık) = 1
    sonuç = 0
    For a = 1 To Len(ondalık)
        sonuç = sonuç + Mid(ondalık, a, 1)
    Next
    ondalık = sonuç
Loop

RAKAMTOPLA = eksi & tamsayı & "," & ondalık
End Function
Kod:
=RAKAMTOPLA(A1)
 
Sayın Mucit77, teşekkürler. ;)
Bakalım farklı örnekler çıkacak mı ?
 
Sayın bzace,
Önce kendi bulduğunuz yöntemi belirtirseniz, verilecek cevaplarla karşılaştırmak ve herkesin kendine uygun formülü kullanması bakımından sadece size değil, forumdaki bütün üyelerimize yardımı olur.

Merak ediyorsanız, alternatif cevap olarak:
Sayınızı A1 hücresine yazdıktan sonra herhangibir hücrede:
Kod:
=IF(INT(A1)=A1;SUMPRODUCT(1*MID(SUMPRODUCT(1*MID(INT(A1);ROW(INDIRECT("1:"&LEN(INT(A1))));1));ROW(INDIRECT("1:"&LEN(SUMPRODUCT(1*MID(INT(A1);ROW(INDIRECT("1:"&LEN(INT(A1))));1)))));1));SUMPRODUCT(1*MID(SUMPRODUCT(1*MID(INT(A1);ROW(INDIRECT("1:"&LEN(INT(A1))));1));ROW(INDIRECT("1:"&LEN(SUMPRODUCT(1*MID(INT(A1);ROW(INDIRECT("1:"&LEN(INT(A1))));1)))));1))+SUMPRODUCT(1*MID(SUMPRODUCT(1*MID(RIGHT(A1;LEN(A1)-FIND(",";A1));ROW(INDIRECT("1:"&LEN(RIGHT(A1;LEN(A1)-FIND(",";A1)))));1));ROW(INDIRECT("1:"&LEN(SUMPRODUCT(1*MID(RIGHT(A1;LEN(A1)-FIND(",";A1));ROW(INDIRECT("1:"&LEN(RIGHT(A1;LEN(A1)-FIND(",";A1)))));1)))));1))/10)

formülünü uygulayınız.
Formüldeki fonksiyonların İngilizce-Türkçe çevirimini de kendiniz yapabilirsiniz.
 
Sayın Turist,
Çözüme ulaştığım yöntemi baştan söylememin nedeni, Formül yada kod paylaşımda bulunduğumda doğrudan cevabı bilen olmayabilir. Benim önerdiğim yoldan gidip benzer bir formül yada kod ortaya çıkmasın diye cevabı baştan yazmıyorum.

Şuan vaktim olmadığından çeviriyi daha sonra yapacağım.
 
Sayın Turist,
Çözüme ulaştığım yöntemi baştan söylememin nedeni, Formül yada kod paylaşımda bulunduğumda doğrudan cevabı bilen olmayabilir. Benim önerdiğim yoldan gidip benzer bir formül yada kod ortaya çıkmasın diye cevabı baştan yazmıyorum.

Şuan vaktim olmadığından çeviriyi daha sonra yapacağım.

Paylaşın, paylaşın ki, biz de bilgimize bilgi katalım.
 
.

Alternatif:

Kod:
=INT(MOD(A1;9))+ROUND(MOD(MOD(A1;1)*10^10;9);0)/10

.
 
.

Sayın Bzace,

Benim yukarıdaki çözümü beğenmediniz herhalde...

Ayrıca sizin çözümü de bir görsek paylaşım adına iyi olur.

.
 
.
Sayın Bzace,
Benim yukarıdaki çözümü beğenmediniz herhalde...
Ayrıca sizin çözümü de bir görsek paylaşım adına iyi olur.
.
İdris bey,
Bu gibi durumla ikinci karşılaşışımız.
1. http://www.excel.web.tr/f47/metinsel-sayysal-deoer-ceren-veriden-sayylary-ayyrma-t139715.html

Önerilerin hepsi için teşekkürler.
Farklı bir alternatif;
Kod:
=EĞER(NSAT(A1);MOD(NSAT(A1)-1;9)+1)+EĞER(MOD(A1;1);
  MOD((0&PARÇAAL(A1;MBUL(",";A1&",")+1;15))-1;9)+1)/10
 
Geri
Üst