Başka Dosyadan Sumıfs Kullanımı

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhaba arkadaşlar,

Elimde veri ve toplam adında olmak üzere 2 adet dosya var. Bunlardan toplam dosyasına sumıfs formülü yazmak istiyorum. Toplam alacağı değerler veri, toplamı yazacağı yer ise toplam dosyasında bulunmaktadır. Formülü aşağıdaki gibi yazdım fakat diğer kitaba nasıl baktıracağım konusunda yardımcı olur musunuz? Bunu kullanırken de toplam alacağı veri dosyasını açmadan çalıştırmam mümkün müdür acaba?

Range(cells(i,j) = application.WorksheetFunction.SumIfs()
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
SUMIFS-ÇOKETOPLA kapalı dosyalarda çalışmamaktadır. Bu sebeple TOPLA.ÇARPIM-SUMPRODUCT kullanarak sonuca gidebilirsiniz. Ya da tamamen kapalı dosyalara özgü olarak kullanılabilen ADO tekniklerini kullanabilirsiniz. Forumda "adodb" ifadesiyle arama yaparsanız bolca örnek kodlamaya ulaşabilirsiniz.
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Bilgilendirme için teşekkür ederim fakat benim için şuanda öncelikli olan kapalı dosyada çalışması değil. Esas yapmak istediğim makro içerisinde sumıfs formülünü kullanabilmek bunu yaparken de toplayacağı değerleri başka bir çalışma kitabından aldırabilmek.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu durumda basit düzeyde hedef dosyanın açık olduğunu düşünürsek aşağıdaki yapıyı kendinize uyarlayabilirsiniz.

Hedef dosyanın adı Kitap2

C++:
Sub Test()
    With Workbooks("Kitap2").Sheets("Sayfa1")
        Range("A1") = WorksheetFunction.SumIfs(.Range("C:C"), .Range("A:A"), "a", .Range("B:B"), "b")
    End With
End Sub
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
A ve B olarak belirlenidiğiniz koşulları da kitap 1 den aldırmak istiyorum mümkün müdür?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Mümkündür...

"a" yerine Range("D1").Value şeklinde yazabilirsiniz.
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
peki diğer kitaba gidişini nasıl yapmalıyım. Yani demek istediğim şu aynı sumıfs formülünün içerisinde 2 kitabı da kullanıyor olmam lazım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Range("A1") ifadesi ile aktif dosyadaki aktif sayfadaki A1 hücresi belirtilmiş oluyor.

Ben böyle durumlarda TANIMLAMA kullanıyorum. Kontrolü daha basit oluyor.

İki dosyanın aynı klasörde olduğu varsayıldı. Farklı ise aşağıdaki satırdaki dosya yolunu revize edersiniz.

Set WB2 = Workbooks.Open(WB1.Path & "\Kitap2.xlsx")

İki dosyadaki sayfa isimlerinin Sayfa1 olduğu varsayıldı. Yine sizde farklı ise revize edersiniz.


C++:
Option Explicit

Sub Test()
    Dim WB1 As Workbook, WB2 As Workbook
    Dim WS1 As Worksheet, WS2 As Worksheet
    
    Application.ScreenUpdating = False
    
    Set WB1 = ThisWorkbook
    Set WS1 = WB1.Sheets("Sayfa1")
    Set WB2 = Workbooks.Open(WB1.Path & "\Kitap2.xlsx")
    Set WS2 = WB2.Sheets("Sayfa1")

    WS1.Range("A1") = WorksheetFunction.SumIfs(WS2.Range("C:C"), WS2.Range("A:A"), WS1.Range("D1").Value, WS2.Range("B:B"), WS1.Range("D2").Value)

    WB2.Close 0

    Set WB1 = Nothing
    Set WS1 = Nothing
    Set WB2 = Nothing
    Set WS2 = Nothing

    Application.ScreenUpdating = True
End Sub
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Çok teşekkür ederim istediğim tam olarak buydu. İyi günler dilerim.
 
Üst