• DİKKAT

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

tablodan hızlı bir şekilde verileri ayrıştırmak

Katılım
28 Aralık 2005
Mesajlar
92
Merhaba,
ekteki dosyada görüldüğü gibi Sayfa 1'de tablo mevcut. Orjinal dosyada ellibine kadar kayıt var ve bir dosyada 8'e kadar tablo(ayrı sayfada) mevcut. Bazılarında 5 madde varken, bazılarında 20 madde mevcut.
Örneğimizde 4 madde var. Benim amacım iki tarih arasında mesela 01.01.2011 ile 31.01.2011 arasındaki kayıtların A - B - C olanları ilgili sayfalara, ilgili syafalarda belirtildiği gibi ayrıştırmak.

Makro önce 2. satırda tarihi kontrol edecek. İki tarih arasında ise Madde1'den başlayarak Madde 4'e kadar devam edecek. İlgili maddelerin birinci sütunu A ise A'sayfasına, B ise B sayfasına, C ise C sayfasına belirtildiği gibi kopyalayacak. Bunu satır sayısı kadar devam edecek...

Ben yukarıda anlattığım gibi yapabiliyorum. Fakat ellibin/yüzellibin kayıt olduğunda çok yavaş ilerliyor.
Daha hızlı bir yol varmıdır?
 

Ekli dosyalar

çok karışık anlatmış olabilirim gerçekten.
Amacım Sayfa1deki kayıtları Maddelere göre A-B-C sayfalarına dağıtmak.
Örneğin; 2. satırdaki tarih belirtilecek iki tarih arasında ise;
Madde 1' sütunundaki hücreye bakacak. Hücre değeri örneğin A ise kaydı A satırına aktaracak. Sonra Madde2 sütununa bakacak. Hücre B ise Bsayfasına, A ise A sayfasına aktaracak. Son maddeye göre bu bu şekilde devam edecek. Ardından 3. satıra geçilip aynı döngü devam edilecek.

Sayfalara aktarma ise A-B-C sayfalarına bakılırsa çok kolay anlaşılabiliniyor. Başlıklar olduğu gibi kopyalanıyor. Sonta Madde sütun başlarındaki Kod(T-Z-Q) aktarılıyor, sonra ise madde yanlarındaki açıklama ve bilgiler...
 

Ekli dosyalar

  • aktar.jpg
    aktar.jpg
    97.4 KB · Görüntüleme: 29
Son düzenleme:
Gerçekten anlatamıyorsunuz.
1. 2. satır da tarih yok 3. sütunda var.
ayrıca madde ayrımı var mı yoksa hepsi üst üste mi aktarılacak.
Bilgileriniz gerçekten çok kısıtlı bu şartlarda size yardım edemem
 
kusura bakmayın, kayıtların başladığı 3.satırdan başlanması gerekiyor makronun incelemeye.
Madde ayrımından ne demek istediğinizi anlamadım.
Resimdede görüldüğü gibi önce F3'teki koda bakılması lazım. O hücrenin değeri A ise yeşil olarak işaretlediklerim A sayfasına aktarılacak. resmin en altında nasıl aktarılacağı ile ilgili örnek hücreleri kopyaladım. Sonra makro hemen J3 hücresini kontrol edecek. sonra N3. N3 mesela yine A. Dolayısıyla yine A3:E3 aralığı ile birlikte N1 ve O3:Q3 aralığı A sayfasına aktarılması gerekiyor...
 
peki siz 1. maddeyi açıklamışsınız güzel
O sırayı anlatsanız daha makbule geçer diye düşünüyorum
Mesela
2. Madde'nin ilk sütununda B yazıyor bu B sayfasına mı gidecek böyle mi anlamalıyım
 
evet B sayfasına gidecek.
A3:E3 arası, J1 ve K3:M3 arası B sayfasına aktarılacak.
Hem B sayfasında ilgili kaydıörnek olsun diye aktarmıştım. Oradanda kontrol edebilirsiniz...
 
evet B sayfasına gidecek.
A3:E3 arası, J1 ve K3:M3 arası B sayfasına aktarılacak.
Hem B sayfasında ilgili kaydıörnek olsun diye aktarmıştım. Oradanda kontrol edebilirsiniz...

Burada anlaştık.
Şimdi diğer sorularıma geçeyin. İki tarih arası demişsiniz bunları nerde belirleyeceksiniz_?
Yoksa otomatik mi çıksın siz girin oda o listeyi düzenlesin bunu mu istersiniz_?
Diğer sorum diğer sayfadaki bilgiler her aktarım da silinecek yerlerine yenilere gelecek değil mi_?
 
userformdaki textbox1 ve textbox2'de tutulabilinir tarihler...
buraya kullanıcı manuel girişleri yapıp Tamam tuşuna basar ve makro çalışır...
Evet her aktarımda önceki sayfalar silinmesi gerekiyor...
 
