• DİKKAT

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

Dolaylı Formülü Hk

Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Merhaba;
ekli tablomda 1den 31 e kadar sayfa isimleri yer almaktadır.
her sayfada bayı isimlerinin karşısında bayinin o günki sipariş toplamı yazmakatdır
son sayfada istediğim şu bayi isminin karşısına hafta hafta sayfa topalmalarının formülle otomatik gelmesi hk yardımcı olurmususnuz
 

Ekli dosyalar

Başka sayfadan bilgi çekmek istiyorsanız, adres fonksiyonunu kullanarak formülü genişletiniz.,
Dolaylı(adres(...)). Adres fonksiyonu içinde sayfa ismi tanımlayabilirsiniz.
 
Başka sayfadan bilgi çekmek istiyorsanız, adres fonksiyonunu kullanarak formülü genişletiniz.,
Dolaylı(adres(...)). Adres fonksiyonu içinde sayfa ismi tanımlayabilirsiniz.

hamit bey merhaba rica etsem
ekli dosyamda örnek gösterebilirmisiniz
 
Aşağıdaki kodları bir modüle yapıştırıp denerseniz istediğiniz toplama işlemini yapar. Yalnız kodun düzgün çalışması için dosyanızdaki sayfa isimlerinin örnek dosyanızdaki gibi olması gerekmektedir. Sayfa adı uzunluğu 2 ve daha az olanlara çarpma işlemi yapıldığından günlerle ilgili sayfaların dışında sayfa adlarının 2 karakterden uzun olması gerekmektedir.
Kod:
Sub toplam()
uyarı = MsgBox("Eski veriler silinsin mi?" & Chr(10) & "Evet'i seçerseniz tablodaki eski bayi toplamları sıfırlanacaktır." & _
        Chr(10) & "Hayır'ı seçerseniz bayi toplamları mevcut toplamların üzerine eklenecektir.", vbYesNo)
        
If uyarı = vbYes Then
    eski = Cells(Rows.Count, "B").End(3).Row
    Range("C3:G" & eski).ClearContents
    GoTo 10
Else
10:
For bayi = 3 To Cells(Rows.Count, "B").End(3).Row
    For sayfa = 1 To Sheets.Count
        If Len(Sheets(sayfa).Name) <= 2 Then
            If Sheets(sayfa).Name * 1 < 8 Then
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "C") = Cells(bayi, "C") + firmatop
            Else
            If Sheets(sayfa).Name * 1 < 15 Then
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "D") = Cells(bayi, "D") + firmatop
            Else
            If Sheets(sayfa).Name * 1 < 22 Then
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "E") = Cells(bayi, "E") + firmatop
            Else
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "F") = Cells(bayi, "F") + firmatop
            End If
            End If
            End If
        End If
    Next
    
    Cells(bayi, "G") = Cells(bayi, "C") + Cells(bayi, "D") + Cells(bayi, "E") + Cells(bayi, "F")
Next
             
End If
End Sub
 
Aşağıdaki kodları bir modüle yapıştırıp denerseniz istediğiniz toplama işlemini yapar. Yalnız kodun düzgün çalışması için dosyanızdaki sayfa isimlerinin örnek dosyanızdaki gibi olması gerekmektedir. Sayfa adı uzunluğu 2 ve daha az olanlara çarpma işlemi yapıldığından günlerle ilgili sayfaların dışında sayfa adlarının 2 karakterden uzun olması gerekmektedir.
Kod:
Sub toplam()
uyarı = MsgBox("Eski veriler silinsin mi?" & Chr(10) & "Evet'i seçerseniz tablodaki eski bayi toplamları sıfırlanacaktır." & _
        Chr(10) & "Hayır'ı seçerseniz bayi toplamları mevcut toplamların üzerine eklenecektir.", vbYesNo)
        
If uyarı = vbYes Then
    eski = Cells(Rows.Count, "B").End(3).Row
    Range("C3:G" & eski).ClearContents
    GoTo 10
Else
10:
For bayi = 3 To Cells(Rows.Count, "B").End(3).Row
    For sayfa = 1 To Sheets.Count
        If Len(Sheets(sayfa).Name) <= 2 Then
            If Sheets(sayfa).Name * 1 < 8 Then
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "C") = Cells(bayi, "C") + firmatop
            Else
            If Sheets(sayfa).Name * 1 < 15 Then
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "D") = Cells(bayi, "D") + firmatop
            Else
            If Sheets(sayfa).Name * 1 < 22 Then
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "E") = Cells(bayi, "E") + firmatop
            Else
                firmatop = 0
                son = Sheets(sayfa).Cells(Rows.Count, "C").End(3).Row
                firmatop = WorksheetFunction.SumIf(Sheets(sayfa).Range("C10:C" & son), Cells(bayi, "B"), _
                Sheets(sayfa).Range("J10:J" & son))
                Cells(bayi, "F") = Cells(bayi, "F") + firmatop
            End If
            End If
            End If
        End If
    Next
    
    Cells(bayi, "G") = Cells(bayi, "C") + Cells(bayi, "D") + Cells(bayi, "E") + Cells(bayi, "F")
Next
             
End If
End Sub

teşekkürler
iki dosyada işimi görüyor elinize sağlık
 
Merhaba,

Alternatif olarak eğer tüm günler için sayfa açılmışsa C3 hücresine,

Kod:
=TOPLA.ÇARPIM(ETOPLA(DOLAYLI(ADRES(SATIR(A10);10;;;SATIR($1:$7)+7*(SÜTUN(A1)-1)));">0"))

Günlerin hepsi örnekteki gibi açık değilse yada açılmıştı olabilir dizi formülü C3 hücresine,

Kod:
=TOPLA.ÇARPIM(EĞERHATA(ALTTOPLAM(9;DOLAYLI(ADRES(SATIR(A10);10;;;SATIR($1:$7)+7*(SÜTUN(A1)-1))));0))
 
Geri
Üst