Kapalı dosyalardan veri cekerek macroyla ozet tablo olusturma

Katılım
28 Haziran 2007
Mesajlar
246
Excel Vers. ve Dili
Excel 2003 Tr
Arkadaslar iyi geceler. bir klasordeki kapalı dosyalardan verileri cekip cesitli kriterlere gore bunları ozetleyecek bir macroya ihtiyacım var. yardımcı olursanız cok sevinirim.
 
Katılım
28 Haziran 2007
Mesajlar
246
Excel Vers. ve Dili
Excel 2003 Tr
Sorumu degistirerek yeniden yoneltmek isterim

Arkadaslar soruma maalesef bir cevap alamadıgım icin ve daha once derdimi tam olarak anlatamadıgımı da dusunerek yeniden toparlamak ve olayın kapalı dosyadan veri almak kısmını kaldırarak yeniden toparladım. ustalarımdan yardımlarını esirgememelerini rica ederim.
 
Katılım
28 Haziran 2007
Mesajlar
246
Excel Vers. ve Dili
Excel 2003 Tr
arkadaslar yardımcı olabilecek kimse varsa cok makbule gececek
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
"1" isimli sayfanın 1. satırını sorgulamanın (SQL) çalışması için sildim.
Sonuçların tamamının doğruluğunu test etmedim. Ekli dosyayı inceleyip sonucu bildiriniz.
Kod:
Sub Ozet()
Dim Cn As Object, Rs As Object, Sh As Worksheet
 
Set Cn = CreateObject("ADODB.Connection")
Set Sh = Sheets.Add(after:=Sheets(Sheets.Count))
 
Cn.Open _
    "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _
    ThisWorkbook.FullName
 
Set Rs = Cn.Execute( _
"SELECT DISTINCT [Vergi Numarası], [Adı Soyadı], Count([Vergi Numarası]), Sum([Tutar]), Sum([Kdv]), Sum([Toplam]) " & _
"FROM [1$A1:F65536] " & _
"GROUP BY [Vergi Numarası], [Adı Soyadı]")
 
Sh.[a1].CopyFromRecordset Rs
Rs.Close
 
Set Rs = Cn.Execute( _
"SELECT DISTINCT [Adı Soyadı], [Vergi Numarası], Count([Fatura Nosu]), Sum([Tutar]), Sum([Kdv]), Sum([Toplam]) " & _
"FROM [1$G1:L65536] " & _
"GROUP BY [Adı Soyadı], [Vergi Numarası]")
 
Sh.[h1].CopyFromRecordset Rs
Sh.Rows(1).Delete
Sh.Columns("A:M").AutoFit
 
Rs.Close
Cn.Close
 
Set Rs = Nothing
Set Cn = Nothing
Set Sh = Nothing
End Sub
 
Katılım
28 Haziran 2007
Mesajlar
246
Excel Vers. ve Dili
Excel 2003 Tr
sn anemos tesekkur ediyorum. calismaniz istedigim sonucu vermekle beraber
ozellikle belirttigim bir durum olmamis. soyleki bazı durumlardan dolayı aynı kisiden alınmıs bir faturayı bir kac defa islemek durumunda kaliyorum. o yuzden fatura adedi kısmını bir kisinin kac defa gectigi olarak degil de bir kisiden numarası birbirinden farklı kac fatura gectigi olarak dusunmemiz gerekiyor. Ayrıca macro her calistiginda ayrı bir sayfa ekleyip verileri oraya aktariyor. sabit isim vermek gerekirse 1 nolu sayfa BFHAZ verilerin aktarilacagi ve guncellenecegi sayfa BFORM olarak adlandirilabilir. ilginize tesekkur ediyorum
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Dediğiniz şekilde saydığında "Vergi Dairesi Vergi Ödemeleri" fat. sayısı 11 yerine 10 dönüyor. Eğer faturaları ayrı satır olarak yazarsanız sayma işlemi doğru sonuç döndürecek. Yani "Fatura Nosu" sütununda "2274-2275" tarzında fatura no kullanmamalısınız.

Forumda konuyla ilgili daha farklı fikir de gelebilir.
 
Son düzenleme:
Katılım
28 Haziran 2007
Mesajlar
246
Excel Vers. ve Dili
Excel 2003 Tr
sayın anemos bu saatte sizi rahatsız ettigimin farkındayım. ancak fatura numarası kısmını tekrar etmek zorundayım. orası metin olarak da kabul edilebilir. oraya aynı sahsa ait birbirinden farklı girislerin sayısı olacak sadece vergi dairesi vergi ödemeleri kısmında işaret ettiginiz numarayı bir ustundeki 2690 olan numarayla aynı yazdıgımda 11 olarak sayıyor. benim istedigim birbirinden farklı olanları yazması yani 10 yazması. macroyu her calistirdigimda farklı bir sayfa ekliyor kısmını da tekrar etmek durumundayım. verileri aktaracagı sayfa sabitlenmeli. rahatsız ettigim icin tekrar ozur dilerim
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Şimdi "2" isimli sayfaya aktarılacak.

Kod:
Sub Ozet3()
Dim Cn As Object, Rs As Object
 
Sheets("2").[a3:L65536].ClearContents
 
Set Cn = CreateObject("ADODB.Connection")
 
Cn.Open _
    "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _
    ThisWorkbook.FullName
    
Set Rs = Cn.Execute( _
"SELECT DISTINCT [Vergi Numarası], [Adı Soyadı], Count([Fatura Nosu]), Sum([Tutar]), Sum([Kdv]), Sum([Toplam]) " & _
"FROM [1$A1:F65536] " & _
"GROUP BY [Vergi Numarası], [Adı Soyadı]")
 
Sheets("2").[a3].CopyFromRecordset Rs
Rs.Close
    
Set Rs = Cn.Execute( _
"SELECT DISTINCT [Adı Soyadı], [Vergi Numarası], Count([Fatura Nosu]), Sum([Tutar]), Sum([Kdv]), Sum([Toplam]) " & _
"FROM [1$G1:L65536] " & _
"GROUP BY [Adı Soyadı], [Vergi Numarası]")
    
Sheets("2").[g3].CopyFromRecordset Rs
 
Sheets("2").Rows(3).Delete
Sheets("2").Columns("A:L").AutoFit
 
Rs.Close
Cn.Close
 
Set Rs = Nothing
Set Cn = Nothing
Set Sh = Nothing
End Sub
 
Katılım
28 Haziran 2007
Mesajlar
246
Excel Vers. ve Dili
Excel 2003 Tr
sayın anemos cok tesekkur ediyorum. ellerinize saglık.

arkadaslar bu macroyla soyle bir eksigim kaldı.
soyle ki sn anemos'un macrosu bir kisiden alınan her faturayı sayıyor. baska bir degisle bir kisinin satırlarda kac defa gectigini sayıyor. benim istegim ise aynı kisiden alınan faturaları sayarken tekrar edenleri saymaması. o faturanın karsısına denk gelen tutar kdv ve toplam kısımlarının toplamı alınacak ama tekrar eden fatura nosu fatura adedi kısmında 1 defa sayılacak
 
Üst