Son satır

Katılım
22 Eylül 2007
Mesajlar
247
Excel Vers. ve Dili
Türkçe 2016
Altın Üyelik Bitiş Tarihi
29-08-2024
iyi günler


I Kolonunda ("I6:I200") arası boş hücrelere 0 Koymakta

Sizlerden ricam ı kolonunda son satıra kadar o koyması

I Kolonunda ("I6:I200") arası boş hücrelere 0 Koymakta

Sizlerden ricam ı kolonunda son satıra kadar o koyması


Sub AA()

Sheets("dd").Select
For Each x In Range("I6:I200").Cells
If x.Value = "" Then
x.Value = 0
End If
Next x
End Sub
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,481
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Kod:
Sub AA()   

Dim ws As Worksheet   
Dim lastRow As Long   
Dim x As Range   

Set ws = Sheets("dd")       

' Son satırı bul 
 lastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row       
 ' I sütunundaki boş hücrelere 0 koy   
For Each x In ws.Range("I6:I" & lastRow).Cells       
 If x.Value = "" Then           
x.Value = 0       

End If   
Next x
End Sub
 
Katılım
22 Eylül 2007
Mesajlar
247
Excel Vers. ve Dili
Türkçe 2016
Altın Üyelik Bitiş Tarihi
29-08-2024
teşekkür ederim satır sayısı 40000 olunca 4 dakika sürdü daha hızlı yapabileçek kod varmı
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,481
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
O degil de dikkat edilmesi gereken konu eger print almaya kalkarsanız 1milyon50 satır basılmadan durmaz ya da interrupt ederek durdurmak gerekir. Sayfadaki sutunu sıfırla tamamen doldurma amacınız ne bilmiyorum ama bir kod içinde gerekli oldugu zaman sıfır atarsanız print alırken anlattıgım sorun gelişmezdi.


Kod:
Sub AA()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim x As Range
    Dim cellValues As Variant
    Dim i As Long
    Dim startTime As Double
    Dim elapsedTime As Double

    Set ws = Sheets("dd")
    
    ' Ekran güncellemelerini kapat
    Application.ScreenUpdating = False
    ' Hesaplamaları durdur
    Application.Calculation = xlCalculationManual

    ' Başlangıç zamanını al
    startTime = Timer

    ' Son satırı bul
    lastRow = ws.Cells(ws.Rows.Count, "I").End(xlUp).Row
    
    ' I sütunundaki değerleri diziye al
    cellValues = ws.Range("I6:I" & lastRow).Value
    
    ' Boş hücrelere 0 koy
    For i = 1 To UBound(cellValues, 1)
        If cellValues(i, 1) = "" Then
            cellValues(i, 1) = 0
        End If
    Next i
    
    ' Değerleri geri yaz
    ws.Range("I6:I" & lastRow).Value = cellValues

    ' Ekran güncellemelerini aç
    Application.ScreenUpdating = True
    ' Hesaplamaları eski haline getir
    Application.Calculation = xlCalculationAutomatic

    ' Dosyayı kaydet
    ThisWorkbook.Save

    ' Geçen süreyi hesapla
    elapsedTime = Timer - startTime
    
    ' Zamanı MsgBox ile göster
    MsgBox "İşlem tamamlandı! Geçen süre: " & Format(elapsedTime, "0.00") & " saniye.", vbInformation

End Sub
Bu kod daha hızlı calısabilir ve işlem bittiğinde msgbox ile kullanılan zamanı gösterebilir.
 
Son düzenleme:
Katılım
6 Mart 2024
Mesajlar
102
Excel Vers. ve Dili
Excel 2010 TR & Excel 2016 TR
Merhaba,
Alternatif kodlar
C++:
Sub BulSecDegistir()
    Dim SonSatir As Long
    Sheets("dd").Select
    SonSatir = Cells(Rows.Count, "I").End(xlUp).Row
    Range("I6:I" & SonSatir).Replace What:="", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
 
Katılım
22 Eylül 2007
Mesajlar
247
Excel Vers. ve Dili
Türkçe 2016
Altın Üyelik Bitiş Tarihi
29-08-2024
teşekür ederim elinize saglık
 
Üst