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,421
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:
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
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:

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
syn Ripek hemen deneyeceğim, ilginize teşekkürler.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
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...
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
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.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
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.
 
Üst