• DİKKAT

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

Excelde Beklemek İstemiyorum

Katılım
21 Temmuz 2006
Mesajlar
322
Arkadaşlar Merhaba,
Bazen 500.000 - 1.000.000 arası datalarda vlookup yapınca çok bekliyorum, acaba aşağıdaki kodu excele yazsam bu işlemleri hızlı bir şekilde yapabilir miyim?
Birde bu kodu yazınca vlookup yaparken başka bir şeye dikkat etmeli miyim?
Saygılarımla.


Sub CalculateSelection()
Application.ScreenUpdating = False ' speed up execution by preventing screen flickering
Selection.Calculate ' calculating selected cells
Application.ScreenUpdating = True ' reverting to default settings
End Sub
 
ScreenUpdating kodu bildiğim kadarıyla Excel işlem yaparken ekranın sabit kalmasını yani her işlemi adım adım göstermemesini sağlıyor. Bu kodu koyarsanız bekleme zamanınızın değişeceğini sanmam. Sadece ekrandaki hareketleri görmezsiniz. 500.000-1.000.000 veri için beklemeniz (bilgisayar performansınıza göre değişir) bence normal.
 
Öncelikle teşekkürler bilgilendirme için,

Peki bu tür vlookup işlemlerini çok sık kullanıyoruz, bu nedenle çok bekliyoruz, acaba excelde bu işlemlerin hızlı yapılabilmesi için bir formül bir macro yok mudur?

Vlookup işlemlerinin hızlı yapılması sadece PC işlemcisine mi bağlıdır acaba?

Syg.
 
Merhaba.

