Datada daha hızlı bilgi arama

Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Aşağıdaki Prosedürde yapılan 30000 satırlık bir datada bilgi arama faaliyetini daha hızlı yapmak için nasıl bir uygulama yapılmalı sizce???

Private Sub Bugün_Click()
On Error Resume Next
Set Data = Worksheets("Data")
DT = WorksheetFunction.CountA(Sheets("Data").Range("B1:B30000"))
ListBox1.RowSource = "Data!$A$2:$C$" & DT
TMac = DT
Hafta = Data.Range("Z" & TMac).Value
For j = TMac To 2 Step -1
If CInt(Data.Range("Z" & j).Value) = CInt(Hafta) And Data.Range("W" & j).Value = " " Then
ilk = j
Else
SMac = ilk
Exit For
End If
Next j
ListBox1.ListIndex = SMac - 2
SpinButton1.Value = SMac
End Sub
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Döngü yerine excelin ara-bul (Find) işlevini kullanabileceğinizi düşünüyorum; ancak örnek dosyanızı eklerseniz daha net bir cevap verebiliriz veya farklı bir yol gösterebiliriz.
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sayın Mesleki, ilginize teşekkürler...

Örnek bir dosya hazırladım bilgilerinize sunuyorum. Düşünün ki bu kayıtlar 20 binler civarında ama ana şekliyle uygulama örneğe benziyor. İki kriterli bir arama olduğu için Find komutu ile beceremedim. yardım ederseniz sevinirim.

Sevgiler...
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Yardımlarınız için çok teşekkürler. Uğraşmışsınız ve güzel bir çalışma olmuş. Elinize sağlık.
Ama sanırım ben yanlış aksettirdim isteğimi. Ben en son kayıttan yukarıya doğru ders planına göre bu hafta gelecekleri tespit etmek için, sondan başlayarak gelen son boş kayıdı bulmak istiyorum. Oradan başlayıp aşağı doğru gelenleri işlemek için. Örneğimde de bu hafta gelecekleri karşılarında boş yer bırakıp öyle göndermiştim.

Yani aslında isteğim, For... next döngüsü dışında en son yapılan kayıdı bulamama yarayacak daha hızlı bir döngü varmı onu öğrenmek istedim. Örneğin With... End with gibi ve find komutunun boşluk aramada kullanılması gibi...
 

isfa5878

Banned
Katılım
15 Kasım 2007
Mesajlar
117
Excel Vers. ve Dili
excel 2003
Private Sub CommandButton2_Click()
Range("f1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select

End Sub
 
Katılım
16 Kasım 2007
Mesajlar
700
Excel Vers. ve Dili
Office 2003 - Tr
Sevgili İsfa5878 kardeşim,

Bugün biliyorsun Pazar sendromu yaşıyoruz (Yani gezme sendromu) her çalışan gibi bu nedenle bilgisayarımı yeni açtım. Ve bu yüzden teşekkür etmek için biraz geç kaldım kusura bakma ve çok teşekkürler.

İşime yarayacak ve beni birçok satır külfetinden kurtaracak. Eeee akıl akıldan her zaman üstündür. Bu arada Silahlı Kuvvetlerde ilk kurra da Sivası çekmiştim. Ve o günlerimi hala unutamam. Tekrar teşekkürler.
 
Üst