• DİKKAT

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

Satır Aralarındaki Sayıları Toplama

Katılım
16 Temmuz 2021
Mesajlar
15
Excel Vers. ve Dili
--
Merhaba, Excel'de hücre içinde virgül ile ayrılmış sayıları nasıl saydrabilirim?

Örnek:
c2: rapor, 3
d2: aktif, 4.5

e2'de bu iki sayının toplamını bulmam gerekiyor. Hücre içine sadece sayı girmediğim için formülü bulamadım.
 
Aşağıdaki formülü deneyiniz:

=ARA(9,99999999999999E+307;--SAĞDAN(YERİNEKOY(C2;".";",");SATIR($1:$1000)))+ARA(9,99999999999999E+307;--SAĞDAN(YERİNEKOY(D2;".";",");SATIR($1:$1000)))
 
Aşağıdaki formülü deneyiniz:

=ARA(9,99999999999999E+307;--SAĞDAN(YERİNEKOY(C2;".";",");SATIR($1:$1000)))+ARA(9,99999999999999E+307;--SAĞDAN(YERİNEKOY(D2;".";",");SATIR($1:$1000)))
Öncelikle cevap için teşekkürler.
Örnekte iki sütun belirtmiştim ancak çalışma sayfasında 32-33 sütun bulunmakta. verdiğiniz formülü tüm sütunlar için uygulamam gerekiyor mu tek tek?
 
Öyle gerekir ama hem pratik olmaz hem de excel o uzunlukta formülü kabul etmeyebilir. Çok sütunlu işlem için makro kullanmak daha iyi olur bence. Kullanıcı tanımlı bir fonksiyon ya da başka bir makro hazırlanabilir.
 
E2 ye yazın.
Kod:
=sayilariTopla(C2:D2)
Modül içerisine aşağıdaki kodları yerleştirin.
Kod:
Function sayilariTopla(rng As Range) As Double
    Dim toplam As Double
    For Each r In rng
        For Each b In Split(r, " ")
            If IsNumeric(b) Then toplam = toplam + Val(b)
        Next b
    Next r
    sayilariTopla = toplam
End Function
 
Son düzenleme:
Alternatif;

DİZİ formüldür.

C++:
=SUM(IF(C2:Z2="";0;--SUBSTITUTE(MID(C2:Z2;SEARCH(" ";C2:Z2)+1;15);".";",")))

SUM = TOPLA
IF = EĞER
SUBSTITUTE = YERİNEKOY
MID = PARÇAAL
SEARCH = MBUL
 
Teşekkürler ancak bu formül hücrede hata veriyor.
Korhan Bey DİZİ formülü olduğunu belirtmiş, dikkat etmemişsiniz sanıyorum. DİZİ formülünü hücreye yazdıktan sonra hücreden CTRL+SHIFT+ENTER ile çıkmalısınız.
 
E2 ye yazın.
Kod:
=sayilariTopla(C2:D2)
Modül içerisine aşağıdaki kodları yerleştirin.
Kod:
Function sayilariTopla(rng As Range) As Double
    Dim toplam As Double
    For Each r In rng
        For Each b In Split(r, " ")
            If IsNumeric(b) Then toplam = toplam + b
        Next b
    Next r
    sayilariTopla = toplam
End Function
KTF'yi uyguladığımda 52,5 çıkması gereken sonuç 336 çıkıyor. Korhan Bey'in çözümü doğru sonucu veriyor.

Koda replace ekleyip noktayı virgüle çevirince doğru sonucu veriyor:

PHP:
Function sayilariTopla(rng As Range) As Double
    Dim toplam As Double
    For Each r In rng
        For Each b In Split(Replace(r, ".", ","), " ")
            If IsNumeric(b) Then toplam = toplam + b
        Next b
    Next r
    sayilariTopla = toplam
End Function
 
Korhan Bey DİZİ formülü olduğunu belirtmiş, dikkat etmemişsiniz sanıyorum. DİZİ formülünü hücreye yazdıktan sonra hücreden CTRL+SHIFT+ENTER ile çıkmalısınız.
Evet, dediğiniz şekilde çıkış yaptım. ancak sonuç hücresinde #değer hatası alıyorum. Eksik yaptığım bir nokta mı var acaba?
 
Bahsi geçen sütunlarda bize aktarmadığınız bir durum olabilir.
 
Sanıyorum nokta virgül sistem ayarlarıyla ilgili bir farklılık oluyor. Çünkü sizin yaptığınızı ben yaptığımda sizin sonuç 48 çıkarken benim sonuç 7,5 (tabi buna benim demem yanlış olur, kodlar size ait ben sadece bir ilave yaptım) çıkıyor.

229405

229406
 
Bahsi geçen sütunlarda bize aktarmadığınız bir durum olabilir.
Şöyle özetliyim bu tuttuğum aylık rapor ve izinlerle alakalı bir çalışma sayfası. ayın 1'inden 31'ine kadar sütun oluşturulmuş. bir kaç örnek hücre şöyle: c2: çalıştı, pazar d2: rapor e2: çalıştı, 3 f2: çalıştı, 2 g2.... devam ediyor. buradaki tüm girdğim verileri saydırdım ancak sadece her hücre içinde virgül ile ayrılmış sayıların toplamını alamıyorum.
 
Küçük bir örnek dosya paylaşırsanız veri düzeniniz görerek formülü revize edebilirim.

Benim önerdiğim formül tek boşluk içeren hücrelerde sağlıklı sonuç verecektir. Eğer hücrelerde birden fazla boşluk varsa ve sayısal veriler en sağda ise formül sıkıntı çıkaracaktır.

Bir formül daha kurguladım. Birden fazla boşluk içeren hücrelerde denediğimde sonuç alabildim. Yine DİZİ formüldür.

C++:
=TOPLA(EĞERHATA(--EĞERHATA(YERİNEKOY(SAĞDAN(C2:Z2;UZUNLUK(C2:Z2)-BUL("*";YERİNEKOY(C2:Z2;" ";"*";UZUNLUK(C2:Z2)-UZUNLUK(YERİNEKOY(C2:Z2;" ";"")))));".";",");0);0))
 
Geri
Üst