• DİKKAT

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

For Döngüsü Hakkında..

Katılım
9 Haziran 2019
Mesajlar
42
Excel Vers. ve Dili
Microsoft Excel 2010 - Türkçe
Sorumu şu şekilde düzenliyorum.
For a = 1 to 9
Cells(1,1) = a
For b = 1 to 9
Cells(1,2) = b
For c = 1 to 9
Cells(1,3) = c
Next c
Next b
Next a

Şimdi burda rakamlar birbirine eşit olduğu zaman bir sonraki döngüye geçmeden davam etmesini istiyorum. Yani
a = 1 b = 1 (b yi artir c ye geçme)
a = 1 b = 2 c = 1 (c yi artir)
a = 1 b = 2 c = 2 (c yi yine artir)

Kisacasi nasil bir bir programa girerken sifre istiyor sifre yanlişsa diger döngülere gecmeden sifre istemeye devam ediyor sifre dogruysa diger döngülere geciyor onun gibi..
 
Son düzenleme:
Merhaba.

Gerçek anlamda ne yapmak istediğinizi söylerseniz daha iyi olur. Bu şekilde farazi bir soruya verilen cevap hiçbir zaman doğru olmayacaktır.

Sorunuzu örnek bir dosya ile pekiştirirseniz daha kısa sürede ve iyi bir cevap alırsınız.
 
Merhaba.

Gerçek anlamda ne yapmak istediğinizi söylerseniz daha iyi olur. Bu şekilde farazi bir soruya verilen cevap hiçbir zaman doğru olmayacaktır.

Sorunuzu örnek bir dosya ile pekiştirirseniz daha kısa sürede ve iyi bir cevap alırsınız.
Tekrar bakabilir misiniz rica etsem
 
Sorunuzu açıkça yazmadığınız için farazi soru her zaman olduğu gibi alakasız-gereksiz oluyor.

Ben size bir tane döngü yazıyorum buna bakarak mantık yürütüp yapmak istediğinizi yapabilirsiniz.

Aşağıdaki kodlar A1 hücresine sıra ile rakamlar yazar. Eğer A1'e 4 yazmışsam yeni bir yakam yazmayı durdurur ve mesajla A1 de 4 yazdığını söyler.
İşlem bittiğinde de yine mesaj verir.

Kod:
Sub test()
    Dim a As Integer
    For a = 1 To 9
        Cells(1, 1) = a
        If Cells(1, 1) = 4 Then
            MsgBox "'A1' hücresinde '4' yazıyor."
            Exit For
        End If
    Next a
    MsgBox "İşlem tamamlandı."
End Sub

Bu işlemin aynısını yapan bir başka kod.

Kod:
Sub test()
    Dim a As Integer
    Do Until Cells(1, 1) = 4
        a = 1 + a
        Cells(1, 1) = a
    Loop
    MsgBox "'A1' hücresinde '4' yazıyor."
    MsgBox "İşlem tamamlandı."
End Sub
 
Sorunuzu açıkça yazmadığınız için farazi soru her zaman olduğu gibi alakasız-gereksiz oluyor.

Ben size bir tane döngü yazıyorum buna bakarak mantık yürütüp yapmak istediğinizi yapabilirsiniz.

Aşağıdaki kodlar A1 hücresine sıra ile rakamlar yazar. Eğer A1'e 4 yazmışsam yeni bir yakam yazmayı durdurur ve mesajla A1 de 4 yazdığını söyler.
İşlem bittiğinde de yine mesaj verir.

Kod:
Sub test()
    Dim a As Integer
    For a = 1 To 9
        Cells(1, 1) = a
        If Cells(1, 1) = 4 Then
            MsgBox "'A1' hücresinde '4' yazıyor."
            Exit For
        End If
    Next a
    MsgBox "İşlem tamamlandı."
End Sub

Bu işlemin aynısını yapan bir başka kod.

Kod:
Sub test()
    Dim a As Integer
    Do Until Cells(1, 1) = 4
        a = 1 + a
        Cells(1, 1) = a
    Loop
    MsgBox "'A1' hücresinde '4' yazıyor."
    MsgBox "İşlem tamamlandı."
