• DİKKAT

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

ADO kullanarak Excel sayfalarındaki tabloları birleştirme

Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Merhaba Arkadaşalar,

Yapmak İstediğim;
Sınava Girenler sayfasından; İlçe, Kurum_Adı, TYT_GİREN, AYT_GİREN başlıklarını,
Eğer Kurum adları eşitse,
Yerleşenler sayfasından ise; Ön Lisans, Lisans ve ToplamYerleşen başlıklarını OkulBazlı sayfada ADO kullanarak birleştirmek istiyorum.
Left Join kullanarak birleştirmeye çalıştım. Fakat içinden çıkamadım.
Bu konuda uzman hocalarımızın yardıklarını bekliyorum.

Yardımlarınız için şimdiden teşekkür ederim.
 

Ekli dosyalar

Merhaba,

Deneyiniz.

C++:
Option Explicit

Sub Pivot_Report()
    Dim My_Connection As Object, My_Recordset As Object
    Dim File_Path As String, My_Query As String
    Dim WS As Worksheet, X As Integer
    
    Application.ScreenUpdating = False
    
    File_Path = ThisWorkbook.FullName
    
    Set My_Connection = CreateObject("AdoDb.Connection")
    My_Connection.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & File_Path & _
                       ";Extended Properties=""Excel 12.0 Xml;Hdr=Yes"";"
    
    My_Query = "SELECT " & _
               "T1.[İlçe], T1.[Kurum_Adı], " & _
               "SUM(T1.[TYT_GİREN]) AS [Toplam_TYT_Giren], " & _
               "SUM(T1.[AYT_GİREN]) AS [Toplam_AYT_Giren], " & _
               "T2.[Toplam_Lisans], " & _
               "T2.[Toplam_Ön_Lisans], " & _
               "T2.[Toplam_Yerleşen], " & _
               "IIF(SUM(T1.[TYT_GİREN]) = 0, 0, T2.[Toplam_Yerleşen] / SUM(T1.[TYT_GİREN])) AS [Yerleşme_Oranı] " & _
               "FROM [Sınava Girenler$] AS T1 " & _
               "LEFT JOIN (" & _
                   "SELECT " & _
                       "[İlçe], [Kurum_Adı], " & _
                       "SUM([Lisans]) AS [Toplam_Lisans], " & _
                       "SUM([Ön Lisans]) AS [Toplam_Ön_Lisans], " & _
                       "SUM([ToplamYerleşen]) AS [Toplam_Yerleşen] " & _
                   "FROM [Yerleşenler$] " & _
                   "GROUP BY [İlçe], [Kurum_Adı]) AS T2 " & _
               "ON T1.[İlçe] = T2.[İlçe] AND T1.[Kurum_Adı] = T2.[Kurum_Adı] " & _
               "GROUP BY T1.[İlçe], T1.[Kurum_Adı], T2.[Toplam_Lisans], T2.[Toplam_Ön_Lisans], T2.[Toplam_Yerleşen] " & _
               "ORDER BY IIF(SUM(T1.[TYT_GİREN]) = 0, 0, T2.[Toplam_Yerleşen] / SUM(T1.[TYT_GİREN])) DESC"
           
    Set My_Recordset = My_Connection.Execute(My_Query)

    Set WS = ThisWorkbook.Sheets("OkulBazlı")
    WS.Range("A1").CurrentRegion.Clear
    
    For X = 0 To My_Recordset.Fields.Count - 1
        WS.Cells(1, X + 1).Value = My_Recordset.Fields(X).Name
        WS.Cells(1, X + 1).Font.Bold = True
    Next
    
    WS.Cells(2, 1).CopyFromRecordset My_Recordset
    WS.Cells.WrapText = False
    WS.Cells(WS.Rows.Count, 1).End(3).Offset(1) = "TOPLAM"
    WS.Cells(WS.Rows.Count, 1).End(3).Resize(, 8).Font.Bold = True
    WS.Cells(WS.Rows.Count, 1).End(3).Offset(, 2).Resize(, 5).Formula = "=SUM(C2:C" & WS.Cells(WS.Rows.Count, 1).End(3).Row - 1 & ")"
    WS.Range("C2:G" & WS.Cells(WS.Rows.Count, 1).End(3).Row).NumberFormat = "#,##0"
    WS.Range("H2:H" & WS.Cells(WS.Rows.Count, 1).End(3).Row).NumberFormat = "% 0.00"
    WS.Columns.AutoFit

    My_Recordset.Close
    My_Connection.Close
    
    Set My_Recordset = Nothing
    Set My_Connection = Nothing

    Application.ScreenUpdating = True

    MsgBox "Özet tablo başarıyla oluşturuldu!", vbInformation
End Sub
 
Hocam teşekkür ederim. Elinize emeğinize sağlık.
Denedim, fakat veriler çok farklı geliyor.


İlçe

Kurum_Adı

Toplam_TYT_Giren

Toplam_AYT_Giren

Toplam_OnLisans

Toplam_Lisans

Toplam_Yerleşen

Danişment


Danişment Anadolu İmam Hatip Lisesi


9.362​



8.556​



2.114​



7.248​



9.362​


Danişment


Danişment Kız Anadolu Lisesi


6.357​



5.421​



3.586​



2.771​



6.357​


Danişment


Danişment Merkez Mesleki ve Teknik Anadolu Lisesi


10.600​



6.572​



10.000​



600​



10.600​


Osmanlı


Osmanlı Kız Mesleki ve Teknik Anadolu Lisesi


37.720​



25.944​



20.910​



16.810​



37.720​


Osmanlı


Osmanlı Mesleki ve Teknik Anadolu Lisesi


2.640​



1.416​



2.200​



440​



2.640​


Selçuklu


Özel Osmanlı Fen Lisesi


2.196​



2.196​



0​



2.196​



2.196​



















2.196​

 
Ulaşmak istediğiniz sonucu örneklermisiniz.
 
Hocam Merhaba,
Örneğin A okulunda Toplam_TYT' den sınava giren, Toplam_AYT' den sınava giren ve Toplam Yerleşen sayılarını okulun karşısına getirmek.
 
Paylaştığınız dosyaya göre görmek istediğiniz sonucu örneklermisiniz demek istemiştim.
 
Korhan Hocam örnek


İlçe

Kurum_Adı

TYT_GİREN

AYT_GİREN

Lisans

Önlisans

ToplamYerleşen

Danişment


Danişment Anadolu İmam Hatip Lisesi

151​

138​

14​

48​

62​

Danişment


Danişment Kız Anadolu Lisesi

163​

139​

22​

17​

39​

Danişment


Danişment Merkez Mesleki ve Teknik Anadolu Lisesi

200​

124​

50​

3​

53​

Osmanlı


Osmanlı Kız Mesleki ve Teknik Anadolu Lisesi

205​

141​

102​

82​

184​

Osmanlı


Osmanlı Mesleki ve Teknik Anadolu Lisesi

110​

59​

20​

4​

24​

Selçuklu


Özel Osmanlı Fen Lisesi

61​

61​

0​

36​

36​

TOPLAM



890​

662​

208​

190​

398​
 

Ekli dosyalar

Önerdiğim kodu revize ettim. Tekrar deneyip sonucu bildirirsiniz.
 
Korhan Hocam, Teşekkür ederim. Elinize emeğinize sağlık.
Sorun çözülmüştür. Kod çalışıyor ve veriler doğru geliyor.
 
Geri
Üst