İki Dolu Satır Arasındaki Verileri Toplama

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
Değerli üstadlarım hepinize iyi hafta sonları diliyorum.

Ekli dosyamda bulunan dosyada G sütunundaki sayıları A sütununda derslerin toplamları olarak almak istiyorum. Bu işlemi de dosyamın yapısı gereği VBA ile yapmak istiyorum. Çünkü satır sayıları değişken olabiliyor.
Şimdiden teşekkür ederim.
 

Ekli dosyalar

sward175

Özel Üye
Katılım
4 Şubat 2011
Mesajlar
1,170
Excel Vers. ve Dili
Excel Vers. ve Dili:
Microsoft Office Professional Plus 2016
Altın Üyelik Bitiş Tarihi
04-06-2024
Merhaba :Feylosof,
Eki inceleyiniz.
Kod52 satır aralığında çalışacaktır, Satır çoğaltmak isterseniz
Koddaki : for i 3 To 52 son satır olarak değiştirebilirsiniz.
Saygılarımla , sward175
 

Ekli dosyalar

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
Sayın @sward175 ilginiz için teşekkür ederim. Sanırım eksik bilgi verdiğim için yanlış anlaşıldım. Şöyle ki: G sütunundaki sayıları H sütununda A Sütunundaki ders aralığına göre fonksiyonla yaptığım toplamları verecek şekilde kod olsun istiyorum.
 

sward175

Özel Üye
Katılım
4 Şubat 2011
Mesajlar
1,170
Excel Vers. ve Dili
Excel Vers. ve Dili:
Microsoft Office Professional Plus 2016
Altın Üyelik Bitiş Tarihi
04-06-2024
Tekrar Merhaba, Feylosof,
İstediğiniz böyle bir cevaptır herhalde ,
Saygılarımla, sward175
 

Ekli dosyalar

sward175

Özel Üye
Katılım
4 Şubat 2011
Mesajlar
1,170
Excel Vers. ve Dili
Excel Vers. ve Dili:
Microsoft Office Professional Plus 2016
Altın Üyelik Bitiş Tarihi
04-06-2024
Sayın : Feylosof,
Tekrar atıyorum istediğinizi sonradan anladım.
Hoşça Kalın.
Saygılarımla.
 

Ekli dosyalar

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
H
Sayın : Feylosof,
Tekrar atıyorum istediğinizi sonradan anladım.
Hoşça Kalın.
Saygılarımla.
Hocam ulaşmak istediğim sonuç budur. Çok teşekkür ederim. Ancak satır aralıklarının sayısı değişken olduğu için kodlarda aralıkları sabit tutmak istemiyorum. Zira her defasında koda müdahale edilmesini gerektirecek. birleştirilen hücre aralıklarında toplama yapacak şekilde olmaz mı
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
Kodun istediğim şekilde düzenlenmesi olası değil midir acaba?
Ustalarımdan istirham ediyorum.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,833
Excel Vers. ve Dili
Microsoft 365 Tr-64
İlk yapılan işlemlerin doğru olduğunu varsayarak
C++:
Sub TumIslemleriGerceklestir()
    Dim i As Integer, k As Integer, sonSatir As Integer, bak As Integer
    sonSatir = Range("A" & Rows.Count).End(xlUp).Row ' Toplamların ekleneceği satır
    For i = 3 To sonSatir - 1
        Cells(i, 7) = Application.WorksheetFunction.Sum(Range("C" & i).Resize(1, 4))
        If Cells(i, 1) <> "" Then
            Cells(i, 8) = Cells(i, 7) + Cells(i, 8)
            bak = i
        Else
            Cells(bak, 8) = Cells(i, 7) + Cells(bak, 8)
        End If
    Next i
    
    For k = 3 To 8
        Cells(sonSatir, k) = Application.WorksheetFunction.Sum(Cells(3, k).Resize(sonSatir - 3, 1))
    Next k
End Sub
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
İlk yapılan işlemlerin doğru olduğunu varsayarak
C++:
Sub TumIslemleriGerceklestir()
    Dim i As Integer, k As Integer, sonSatir As Integer, bak As Integer
    sonSatir = Range("A" & Rows.Count).End(xlUp).Row ' Toplamların ekleneceği satır
    For i = 3 To sonSatir - 1
        Cells(i, 7) = Application.WorksheetFunction.Sum(Range("C" & i).Resize(1, 4))
        If Cells(i, 1) <> "" Then
            Cells(i, 8) = Cells(i, 7) + Cells(i, 8)
            bak = i
        Else
            Cells(bak, 8) = Cells(i, 7) + Cells(bak, 8)
        End If
    Next i
  
    For k = 3 To 8
        Cells(sonSatir, k) = Application.WorksheetFunction.Sum(Cells(3, k).Resize(sonSatir - 3, 1))
    Next k
