Dolaylı Formülü Hk

Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Altın Üyelik Bitiş Tarihi
03-07-2024
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

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Başka sayfadan bilgi çekmek istiyorsanız, adres fonksiyonunu kullanarak formülü genişletiniz.,
Dolaylı(adres(...)). Adres fonksiyonu içinde sayfa ismi tanımlayabilirsiniz.
 
Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Altın Üyelik Bitiş Tarihi
03-07-2024
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
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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
 
Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Altın Üyelik Bitiş Tarihi
03-07-2024
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
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,636
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
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))
 
Üst