ADO kullanarak Excel sayfalarındaki tabloları birleştirme

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
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

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,719
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
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​

 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,719
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Neresi sorunlu?
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Kod çalışıyor fakat verilerin tamamı çok afaki geliyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,719
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ulaşmak istediğiniz sonucu örneklermisiniz.
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,719
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığınız dosyaya göre görmek istediğiniz sonucu örneklermisiniz demek istemiştim.
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
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

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
Uzman arkadaşlar dan yardımcı olacak yok mu
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,719
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kodu revize ettim. Tekrar deneyip sonucu bildirirsiniz.
 

ErdalÖzdemir

Altın Üye
Katılım
12 Ağustos 2022
Mesajlar
98
Excel Vers. ve Dili
2013 TÜRKÇE
Altın Üyelik Bitiş Tarihi
21-09-2025
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.
 
Üst