End Sub
Üstadım çok teşekkür ederim. Çok iyi oldu. Bir şey daha sorabilir miyim? Toplamları sadece G sütunundan alabilir miyiz. G sütunundaki toplamların hazır olduğunu varsayarak. Ekli dosyada olduğu gibi
 

Ekli dosyalar

Son düzenleme:

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,125
Excel Vers. ve Dili
office2010
Alternatif,

Kod:
Sub test()

With Sheets("TOPLAM")
    son = .Range("A" & Rows.Count).End(3).Row
    a = .Range("A2:G" & son).Value
    For i = 1 To UBound(a)
        If a(i, 1) <> "" Then y = a(i, 1)
        a(i, 1) = y
    Next i
    
    ReDim b(1 To UBound(a), 1 To 1)
    
    j = 2
    Do While j <= UBound(a)
        krt = a(j, 1): sat = j - 1
        topla = 0
        Do While a(j, 1) = krt
            topla = topla + a(j, 7)
            j = j + 1: If j > UBound(a) Then Exit Do
        Loop
        b(sat, 1) = topla
    Loop
    
    .[H3].Resize(UBound(a) - 1) = b
    
End With

End Sub
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,833
Excel Vers. ve Dili
Microsoft 365 Tr-64
Üstadım çok teşekkür ederim. Çok iyi oldu. Bir şey daha sorabilir miyim? Toplamları sadece G sütunundan alabilir miyiz. G sütunundaki toplamların hazır olduğunu varsayarak. Ekli dosyada olduğu gibi
Satırın başına tek tırnak koyun yeterli olacaktır
'Cells(i, 7) = Application.WorksheetFunction.Sum(Range("C" & i).Resize(1, 4))

Eğer en alttaki toplam satırından bahsediyorsanız For k = 3 To 8
kısmında

sadece G için
For k=7 to 7

G ve H istiyorsanız
For k=7 to 8
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
Satırın başına tek tırnak koyun yeterli olacaktır
'Cells(i, 7) = Application.WorksheetFunction.Sum(Range("C" & i).Resize(1, 4))

Eğer en alttaki toplam satırından bahsediyorsanız For k = 3 To 8
kısmında

sadece G için
For k=7 to 7

G ve H istiyorsanız
For k=7 to 8
Üstadım çok teşekkür ederim.
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
Alternatif,

Kod:
Sub test()

With Sheets("TOPLAM")
    son = .Range("A" & Rows.Count).End(3).Row
    a = .Range("A2:G" & son).Value
    For i = 1 To UBound(a)
        If a(i, 1) <> "" Then y = a(i, 1)
        a(i, 1) = y
    Next i
   
    ReDim b(1 To UBound(a), 1 To 1)
   
    j = 2
    Do While j <= UBound(a)
        krt = a(j, 1): sat = j - 1
        topla = 0
        Do While a(j, 1) = krt
            topla = topla + a(j, 7)
            j = j + 1: If j > UBound(a) Then Exit Do
        Loop
        b(sat, 1) = topla
    Loop
   
    .[H3].Resize(UBound(a) - 1) = b
   
End With

End Sub
Ziynettin hocam desteğiniz için size de çok teşekkür ederim
 

Korhan Ayhan

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

C++:
Option Explicit

Sub X_SUM()
    Dim Rng As Range
    
    Range("H3:H" & Rows.Count).ClearContents
    
    For Each Rng In Range("A3:A" & Cells(Rows.Count, 1).End(3).Row)
        If Rng.MergeArea.Cells(1, 1) <> "" Then
            Cells(Rng.Row, "H") = WorksheetFunction.Sum(Rng.MergeArea.Offset(, 6).Resize(Rng.MergeArea.Rows.Count))
        End If
    Next
End Sub
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
457
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
Alternatif...

C++:
Option Explicit

Sub X_SUM()
    Dim Rng As Range
   
    Range("H3:H" & Rows.Count).ClearContents
   
    For Each Rng In Range("A3:A" & Cells(Rows.Count, 1).End(3).Row)
        If Rng.MergeArea.Cells(1, 1) <> "" Then
            Cells(Rng.Row, "H") = WorksheetFunction.Sum(Rng.MergeArea.Offset(, 6).Resize(Rng.MergeArea.Rows.Count))
        End If
    Next
End Sub
Teşekkürler Korhan Hocam.
 
Üst