- Katılım
- 15 Mart 2005
- Mesajlar
- 42,269
- Excel Vers. ve Dili
- Microsoft 365 Tr-En 64 Bit
Merhaba Tevfik Bey,
Bilgim dahilinde biraz açıklamaya çalışayım. Yanlış yönlendirmem olursa bilgi sahibi arkadaşlar düzeltebilirler.
Makroda kullandığım aşağıdaki tanımlalar benim yazım şeklimdir. Siz farklı ifadeler kullanarak değiştirebilirsiniz.
My_Connection = ADO Bağlantısı
My_Recordset = Veri Seti
My_Query = Sorgu Satırı
ADO bir veritabanı aracıdır.
Bu sebeple exceldeki tablonuzun bir veritabanı yapısında olması çok büyük önem taşır.
Her sütunun ilk satırında başlıklar ve altında standart veri türü girişleri şeklinde bir tablo yapısına ihtiyaç duyar.
Bağlantı bloğunda (My_Connection) kullandığımız "No" parametresi sorgu satırında size sütun başlıklarını mı yoksa sütun başlık açıklamalarını mı kullanacağınızı belirler.
Bağlantı Bloğu;
My_Connection.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;Hdr=No"""
"No" parametresi ile bağlantı açarsanız sütunları F1 F2 F3 .... şeklinde ifade edersiniz. "F" harfi "Field" (Alan-Sütun) olarak ifade edilir. F1 tablonuzdaki birinci sütunu ifade eder. Burada tablonuzun başlangıcı önem taşır. Eğer tablonuz A sütunundan başlıyorsa F1 = A Sütunu olur. Ama tablonuz Z sütunundan başlıyorsa bu sefer F1 = Z Sütunu olacaktır.
"Yes" parametresi ile bağlantı açarsanız bu sefer sütun başlıklarını kullanmanız gerekir. Yani sütun başlığında ADI SOYADI yazıyorsa siz bunu sorgu satırına yazarken köşeli parantez içinde [ADI SOYADI] şeklinde yazmanız gerekir. Başlıklarda boşluk karakteri varsa köşeli parantez kullanımı gerekmektedir. Eğer başlıklarda boşluk kullanmıyorsanız köşeli parantez yazmanıza gerek kalmaz. Mesela sütun başlığınız TARİH ise direkt TARİH ya da [TARİH] şeklinde yazabilirsiniz. Ek olarak sütun başlıklarında eğer nokta kullanıyorsanız bu karakterde sorgulamada sorun çıkaracaktır. Mesela TC. NO şeklinde bir sütun başlığınız varsa bunu sorguda [TC# NO] şeklinde yazmanız gerekir.
Kullandığımız sorgu satırında;
My_Query = "Select Distinct F1 From [Sayfa1$] Group By F1 Having Count(F1) = 1 Order By F1 Asc"
Kırmızı renkle ifade edilen alanlar sizin dosyanıza göre A sütununu ifade eder. Eğer siz 10. sütunda işlem yapacaksanız ve tablonuz veritabanı biçiminde ise F10 yazarak kullanabilirsiniz.
Yukarıdaki sorguyu çalıştırdığınızda eğer kriterlerinizi sağlayan veriler varsa bunlar size veri seti olarak döndürülür.
"If My_Recordset.RecordCount > 0 Then" sorgusu ile bu veri setinde veri olup olmadığını sorguluyoruz. Eğer veri varsa sonuç alanına bu verileri yazdırmak amaçlı kullanıyoruz.
Benzer olanları ya da benzer olmayanları tamamen sorgu (My_Query) satırında belirliyoruz.
Aklınızdan geçen sonuç tablosu aşağıdaki gibiyse sorgu (My_Query) satırını değiştirmek gerekir.
Ek olarak aşağıdaki linkte paylaşılan eğitim videolarını izlemenizi kesinlikle tavsiye ederim.
Bilgim dahilinde biraz açıklamaya çalışayım. Yanlış yönlendirmem olursa bilgi sahibi arkadaşlar düzeltebilirler.
Makroda kullandığım aşağıdaki tanımlalar benim yazım şeklimdir. Siz farklı ifadeler kullanarak değiştirebilirsiniz.
My_Connection = ADO Bağlantısı
My_Recordset = Veri Seti
My_Query = Sorgu Satırı
ADO bir veritabanı aracıdır.
Bu sebeple exceldeki tablonuzun bir veritabanı yapısında olması çok büyük önem taşır.
Her sütunun ilk satırında başlıklar ve altında standart veri türü girişleri şeklinde bir tablo yapısına ihtiyaç duyar.
Bağlantı bloğunda (My_Connection) kullandığımız "No" parametresi sorgu satırında size sütun başlıklarını mı yoksa sütun başlık açıklamalarını mı kullanacağınızı belirler.
Bağlantı Bloğu;
My_Connection.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;Hdr=No"""
"No" parametresi ile bağlantı açarsanız sütunları F1 F2 F3 .... şeklinde ifade edersiniz. "F" harfi "Field" (Alan-Sütun) olarak ifade edilir. F1 tablonuzdaki birinci sütunu ifade eder. Burada tablonuzun başlangıcı önem taşır. Eğer tablonuz A sütunundan başlıyorsa F1 = A Sütunu olur. Ama tablonuz Z sütunundan başlıyorsa bu sefer F1 = Z Sütunu olacaktır.
"Yes" parametresi ile bağlantı açarsanız bu sefer sütun başlıklarını kullanmanız gerekir. Yani sütun başlığında ADI SOYADI yazıyorsa siz bunu sorgu satırına yazarken köşeli parantez içinde [ADI SOYADI] şeklinde yazmanız gerekir. Başlıklarda boşluk karakteri varsa köşeli parantez kullanımı gerekmektedir. Eğer başlıklarda boşluk kullanmıyorsanız köşeli parantez yazmanıza gerek kalmaz. Mesela sütun başlığınız TARİH ise direkt TARİH ya da [TARİH] şeklinde yazabilirsiniz. Ek olarak sütun başlıklarında eğer nokta kullanıyorsanız bu karakterde sorgulamada sorun çıkaracaktır. Mesela TC. NO şeklinde bir sütun başlığınız varsa bunu sorguda [TC# NO] şeklinde yazmanız gerekir.
Kullandığımız sorgu satırında;
My_Query = "Select Distinct F1 From [Sayfa1$] Group By F1 Having Count(F1) = 1 Order By F1 Asc"
Kırmızı renkle ifade edilen alanlar sizin dosyanıza göre A sütununu ifade eder. Eğer siz 10. sütunda işlem yapacaksanız ve tablonuz veritabanı biçiminde ise F10 yazarak kullanabilirsiniz.
Yukarıdaki sorguyu çalıştırdığınızda eğer kriterlerinizi sağlayan veriler varsa bunlar size veri seti olarak döndürülür.
"If My_Recordset.RecordCount > 0 Then" sorgusu ile bu veri setinde veri olup olmadığını sorguluyoruz. Eğer veri varsa sonuç alanına bu verileri yazdırmak amaçlı kullanıyoruz.
Benzer olanları ya da benzer olmayanları tamamen sorgu (My_Query) satırında belirliyoruz.
Aklınızdan geçen sonuç tablosu aşağıdaki gibiyse sorgu (My_Query) satırını değiştirmek gerekir.
Ek olarak aşağıdaki linkte paylaşılan eğitim videolarını izlemenizi kesinlikle tavsiye ederim.