Soru Çoketopla Makro İle Yapımı Hakkında

Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Merhabalar ekteki dosyada 30 adet şubem olucak sayfa2 deki A sütunundaki depo adlarına bakarak hücrelere çoketopla yapıcak sayfa1den . Makro çalışıyor fakat çok şube oldugu için hepsini ayrı ayrı yazmam lazım daha kısası yapılabilirmi yada makro kasmıcak şekilde daha iyisini ustalarım yapabilirmi yardımcı olursanız sevinirim.
Kod:
=ÇOKETOPLA(Sube_Hareketleri!J:J;Sube_Hareketleri!I:I;"02";Sube_Hareketleri!D:D;"AKTUEL")
Ana formül bu olucak. Makro çalıştığında formül bozuluyor J:J yerine K:K yazıyor gibi
 

Ekli dosyalar

Son düzenleme:

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Açıkçası ne yapmaya çalıştığınızı anlayamadım.
Şu mudur?
Sayfa2 A sütunundaki depo ismine göre, B-K arasındaki alanlara
Sayfa1 D sütunundaki Depo isimleri ve I sütunundaki Personel (siz sanırım şube diye buna diyorsunuz) numaralarını baz alarak, toplam değerleri hesaplayacaksınız.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Dogrudur Hocam J sütunu Toplucak kriterlere göre sayfa 2 deki şubelere göre karşısına yazıcak
Kod:
=ÇOKETOPLA(Sayfa1!J:J;Sayfa1!I:I;"01";Sayfa1!D:D;"DEPO01")
Bunun gibi bu sadece DEPO01 getiriyor sayfa2 b2 alanına benim yapmak istediğim. Makroyla bütün depoların toplamlarını ayrı ayrı sütunlara getirmek.
Kod:
=ÇOKETOPLA(Sayfa1!K:K;Sayfa1!J:J;"02";Sayfa1!E:E;"DEPO01")
C2 Alanına kod geliyor ama range değerleri değişiyor
 
Son düzenleme:

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Formülle çözüm isterseniz
Sayfa2 B2 hücresine kopyalayıp aşağı ve sağa doğru sürükleyerek çoğaltabilirsininiz.

=ÇOKETOPLA(Sayfa1!$J:$J;Sayfa1!$D:$D;$A2;Sayfa1!$I:$I;B$1)
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Formülle çözüm isterseniz
Sayfa2 B2 hücresine kopyalayıp aşağı ve sağa doğru sürükleyerek çoğaltabilirsininiz.

=ÇOKETOPLA(Sayfa1!$J:$J;Sayfa1!$D:$D;$A2;Sayfa1!$I:$I;B$1)
Teşekkürler hocam formülle ilgili sıkıntı sadece makro olursa daha iyi formülle hesaplama yapıyor excel yavaşlıyor oyuzden
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Değişkeni Long seçtiğinize göre Sayfa1 de satır sayınız çoğalacak anlamına mı geliyor?
Eğer öyleyse WorksheetFunction Metodu oldukça kasacaktır.

C++:
Sub Makro1()
Dim i As Long, k As Integer, Son As Long
Application.ScreenUpdating = False
With Worksheets("Sayfa1")
    Son = .Range("A" & Rows.Count).End(3).Row
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        For k = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
            Cells(i, k) = WorksheetFunction.SumIfs(.Range("J2:J" & Son), .Range("D2:D" & Son), Range("A" & i), .Range("I2:I" & Son), Cells(1, k))
        Next k
    Next i
End With
Application.ScreenUpdating = True
End Sub
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Değişkeni Long seçtiğinize göre Sayfa1 de satır sayınız çoğalacak anlamına mı geliyor?
Eğer öyleyse WorksheetFunction Metodu oldukça kasacaktır.

C++:
Sub Makro1()
Dim i As Long, k As Integer, Son As Long
Application.ScreenUpdating = False
With Worksheets("Sayfa1")
    Son = .Range("A" & Rows.Count).End(3).Row
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        For k = 2 To Cells(1, Columns.Count).End(xlToLeft).Column
            Cells(i, k) = WorksheetFunction.SumIfs(.Range("J2:J" & Son), .Range("D2:D" & Son), Range("A" & i), .Range("I2:I" & Son), Cells(1, k))
        Next k
    Next i
End With
Application.ScreenUpdating = True
End Sub
Elinize Sağlık hocam istediğim kod bu çok teşekkür ederim. Peki kasmaması için farklı kod yapılabilirmi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben olsam en hızlı ve pratik yöntem olan Özet Tablo (Pivot) kullanırdım.

Tablonuza dinamik alan tanımlaması yaptım. Dilediğiniz kadar veri ekleyip silebilirsiniz.
 

Ekli dosyalar

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar

Sayın @mukoli
Korhan Hocam en hızlı çözümü sunmuş sağ olsun.
Benim yaptığım da Alternatif olsun
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ek olarak bu işlemler için döngüye gerek yok. Aşağıdaki şekilde ilgili hücrelere blok olarak formülü yazdırıp sonra değere çevirebilirsiniz.

C++:
Option Explicit

Sub Sumifs_Test()
    With Sheets("Sayfa2").Range("B2:K6")
        .Formula = "=SUMIFS(Sayfa1!$J:$J,Sayfa1!$I:$I,B$1,Sayfa1!$D:$D,$A2)"
        .Value = .Value
    End With
End Sub
 

Mdemir63

Altın Üye
Katılım
7 Temmuz 2006
Mesajlar
2,868
Excel Vers. ve Dili
Ofis2010 32Bit Türkçe
Altın Üyelik Bitiş Tarihi
19-02-2026
Selamlar
@Korhan Ayhan Hocam
Daha çok şey öğrenmeliyiz siz ve diğer hocalarımızdan.
Elinize Sağlık

Saygılar
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Hepinize ayrı ayrı çok teşekkür ederim. Ellerinize Bilginize sağlık
 
Üst