• DİKKAT

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

For-Next ve For Each-Next komutlarının çalışma mantığı nedir?

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,420
Excel Vers. ve Dili
excel 2010
merhaba
For-Next döngüsü ile For Each-Next döngüsü arasında ne gibi bir fark vardır?
For Each hucre In Range("K15:K99") komut satırını
For-Next şekline nasıl dönüştürebilirim?
daha doğrusu, düngü aralığını K sütunda son dolu K hücresi için nasıl sınırlandırabilirim?
ya da sadece dolu K hücrelerini dikkate alması sağlanabilir mi?

not: K15:K99 aralığında işlem yapıyorum ama bu aralıkta birkaç hücrede veri var, mesela K25, K35, K45 dolu diğerleri boş olabilir.
 
Son düzenleme:
For i = 15 To [k65536].End(3).Row
Cells(i,"k").Value= i
Next i

olarak deneyiniz.

For Each genelde belli bir nesne topluluğunda kullanılır.

Örneğin

For Each say In Worksheets
Msgbox say.Name
Next

Veya,

Sub Button1_Click()
i = 14
For Each alan In Range("k15:k" & [k65536].End(3).Row)
i = i + 1
Cells(i, "a").Value = alan.Value
Next
End Sub
 
Son düzenleme:
merhaba
syn Ripek hemen deneyeceğim, ilginize teşekkürler.
 
merhaba
syn Ripek'in aşağıdaki kodları işe yaradı ancak küçük bir sorun var.
Sub Button1_Click()
i = 14
For Each alan In Range("k15:k" & [k65536].End(3).Row)
i = i + 1
Cells(i, "a").Value = alan.Value
Next
End Sub


tarih = hucre.Value
hucre.Offset(0, 2).Value = ""
gibi bir komut satırım var. ilk halinde işlem yapmadan önce
hucre.Offset(0, 2).Value = "" ile 2 sütun sonrasındaki hücre değerini sildirip K hücresindeki şart sağlandığında yeni değer ataması yapılıyordu. yeni durumda 2 sütun sonrasını sildiremiyorum. daha doğrusu K(i) hücresi boş ise diğer hücreyi doğal olarak göremiyor. (ya da ben gösteremiyorum)

benim asıl sorunum, K15:K99 aralığında işlem yaptırdığımda makine çok yavaşlıyor, hızlanması için tüm K(i) hücrelerine bakmasın, K(i) dolu ise çalışsın.

not: örnek dosya ekleyemiyorum. mevcut dosya çok büyük ve çok karışık...
 
Sub Button1_Click()
i = 14
For Each alan In Range("k15:k" & [k65536].End(3).Row)
i = i + 1
If alan.Value=2 And alan.Value<>""Then 'Buradaki &#351;art&#305; kendinize g&#246;re d&#252;zenleyiniz.
tarih=alan.value
Cells(i, "m").Value = alan.Value
End If
Next
End Sub


olarak deneyiniz.
 
merhaba
syn Ripek, ben bir &#231;&#246;z&#252;m bulmu&#351;tum, ama sizin kodlar&#305; denemek daha do&#287;ru olur san&#305;r&#305;m.
 
Geri
Üst