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

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.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
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)
 
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 -
Sayın Mucit77, teşekkürler. ;)
Bakalım farklı örnekler çıkacak mı ?
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
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.
 
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 -
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.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
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.
 

Merhum İdris SERDAR

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

Alternatif:

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

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 Bzace,

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

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

.
 
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 -
.
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
 
Üst