Sayısal sıralama diziye alınarak nasıl listelenir ?

Korhan Ayhan

Administrator
Yönetici
Admin
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.

235767



Ek olarak aşağıdaki linkte paylaşılan eğitim videolarını izlemenizi kesinlikle tavsiye ederim.

 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Hocam,
İlginize teşekkür ederim. Bağlantıyı mutlaka inceleyeceğim.
Saygılarımla
 
Üst