Hesaplamaları hızlandırma

Katılım
7 Haziran 2007
Mesajlar
81
Excel Vers. ve Dili
2007 Türkçe
Arkadaşlar, aşağıda yazdığımı konuda yardımlarınızı bekliyorum. Şimdiden ilgilenen herkese teşekkür ederi.

Etopla ile bir formül yazdım bu formülü 250000 satır arasında kullanmam gerekiyor.Yazılan formülü daha sonra değer yapıştır olarak kullanmak istiyorum fazla yer kaplamaması için. Kopyala yapıştır yapınca bilgisayar çok geç hesaplıyor. Bunun bir kısa yolu varmı acaba?
Herkese teşekkür ederim.
 
Katılım
13 Aralık 2006
Mesajlar
575
Excel Vers. ve Dili
Office 2010
Excel 2007 kullanıcısı olduğunuz için yardımcı olamayacağım ama profilinizdeki excel vers. dili. kısmının kullanıcı kontrol panelinden Excel 2007 olarak düzeltmenizi tavsiye ederim. Kolay gelsin...
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
#Revizyon: Kontrol sütunu ilave edildi..

Merhaba,

Bence binlerce satırlık formül kullanmayın. Formüllerinizin tamamını sildim ve bir butona ADO metodunu uyarladım. Dosya açılışındaki hızı farkedeceksiniz.

Not: Bu prosedur Excel 2007 öncesi versiyonlar içindir. 2007 için küçük bir değişklik gerekebilir.

Kod:
Public Sub ADO_Sum()
Dim cn As Object, rs As Object

Set cn = CreateObject("ADODB.Connection")

cn.Open _
    "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _
        ThisWorkbook.FullName
        
Set rs = cn.Execute( _
"SELECT [F No], Sum([Borç TL]) As Borc, Sum([Alacak TL]) As Alacak, " & _
        "Round(Borc-Alacak) As Kontrol " & _
    "FROM [fisler$] " & _
    "GROUP BY [F No]")
    
Sheets("fis kontrol").Range("B2").CopyFromRecordset rs

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing
End Sub
 

Ekli dosyalar

Katılım
7 Haziran 2007
Mesajlar
81
Excel Vers. ve Dili
2007 Türkçe
Teşekkür

Zeki bey, gerçekten çok teşekkür ederim.

Peki 2007 versiyonlar için nasıl bir değişiklik gerekiyor.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Zeki bey, gerçekten çok teşekkür ederim.

Peki 2007 versiyonlar için nasıl bir değişiklik gerekiyor.
Proseduru aşağıdaki ile değiştirin...

Kod:
Public Sub ADO_Sum()
Dim cn As Object, rs As Object

Set cn = CreateObject("ADODB.Connection")

[COLOR=Blue]cn.Open _
    "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & ThisWorkbook.FullName & _
    ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
        [/COLOR]
Set rs = cn.Execute( _
"SELECT [F No], Sum([Borç TL]) As Borc, Sum([Alacak TL]) As Alacak " & _
    "FROM [fisler$] " & _
    "GROUP BY [F No]")
    
Sheets("fis kontrol").Range("B2").CopyFromRecordset rs

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing
End Sub
 
Üst