İç İçe For Next Döngüsü

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
46
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
01-09-2028
Merhabalar,
Resimde görüldüğü gibi Sayfa1 de ETÜT alan öğrenciler E kolonunda 1 numara ile tanımlanmış. Bunları Sayfa2'ye For Next döngüsü ile aşağıdaki kodu kullanarak almaya çalışıyorum
239760

Kod:
Private Sub CommandButton2_Click()

Range("C5:F1000").ClearContents
Dim i As Integer
Dim x As Integer
Dim y As Integer
x = Worksheets("Sayfa1").Range("A1048576").End(xlUp).Row

For i = 2 To x
    For y = 5 To x
If Worksheets("Sayfa1").Range("E" & i).Value = 1 Then

Worksheets("Sayfa2").Range("C" & y).Value = "A1"
Worksheets("Sayfa2").Range("D" & y).Value = Worksheets("Sayfa1").Range("B" & i).Value
Worksheets("Sayfa2").Range("E" & y).Value = Worksheets("Sayfa1").Range("C" & i).Value
Worksheets("Sayfa2").Range("F" & y).Value = Worksheets("Sayfa1").Range("D" & i).Value

End If
i = i + 1
Next y

Next i

End Sub
Ancak E kolonunda 0 denk geldiğinde i değişkeni sabit kalırken y değişkeni arttığı için resimde görüldüğü gibi Sayfa2'deki çıktı da boşluklar oluşuyor.
Bunu nasıl engelleyebilirim acaba?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Kodları aşağıdakiyle değiştirin.
Kod içinde bir açıklama yaptım. Dikkat edersiniz.
C++:
Private Sub CommandButton2_Click()
    Dim i As Integer
    Dim x As Integer
    Dim y As Integer
    Range("C5:F1000").ClearContents
    x = Worksheets("Sayfa1").Range("A1048576").End(xlUp).Row
    y = 5   'Resimde 5.satırdan başlıyordu. Farklı bir satırdan başlasın diyorsanız değiştirirsiniz
    For i = 2 To x
        If Worksheets("Sayfa1").Range("E" & i).Value = 1 Then
            Worksheets("Sayfa2").Range("C" & y).Value = "A1"
            Worksheets("Sayfa2").Range("D" & y).Value = Worksheets("Sayfa1").Range("B" & i).Value
            Worksheets("Sayfa2").Range("E" & y).Value = Worksheets("Sayfa1").Range("C" & i).Value
            Worksheets("Sayfa2").Range("F" & y).Value = Worksheets("Sayfa1").Range("D" & i).Value
            y = y + 1
        End If
    Next i
End Sub
 

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
46
Excel Vers. ve Dili
Office 365
Altın Üyelik Bitiş Tarihi
01-09-2028
Ömer Bey, çok teşekkür ederim.
Ellerinize, emeğinize sağlık.
İyi Akşamlar..
 
Üst