otomatik olarak toplattırma

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Arkadaşlar kullanmış olduğum bir dosyamda sürekli hücre birleştirmesi yaptırarak toplama yaptığım alanlar bulunmaktadır. Buralara sıfırdan farklı olan değerleri toplattırmaktayım. Her defasında elle formül vermek yerine bir butona formül girerek otomatik olarak toplattırmak istiyorum. Bunu ne şekilde yapabiliriz acaba? Birleştirilmiş hücreler farklı olduğundan normal komutlarla yapamadım.

Teşekkürler.
 

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,

Bu şekilde deneyin.

Kod:
Sub Topla()

    Dim i As Long, adr As String, a As Byte
    
    Application.ScreenUpdating = False
    Range("B:B").ClearContents
    
    For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
        a = 2
        adr = Cells(i, "B").MergeArea.Address
        Cells(i, "B") = "=Sum(" & Replace(adr, "B", "A") & ")"
        If InStr(adr, ":") > 0 Then a = 4
        i = Split(adr, "$")(a)
    Next i
    
    Application.ScreenUpdating = True
    
End Sub

.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Öncelikle teşekkürler Ömer bey,

Bazı alanlarda da birleştirmeler mevcut değildir bu durumda da direk örneğin =A39 diyebilirmi? Bu gibi durumda Runtime error "9" Subscript out of range hatası veriyor.
 

Ö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
Kodları güncelledim. Tekrar deneyiniz.

.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Bunu kendi dosyama uyarladım nedense yapmıyor
 
Son düzenleme:

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Kodları güncelledim. Tekrar deneyiniz.

.
Ömer bey gayet güzel sizide yoruyorum kusura bakmayın. Burda negatif değerleri işleme almaması için ne yapabiliriz. Örneğin aşağıda ben -28'i işleme almamasını istiyorum. Sadece pozitif değerleri toplasın. Tekrar teşekkürler.
-28,00
25,00
3,00
7,00
6,25

Bunu kendi dosyama uyarladım nedense yapmıyor
 

Ö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
Kod:
Cells(i, "B") = "=Sum(" & Replace(adr, "B", "A") & ")"
yukarıdaki satırın yerine aşağıdaki satırı yazıp deneyin.

Kod:
Cells(i, "B") = "=SumIf(" & Replace(adr, "B", "A") & "," & """>0""" & ")"
.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Kod:
Cells(i, "B") = "=Sum(" & Replace(adr, "B", "A") & ")"
yukarıdaki satırın yerine aşağıdaki satırı yazıp deneyin.

Kod:
Cells(i, "B") = "=SumIf(" & Replace(adr, "B", "A") & "," & """>0""" & ")"
.
Ömer bey en son bir değişiklik yapabilirmiyiz zahmet olmazsa? Range("B:B").ClearContents de formülü Range("F968: F1136").ClearContents uyarladığımda boş olan hücrelere de toplam aldırıyor ve SIFIR(0) olarak atıyor. Burada sadece dolu hücreler nasıl toplatabilirim? Kendi dosyamın formülü

Private Sub CommandButton1_Click()
Dim i As Long, adr As String, a As Byte

Application.ScreenUpdating = False
Range("F968: F1136").ClearContents

For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
a = 2
adr = Cells(i, "F").MergeArea.Address
Cells(i, "F") = "=SumIf(" & Replace(adr, "F", "C") & "," & """>0""" & ")"
If InStr(adr, ":") > 0 Then a = 4
i = Split(adr, "$")(a)
Next i

Application.ScreenUpdating = True
End Sub

Teşekkürler.
 

Ö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
Sorunuz tam anlaşılmıyor. Örnek dosya ekleyerek daha detaylı açıklama yapar mısınız.

.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024

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
For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row

Kırmızı işaretli bölümü B yaparak deneyin.

.
 
Üst