Makro Düşeyara Sorunu

Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Merhabalar ektedeki dosyada makro ile düşeyara yapmak istiyorum. Makro uyguladım sayfa1'e sayfa 2'deki barkodları karşılaştırarak satış fiyatlarını getiriyor. Fakat sorun şuki hem yavaş hemde sayfa1 satırım 17000 bitiyor makro çalıştırdıgımda 48000 kadar düşeyara yapıyor yardımlarınızı bekliyorum iyi günler dilerim. Dosyanın boyutu fazla oldugu için upload sitesine yükledim bilginize

Dosya İndirmek İçin Tıklayın
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Sayfa1 deki fazla-boş satırları silin.
Boş satırları silince 9 saniye sürüyor.
Silmeyince 14 saniye sürüyor.
Gayet makul bence sorun yok.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Merhaba.

Sayfa1 deki fazla-boş satırları silin.
Boş satırları silince 9 saniye sürüyor.
Silmeyince 14 saniye sürüyor.
Gayet makul bence sorun yok.
Sqlden veri çektiğim için satırlar çoğalabiliyor oyuzden hocam
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Bundan daha hızlısını bulacağınızı sanmıyorum.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub Worksheet_Activate()
    
    Dim data As Variant, lst As Variant, lst2 As Variant, son&, i&

    Sheets("Sayfa1").Range("C2:G" & Rows.Count).ClearContents
    son = Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row
    data = Sheets("Sayfa2").Range("A1").CurrentRegion.Value
    lst = Sheets("Sayfa1").Range("A1:A" & son).Value
    lst2 = Sheets("Sayfa1").Range("C1:G" & son).Value
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(data)
            If data(i, 1) <> "" Then
                .Item(data(i, 1)) = i
            End If
        Next i
        For i = 2 To UBound(lst)
            If lst(i, 1) <> "" Then
                If .exists(lst(i, 1)) Then
                    For ii = 3 To 7
                        lst2(i, ii - 2) = data(.Item(lst(i, 1)), ii)
                    Next ii
                End If
            End If
        Next i
    End With
    Sheets("Sayfa1").Range("C1:G" & son).Value = lst2

End Sub
 
Son düzenleme:
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Veysel hocam çok teşekkürler bu daha iyi oldu kullanıcam bunu fakat sayfa 1 filtreme oldugu zaman makro düzgün olmuyor birde size zahmet sqlden veri aldıgım için sağ tıklayım veri yenileme diyorum ozaman veriler sabit kalıyor biliyorsunuzki yenile yaptıgım zaman satırlarda oynama olabiliyor bunun için nasıl çözüm olabilir
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Autofilter iptali için kodların başına ekleyin.
Kod:
    With ActiveSheet.ListObjects("Tablo_DışVeri_13")
        If .ShowAutoFilter Then
            .Range.AutoFilter
        End If
    End With
Sıralama için yenileme sonrasında makronuzu tekrar çalıştıracaksınız.
 
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
22-11-2022
Çok teşekkürler ellerinize sağlık iyi akşamlar
 
Üst