Çözüldü Fazla Veri İçeren Excel Çalışması

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Merhaba;

200.000 satır üzeri veri işlenmiş bir excel sayfasında aynı çalışma kitabı Sayfaları içerisinde "Belirli bir data içerisinde bilgilere ulaşmak istediğim değerin satırlarını hızlı bir şekilde sonuca ulaşmak için nasıl bir kod kullanılmalıdır.

Örnek Olarak: Sayfa1 B Sutundaki datayı Sayfa2 A Sutundaki data ile karşılatırıp B sutundaki veriyi Sayfa1 C sutuna yazması. Excel ektedir.

Konu hakkında yardımlarınız lütfen.
 

Ekli dosyalar

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Bunun birden fazla yolu var. Bana göre en hızlı yolu Sql/Join yani kesişim yöntemidir.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Dosyanızı şimdi inceleme fırsatı bulabildim. Dosyaya bakıldığında tekrar eden malzeme tanımları var. Örneğin, "B01" için "A mı gelecek? "J" mi gelecek? Bu haliyle uygun değil. Tekil olması gerekir. "Malzeme no" bunun için uygun görünüyor ama karşılaştırma yapılacak sütun yok.
 

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Dosyanızı şimdi inceleme fırsatı bulabildim. Dosyaya bakıldığında tekrar eden malzeme tanımları var. Örneğin, "B01" için "A mı gelecek? "J" mi gelecek? Bu haliyle uygun değil. Tekil olması gerekir. "Malzeme no" bunun için uygun görünüyor ama karşılaştırma yapılacak sütun yok.
Zeki Bey haklısınız fark edemedim. Sayfa2 deki bilgiler tekrar eden değil tekildir. Amacım Malzeme No ait Malzeme tanımının Malzeme eklentisi bilgisini Sayfa2 aratıp bulması durumunda Sayfa bire aktarması.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Deneyin...

PHP:
Sub Test()
    Dim cn As Object, rs As Object, t1 As Single, t2 As Single
    
    Set cn = CreateObject("ADODB.Connection")
    
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & ThisWorkbook.FullName & _
            ";Extended Properties=""Excel 12.0;HDR=YES"";"
            
    t1 = Timer
    
    Set rs = cn.Execute( _
    "select a.[Malzeme No], a.[Malzeme Tanımı], b.[Tesis Eklentisi] " & _
    "from [Sayfa1$] as a left join [Sayfa2$] as b " & _
    "on a.[Malzeme Tanımı] = b.[Malzeme Tanımı]")
            
    Sheets("Sayfa1").[a2].CopyFromRecordset rs
            
    t2 = Timer
    
    rs.Close
    
    cn.Close
    
    Set rs = Nothing
    Set cn = Nothing
    
    MsgBox "İşlem süresi : " & Round(t2 - t1, 2) & " saniye", vbInformation
End Sub
 

Ekli dosyalar

gicimi

Altın Üye
Katılım
3 Şubat 2008
Mesajlar
594
Excel Vers. ve Dili
Office 2016 Eng. 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2024
Deneyin...

PHP:
Sub Test()
    Dim cn As Object, rs As Object, t1 As Single, t2 As Single
   
    Set cn = CreateObject("ADODB.Connection")
   
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & ThisWorkbook.FullName & _
            ";Extended Properties=""Excel 12.0;HDR=YES"";"
           
    t1 = Timer
   
    Set rs = cn.Execute( _
    "select a.[Malzeme No], a.[Malzeme Tanımı], b.[Tesis Eklentisi] " & _
    "from [Sayfa1$] as a left join [Sayfa2$] as b " & _
    "on a.[Malzeme Tanımı] = b.[Malzeme Tanımı]")
           
    Sheets("Sayfa1").[a2].CopyFromRecordset rs
           
    t2 = Timer
   
    rs.Close
   
    cn.Close
   
    Set rs = Nothing
    Set cn = Nothing
   
    MsgBox "İşlem süresi : " & Round(t2 - t1, 2) & " saniye", vbInformation
End Sub
Zeki Bey Teşekkür ederim Elinize sağlık.
 
Üst