End Sub
Kolay gelsin sorumun gereksiz oldugunu düsünmüyorum benim icin gercekten cok önemli bi durum. Fakat takildigim yeri anlatamamis olabilirim. Ugrasiniz icin cok tesekkür ederim.
 
Yanlış anlaşıldım. Elbette sizin için vereceğimiz cevap değerli, aradığınız sonuç değerli.

Şunu anlamanızı istiyorum. Bize sorduğunuz farazi bir soru var o soruyu sadece şu yöntem ile çözün diyorsunuz.
Bu doğru bir soru sorma yöntemi değil.

Siz cevabı nasıl vereceğimizi söylemeyin, sorunuzu sorun. Biz de cevabın hangi yöntem ile daha iyi çözüm bulacağına karar verelim.
Yani sizin ne yapmak istediğinizi bilmemiz gerekiyor, nasıl yapılacağı konusuna biz karar vereceğiz.

Hem bu yöntem ile siz de biz de değerli vaktimizi boşa harcamamış oluruz.

Tekrar söylüyorum, lütfen gerçek sorunuzu sorun.
Yok eğer döngüler ve mantıksal sınamalar hakkında bilgi sahibi olmak istiyorsanız sizi dershane bölümündeki konulara yönlendirelim.
 
Kolay gelsin sorumun gereksiz oldugunu düsünmüyorum benim icin gercekten cok önemli bi durum. Fakat takildigim yeri anlatamamis olabilirim. Ugrasiniz icin cok tesekkür ederim.
Üzerinde ugrastigim sey aslinda a1 den baslayarak a10 a kadar bu hücrelerde 1 den 50 ye kadar tekrar eden rakamlar yazdirarak tüm sayi kombinasyonlarini denemek. Bu islem belki saatler sürecek. Bu kombinasyonlarda hic bir rakam birbiriyle ayni olmamasi gerektigi icin islem süresini kisaltmak icin tekrar eden rakami atlamak amacim bu.
 
Hakl
Yanlış anlaşıldım. Elbette sizin için vereceğimiz cevap değerli, aradığınız sonuç değerli.

Şunu anlamanızı istiyorum. Bize sorduğunuz farazi bir soru var o soruyu sadece şu yöntem ile çözün diyorsunuz.
Bu doğru bir soru sorma yöntemi değil.

Siz cevabı nasıl vereceğimizi söylemeyin, sorunuzu sorun. Biz de cevabın hangi yöntem ile daha iyi çözüm bulacağına karar verelim.
Yani sizin ne yapmak istediğinizi bilmemiz gerekiyor, nasıl yapılacağı konusuna biz karar vereceğiz.

Hem bu yöntem ile siz de biz de değerli vaktimizi boşa harcamamış oluruz.

Tekrar söylüyorum, lütfen gerçek sorunuzu sorun.
Yok eğer döngüler ve mantıksal sınamalar hakkında bilgi sahibi olmak istiyorsanız sizi dershane bölümündeki konulara yönlendirelim.
haklisiniz doktor hasta iliskisi gibi beni su ilacla tedavi edin demek olmaz. Sorunumu anlattim yardim ederseniz cok sevinirim. Tekrar kusuruma bakmayin
 
Aşağıdaki kod ile yapılabilir.

Ancak son rakam olarak 4 yazdım tamamlanması 1,5 dakika kadar sürüyor, eğer 5'e kadar olsun isterseniz aşağı yukarı 50 dakika sürecektir.
Eğer 50'ye kadar olsun isterseniz tamamlanması aylar sürecektir.

Kod:
Sub Test()
    Dim bak As Integer
    Dim Sira As Integer
    Dim SonRakam As Long
    Range("A:A").ClearContents
    SonRakam = 4
    Do Until SonRakam * 10 = WorksheetFunction.Sum(Range("A1:A10"))
        DoEvents
        For bak = 1 To SonRakam
            Cells(10, 1) = bak
        Next
        For Sira = 9 To 1 Step -1
            If Cells(Sira, 1) = SonRakam Then
                Cells(Sira, 1) = 1
            Else
                Cells(Sira, 1) = Cells(Sira, 1) + 1
                Exit For
            End If
        Next
    Loop
    MsgBox "İşlem tammalandı."
End Sub
 
Geri
Üst