• DİKKAT

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

Başka Dosyadan Sumıfs Kullanımı

  • Konbuyu başlatan Konbuyu başlatan Tefo
  • Başlangıç tarihi Başlangıç tarihi

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
36
Excel Vers. ve Dili
Office 2019 EN 32 Bit
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:
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.
 
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.
 
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
 
A ve B olarak belirlenidiğiniz koşulları da kitap 1 den aldırmak istiyorum mümkün müdür?
 
Mümkündür...

"a" yerine Range("D1").Value şeklinde yazabilirsiniz.
 
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.
 
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
 
Çok teşekkür ederim istediğim tam olarak buydu. İyi günler dilerim.
 
Geri
Üst