• 06-07-2023, 09:54:10
    #1
    Merhabalar,

    Aşağıdaki gibi bir kod parçaçığı oluşturduk. Birden fazla döngüyü iç içe kullanamadık. Bu kodu döngülerle daha da kısaltıp uzatabilir miyiz? Şimdiden teşekkür ediyorum.

    Cells(100'e kadar gidiyor)
    Cells(kisi,sayac+500'e kadar gidiyor)

    Sub yaz()
    
    Dim sayac As Integer
    Dim kisi As Integer
    
    kisi = 14
    
    For sayac = 2 To 8
    
    Cells(21, sayac) = Cells(kisi, sayac)
    Cells(22, sayac) = Cells(kisi, sayac + 7)
    Cells(23, sayac) = Cells(kisi, sayac + 14)
    Cells(24, sayac) = Cells(kisi, sayac + 21)
    Cells(25, sayac) = Cells(kisi, sayac + 28)
    Cells(26, sayac) = Cells(kisi, sayac + 35)
    Cells(27, sayac) = Cells(kisi, sayac + 42)
    Cells(28, sayac) = Cells(kisi, sayac + 49)
    Cells(29, sayac) = Cells(kisi, sayac + 56)
    Cells(30, sayac) = Cells(kisi, sayac + 63)
    Cells(31, sayac) = Cells(kisi, sayac + 70)
    Cells(32, sayac) = Cells(kisi, sayac + 77)
    Cells(33, sayac) = Cells(kisi, sayac + 84)
    Cells(34, sayac) = Cells(kisi, sayac + 91)
    Cells(35, sayac) = Cells(kisi, sayac + 98)
    Cells(36, sayac) = Cells(kisi, sayac + 105)
    Cells(37, sayac) = Cells(kisi, sayac + 112)
    Cells(38, sayac) = Cells(kisi, sayac + 119)
    Cells(39, sayac) = Cells(kisi, sayac + 126)
    Cells(40, sayac) = Cells(kisi, sayac + 133)
    Cells(41, sayac) = Cells(kisi, sayac + 140)
    Cells(42, sayac) = Cells(kisi, sayac + 147)
    Cells(43, sayac) = Cells(kisi, sayac + 154)
    Cells(44, sayac) = Cells(kisi, sayac + 161)
    Cells(45, sayac) = Cells(kisi, sayac + 168)
    
    Next
    
    End Sub
  • 06-07-2023, 10:07:05
    #2
    Merhaba,
    Dosyayı paylaşabilirseniz, bakabilirim.
  • 06-07-2023, 10:34:14
    #3
    ChatGPT ye sordum şöyle cevap verdi.

    Kodunuzu daha kısa hale getirebiliriz. İç içe döngüler yerine bir döngü kullanarak işlemi gerçekleştirebilir ve kod tekrarını azaltabiliriz. Aşağıda, kodu daha da kısaltan bir örneği bulabilirsiniz:

    Sub yaz()

    Dim sayac As Integer
    Dim kisi As Integer
    Dim offset As Integer

    kisi = 14

    For sayac = 2 To 8

    offset = 0

    For i = 21 To 45 Step 1

    Cells(i, sayac) = Cells(kisi, sayac + offset)
    offset = offset + 7

    Next i

    Next sayac

    End Sub

    Bu örnekte, iç içe geçmiş döngülerin yerine tek bir döngü kullanılmıştır. İçteki offset değişkeni, hücrelere değer atamak için kullanılan sütun ofsetini temsil etmektedir. Her döngü adımında offset değeri 7 artırılarak, ilgili hücrenin değeri alınmaktadır. Bu sayede, kodu daha kısa ve daha okunabilir hale getirilmiştir.
  • 06-07-2023, 10:42:08
    #4
    serkanhzl adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    Dosyayı paylaşabilirseniz, bakabilirim.
    Hocam dosyayı paylaşıyordum fakat diğer hocamın gönderdiği kodu ekledim ve çalıştı. Bu yüzden gerek kalmadı. İlginiz için teşekkürler
  • 06-07-2023, 10:44:23
    #5
    AliYucel adlı üyeden alıntı: mesajı görüntüle
    ChatGPT ye sordum şöyle cevap verdi.

    Kodunuzu daha kısa hale getirebiliriz. İç içe döngüler yerine bir döngü kullanarak işlemi gerçekleştirebilir ve kod tekrarını azaltabiliriz. Aşağıda, kodu daha da kısaltan bir örneği bulabilirsiniz:

    Sub yaz()

    Dim sayac As Integer
    Dim kisi As Integer
    Dim offset As Integer

    kisi = 14

    For sayac = 2 To 8

    offset = 0

    For i = 21 To 45 Step 1

    Cells(i, sayac) = Cells(kisi, sayac + offset)
    offset = offset + 7

    Next i

    Next sayac

    End Sub

    Bu örnekte, iç içe geçmiş döngülerin yerine tek bir döngü kullanılmıştır. İçteki offset değişkeni, hücrelere değer atamak için kullanılan sütun ofsetini temsil etmektedir. Her döngü adımında offset değeri 7 artırılarak, ilgili hücrenin değeri alınmaktadır. Bu sayede, kodu daha kısa ve daha okunabilir hale getirilmiştir.
    Önce size sonra ChatGPT'ye teşekkür ediyorum hocam. Hatasız bir şekilde çalışıyor.