• DİKKAT

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

Makro Düşeyara Sorunu

  • Konbuyu başlatan Konbuyu başlatan mukoli
  • Başlangıç tarihi Başlangıç tarihi
Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
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
 
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.
 
Bundan daha hızlısını bulacağınızı sanmıyorum.
 
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:
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
 
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.
 
Çok teşekkürler ellerinize sağlık iyi akşamlar
 
Geri
Üst