userformdaki textbox1 ve textbox2'de tutulabilinir tarihler...
buraya kullanıcı manuel girişleri yapıp Tamam tuşuna basar ve makro çalışır...
Evet her aktarımda önceki sayfalar silinmesi gerekiyor...

Dosyanızda userform yok ekleyin ve dosyanızı güncelleştirip 2003 formatında eklerseniz yardımcı olmaya çalışırım
 

Merhaba
Userform'un kod bölümüne
Kod:
Option Explicit
Private Sub CommandButton1_Click()
Dim ts, kaplan, trabzonspor, hamsi As Date
Dim asi
Set asi = Sheets("Sayfa1")
trabzonspor = MsgBox(CDate(TextBox1) & " İle " & CDate(TextBox2) & vbLf _
& "Arasındaki Verileri Aktarıyorum", vbYesNo, "Onay")
If trabzonspor = vbNo Then Exit Sub
Application.ScreenUpdating = False
hamsi = Time
Sheets("A").Range("A2:J" & Rows.Count).ClearContents
Sheets("B").Range("A2:J" & Rows.Count).ClearContents
Sheets("C").Range("A2:J" & Rows.Count).ClearContents
For trabzonspor = 6 To asi.Cells(1, Columns.Count).End(xlToLeft).Column
If asi.Cells(1, trabzonspor) <> Empty Then
For ts = 3 To asi.Cells(Rows.Count, "C").End(xlUp).Row
If asi.Cells(ts, "C") >= CDate(TextBox1) And _
asi.Cells(ts, "C") <= CDate(TextBox2) Then
kaplan = Sheets(asi.Cells(ts, trabzonspor).Text).Range("A" & Rows.Count).End(xlUp).Row
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "A") = _
asi.Cells(ts, "A")
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "B") = _
asi.Cells(ts, "B")
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "C") = _
asi.Cells(ts, "C")
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "D") = _
asi.Cells(ts, "D")
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "E") = _
asi.Cells(ts, "E")
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "F") = _
asi.Cells(1, trabzonspor)
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "G") = _
asi.Cells(2, trabzonspor)
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "H") = _
asi.Cells(ts, trabzonspor + 1)
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "I") = _
asi.Cells(ts, trabzonspor + 2)
Sheets(asi.Cells(ts, trabzonspor).Text).Cells(kaplan + 1, "J") = _
asi.Cells(ts, trabzonspor + 3)
End If
Next
End If
Next
Application.ScreenUpdating = True
MsgBox Format(hamsi - Time, "hh:mm:ss") & " Sürede" & vbLf _
& CDate(TextBox1) & " İle " & CDate(TextBox2) & vbLf _
& "Arasındaki Verileri Aktardım", , "Bitiş"
End Sub
Bu kodu kopyalayın ve deneyin.
 
yaptığınız çözümü denemek için veri sayısını 3000 satıra kadar arttırdım...
Yaklaşık 12 saniye sürüyor verilerin ayrıştırması...
Sizin çözümde bir sutun bittikçe diğer sütuna geçiliyor.
Sizin çözümünde ben önce bir kere tarih kontrolü yaptırıp, satırdaki tüm sutunları dolaştırdım ama fazla zaman kazanamadım...

bendeki çözüm biraz daha uzun ama sadece 3 saniye sürüyor...
kodları ekliyorum. Bu çözüm üzerinden gidip biraz daha kısaltabilirmiyim acaba..
Combobox3 en kısa çözüm...
 

Ekli dosyalar

Arkadaşlar; yıllık gelen giden defter oluşturmak istiyoruz.Bilgilerin sayfalara desimal ve katagorisine göre dağılmasını arzu ediyoruz. Örnek dosyaları inceledim ancak makro ve kodlardan anlamadığım için sizler yardımcı olabilirmisiniz?
Şimdiden Teşekkürler.
 

Ekli dosyalar

Yukarıdaki mesajımda ve gönderdiğim ek dosya belirttiğim konularda yardımcı olacak arkadaşlara şimdiden teşekkürler.
 
Arkadaşlar Formdaki bilgileri ilgili sayfaya aktarımı konusunda örnekleri inceledim.Onlar tek kritere göre aktarımlar benim arzu ettiğim 2 kritere göre aktarım yapmak yardımcı olursanız sevinirim. Dosyam 15 mesajda
 
Bu konuda fikri olan arkadaş yokmu?
 
Mrb,
Arkadaşlar formdaki nerdeyse bütün örnekleri inceledim.Yapılan veri dağıtımları tek şarta göre ve aynı formatta aktarılmış.Bu biraz değişik Veri aktarımı yerinin formatı farklı üstatlardan biri el atarsa çok minnettar kalacağım.
Teşekkürler.
 
Geri
Üst