Belgenizde çok sayıda, bir/bir'den fazla sütunda arama/sayma yapan formüller olduğunda
(hele hele TOPLA.ÇARPIM gibi bir/bir'den fazla sütunda koşul kontrolü yaparak sayma/toplama veya
benzer işlem yapan çok sayıda dizi formülü varsa,
kaçınılmaz olarak belgenizde yavaşlama olacaktır.

Sorunuzu gerçek belgenizle aynı yapıda örnek belgeyle desteklerseniz, alternatif çözümler üretilebilir diye düşünüyorum.
.
 
Ömer bey teşekkürler, bilgilendirme için,

ben içeriğinde formül olmadan örneğin sayfa1 500.000 kişi no var sayfa 2 de de 600.000 kişi no var sayfa2 deki kişi no yanındaki bir bilgiyi vlookup ile sayfa1 alma işlemi yapıyorum.

burada adetler genelde yüksek olduğundan çok beklediğim zamanlar oluyor.

amacım sadece bu tür vlookup işleminde excelin hızını nasıl arttırabilirim.

bu işlem ram veya cpu ya bağlı ise excelde birşey yapılmaz ise yapacak birşey yok böyle devam edeceğim.

ilginiz için şimdiden çok çok tşk ler.
 
Arkadaşlar Merhaba,
Bazen 500.000 - 1.000.000 arası datalarda vlookup yapınca çok bekliyorum, acaba aşağıdaki kodu excele yazsam bu işlemleri hızlı bir şekilde yapabilir miyim?
Çok fazla sayıda datalarda en hızlı şekilde sorgulama yapmak istiyorsanız, ADODB bağlantı ile veri çekmenizi öneririm. Sorgu şekli SQL String ile yapılır. Sql sorguları, özellikle veritabanı ağırlıklı string kodlarıdır. Bu sitede ayrı bir kategorisi mevcuttur:http://www.excel.web.tr/f66/
verileriniz için access veya excel dosyasını veritaban olarak kullanabilir, başka bir excel dosyasındanda bu veritabana (sql string) kodlarıyla ulaşıp dilediğiniz verileri çekebilirsiniz.
webde arama yaparsanız daha iyi fikir sahibi olursunuz.
kolay gelsin.
 
Tekrar merhaba. Afaki soruya mecburen burada olduğu gibi afaki cevap yazılıyor.

En önemli yavaşlama nedeni formül yoğunluğu olabilir.

Bunun için FORMÜLLER menüsündeki HESAPLAMA SEÇENEKLERİ kısmından ELLEyi aktif hale getirip,
hesaplamanın yenilenmesi gerektiğinde de bunu OTOMATİK olarak değiştirmek veya
F9 tuşuna basmak hızınızı çok etkileyecektir.
Neticede bir excel belgesinde herhangi bir hücreye (formül olan/olmayan) veri girişi veya
F2 => ENTER işlemi yapıldığında, sayfadaki tüm hesaplamalar yeniden yapılır ve hücreler bir anlamda güncellenir.

Hesaplamanın sadece belli sayfa/alan/hücrelerde yapılması için makro kod da kullanılabilir.

Belirttiğim gibi yeni sorulara gerek kalmaması açısından en iyisi gerçek belgenizle aynı yapıda örnek belge ekleyerek,
belge içerisinde açıklama yazmanız halinde daha hızlı ve alternatif çözüm önerileri gelecektir.
.
 
Ömer bey belirttiğiniz şekilde yaptım f9 bastım, otomatik ve manuel işlemnlerinde fark olmadı dakika tuttum 3,41 sn de yaptı her ikiside

Benim ilk sayfamda 363.000 satır kişi no bilgisi A kolonunda mevcut, sayfa 2 de ise 300.000 kişi no a kolonunda b kolonunda ise tel bilgisi var.

Sayfa 1 deki kişi no yani B2 ye VLOOKUP(A2;Sheet2!A:B;2;0) yazdığımda her seferinde 3,41 sn de işlem bitiyor

Bunu hızlandırmak için birde macroyu denesek nasıl bir macro yazabilirim

Saygılarımla
 
Sayfa1 ve sayfa2 deki verilerinizi access tablosuna aktarsanız, kayıt sayısı milyon bile olsa milisaniyede sonuç alırsınız.

Veri depolamak için excel yanlış bir seçim.
 
Örnek bir excel paylaşabilir misiniz.
Verinizin özelliklerini görmek gerek.
 
Önceki cevaplarımda ısrarla belirttim ancak nafile.

Tabi üyenin kendi tercihidir ama desteğe ihtiyacı olup, destek vermek için cevaplar yazan üyeler de var iken,
örnek belge eklemekten kaçınanları anlayamıyorum doğrusu.
.
 
Önceki cevaplarımda ısrarla belirttim ancak nafile.

Tabi üyenin kendi tercihidir ama desteğe ihtiyacı olup, destek vermek için cevaplar yazan üyeler de var iken,
örnek belge eklemekten kaçınanları anlayamıyorum doğrusu.
.

Örnek belge eklemekten kaçınmak mı?
Örnek belge eklemeye üşenmek mi?
Bilemedim.
 
Önceki cevaplarımda ısrarla belirttim ancak nafile.

Tabi üyenin kendi tercihidir ama desteğe ihtiyacı olup, destek vermek için cevaplar yazan üyeler de var iken,
örnek belge eklemekten kaçınanları anlayamıyorum doğrusu.
.

Ömer bey selamlar,

Altın üyeler eklemediğinde dahada garibime gidiyor.
 
merhaba tekrar

örnek dosya ekledim, sayfa 1 de vlookup yapılacak sayfa 2 den bilgi alacak

burada 1,95 MB sınırı olduğundan küçük data ekledim, normalde benim datam 500.000 satıra kadar çıkıyor bazen

o zaman bu işlem bende 8-10 dk sürüyor

bu vlookup işlemini nasıl hızlandırabiliriz?

syg.
 

Ekli dosyalar

Merhaba,

Tag'daki kodu deneyebilir misiniz.

Kod:
Sub deneme()

     With Application
       .ScreenUpdating = False
       .Calculation = xlCalculationManual
     .EnableEvents = False
     End With
     Zaman = Timer
Range("b:b").Clear

Set con = VBA.CreateObject("adodb.Connection")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select sheet2.telefon from [sheet1$] sheet1 left join [sheet2$] sheet2 on sheet1.[kişi no]=sheet2.[kişi no]"
Set rs = con.Execute(sorgu)

Sayfa1.Range("b2").CopyFromRecordset rs

  With Application
       .ScreenUpdating = True
       .Calculation = xlCalculationAutomatic
      .EnableEvents = True
    End With
    
    MsgBox "Sorgulama işlemi tamamlanmıştır." & Chr(10) & Chr(10) & _
               "İşlem süresi ; " & Format(Timer - Zaman, "0.00")


End Sub
 
Alternatif;
Sayfa1 363000
Sayfa2 300000

Sonuç 5 saniyede

Kod:
Sub FastestVlookup()
    Sheets("Sayfa2").Select
    sayfa2sonsatir = Cells(Rows.Count, "A").End(3).Row
    
    Sheets("Sayfa1").Select
    sayfa1sonsatir = Cells(Rows.Count, "A").End(3).Row

    secim = "B1:B" & sayfa1sonsatir
    secim1 = "B2:B" & sayfa1sonsatir

    Range(secim1).Select
    Selection.ClearContents
    Range("B2").Select
    
    formul = "=IF(VLOOKUP(RC1,Sayfa2!R1C1:R" & sayfa2sonsatir & "C1,1)=RC1,VLOOKUP(RC1,Sayfa2!R1C1:R" & sayfa2sonsatir & "C2,2),""N/A"")"
    With Sayfa1.Range(secim)
        .FormulaR1C1 = formul
        .Value = .Value
    End With
   msgbox("İşlem tamamlandı")
End Sub
 
Son düzenleme:
herkesin eline emeğine sağlık,

çok faydalı oldu yanıtlar ve bilgilendirmeler

tekrar teşekkürler.

syg.
 
Geri
Üst