[Yardım]  Makro Hızlandırma

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Makro Hızlandırma

İleti#1)  cnrtrkylmz » 17 Eyl 2018 13:23

Merhaba , yüklediğim excel dosyasındaki makro çok yüklü veri olduğunda çok ağır çalışıyor. Hızlandırmamız mümkün müdür ?
Yapmak istediğim , bir satırda A , B , C ve D sütunundaki değerler boş ise o satırı sildirmek istiyorum.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
cnrtrkylmz
Yeni Başlamış
 
Kayıt: 14 May 2015 14:36
Meslek: öğrenci
Yaş: 24
İleti: 33
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: bursa/nilüfer

Cevap: Makro Hızlandırma

İleti#2)  C0SeF » 18 Eyl 2018 21:56

Dizi yardımıyla hızlandırabilirsin, başka yolu da vardır elbet ama aşağıdaki kod işini görür.
Excel'de "Sayfa2" adlı yeni sayfa açarsan istediğin verileri Sayfa2 'e aktaracaktır.

Kod: Tümünü seç
Dim stn() As Integer
ReDim stn(1 To 4)

stn(1) = Sayfa1.Range("A65536").End(xlUp).Row
stn(2) = Sayfa1.Range("B65536").End(xlUp).Row
stn(3) = Sayfa1.Range("C65536").End(xlUp).Row
stn(4) = Sayfa1.Range("D65536").End(xlUp).Row

stnt = 0
For i = 1 To 4
    If stnt < stn(i) Then stnt = stn(i)
Next i

Dim dizi1(), dizi2() As Variant
dizi1 = Range(Cells(1, 1), Cells(stnt, 4))
ReDim dizi2(1 To stnt, 1 To 4)
k = 0
For i = 1 To stnt
If dizi1(i, 1) = "" And dizi1(i, 2) = "" And dizi1(i, 3) = "" And dizi1(i, 4) = "" Then
Else
    k = k + 1
    For j = 1 To 4
        dizi2(k, j) = dizi1(i, j)
    Next j
End If
Next i

For j = 1 To 4
    For i = 1 To k
        Sayfa2.Cells(i, j) = dizi2(i, j)
    Next i
Next j
Kullanıcı avatarı
C0SeF
Yeni Başlamış
 
Kayıt: 23 Arl 2016 00:36
Meslek: İnşaat Mühendisi
Yaş: 25
İleti: 28
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Balıkesir

Cevap: Makro Hızlandırma

İleti#3)  elfinito » 19 Eyl 2018 01:54

Merhaba, calculation ve screenupdating kapatmak hız açısından büyük avantaj sağlayacaktır. Aşağıdaki gibi bir örnek ile de deneyebilirsiniz.

Kod: Tümünü seç
Sub silgitsin()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Range("A1", ActiveCell.SpecialCells(xlCellTypeLastCell)).Select
son = Selection.Rows.Count

Range("A1").Select
Range("A1:D" & son).Select

For i = 2 To son
If Sayfa1.Cells(i, 1) = "" And Sayfa1.Cells(i, 2) = "" And Sayfa1.Cells(i, 3) = "" And Sayfa1.Cells(i, 4) = "" Then
Rows(i).Delete
son = son - 1
End If
Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
Kullanıcı avatarı
elfinito
Yeni Başlamış
 
Adı Soyadı:Erhan AKKAYA
Kayıt: 09 Ekm 2011 19:03
İleti: 67
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Cevap: Makro Hızlandırma

İleti#4)  elfinito » 19 Eyl 2018 02:11

elfinito yazdı:Merhaba, calculation ve screenupdating kapatmak hız açısından büyük avantaj sağlayacaktır. Aşağıdaki gibi bir örnek ile de deneyebilirsiniz.

Kod: Tümünü seç
Sub silgitsin()

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Range("A1", ActiveCell.SpecialCells(xlCellTypeLastCell)).Select
son = Selection.Rows.Count

Range("A1").Select
Range("A1:D" & son).Select


For i = 2 To son
If Sayfa1.Cells(i, 1) = "" And Sayfa1.Cells(i, 2) = "" And Sayfa1.Cells(i, 3) = "" And Sayfa1.Cells(i, 4) = "" Then
Rows(i).Delete
son = son - 1
End If
Next i

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub


Yukarıdan aşağı silerken arada bazı satırlar atlanıyor sanırım döngü böyle olursa daha sağlıklı olacak gibi :)

Kod: Tümünü seç
For i = son To 1 Step -1
If Sayfa1.Cells(i, 1) = "" And Sayfa1.Cells(i, 2) = "" And Sayfa1.Cells(i, 3) = "" And Sayfa1.Cells(i, 4) = "" Then
Rows(i).Delete
End If
Next i
Kullanıcı avatarı
elfinito
Yeni Başlamış
 
Adı Soyadı:Erhan AKKAYA
Kayıt: 09 Ekm 2011 19:03
İleti: 67
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Makro Hızlandırma

İleti#5)  cnrtrkylmz » 19 Eyl 2018 15:58

Cevaplarınız için çok teşekkür ederim. İyi günler .
Kullanıcı avatarı
cnrtrkylmz
Yeni Başlamış
 
Kayıt: 14 May 2015 14:36
Meslek: öğrenci
Yaş: 24
İleti: 33
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: bursa/nilüfer


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 2 misafir

Bumerang - Yazarkafe