• DİKKAT

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

boşluksuz liste oluşturma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
18 Mart 2007
Mesajlar
164
Excel Vers. ve Dili
2003 Türkçe
sayın ustalar;

dosyamızın karne sayfasında A34 hücresine bir değer giriyorum.
listem oluşturulurken B40 hücresindeki değer A34 ten küçük ise A17 hücresi B41 değerine eşit olsun ve bu böyle devam etsin...sayfada göreceksiniz...

fonksiyonlarla çözüm üretemedi kimse o yüzden aynı konuyu burayada açıyorum yarın sabah sunumunu yapmam lazım....

makro ile çözülür sanırım yalnız makroyu direk dosyaya yazarsanız ve öğrenci ismi değişince direk çalışmaya başlaması uygun olacaktır..yada daha başka bir çözüm aklınıza gelirse üzerine ekleyin ltf..
 

Ekli dosyalar

  • 4.xlsx
    4.xlsx
    211.1 KB · Görüntüleme: 22
Şu kodları KARNE sayfasının kod kısmına yapıştırın ve A34 hücresine bir değer girip deneyin;

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer, son As Integer
    son = 17
    If Selection.Count > 1 Then Exit Sub
    For i = 40 To 106 Step 5
        If Cells(i, "B") > Target.Value Then
            Cells(son, "A") = Cells(i + 1, "B")
            son = son + 1
        End If
    Next i
    i = Empty: son = Empty
End Sub
 
sayın ustam kodu sayfaya yapıştırdım çalışmasını izledim evet bir liste oluşuyor.fakat kriteri değiştirdiğimde liste kendisini yenilemiyor..makroya kafam basmıyor ama
üniversitede qbasic dersi aldıydım 15 sene önce:D
bu kodda 17 satır bitince işlem sonlanıyor yan sütüna geçirtip yazdırmaya devam edebilirmiyiz ?
birde bu şekilde taramamız gereken 14 alan var kod içine kod nasıl yazabilirim?
kriterle hücre değerleri kodun hangi kısmında kıyaslanıyor onuda anlayamadım..verdiğiniz önerilerle kendimi geliştirmeye çalışacağım....
ilginize teşekkür ederim.
 
Kriteri degistirdiginizde listeyi temizleyip yeni bir liste oluşturmasi için, koddaki şu satırın altına If Selection.Count > 1 Then Exit Sub Range("a17:a34").ClearContents yazabilirsiniz. Bu hucre araligi tam ezberimde değil uygun araligi yazarsiniz.

Geri kalanı için yarın dosyaya bakıp size bir cevap yazarım.
 
Hocam, olayımız: A34 - B40'tan küçükse A17'den itibaren alt alta B41-B46-B51 gibi 5 satır arayla verileri listeleyecek buraya kadar doğru mudur ?

Renkli alanlar (sarı-kırmızı) değişken midir? Şu an 14 renkli bölüm var, bu sayı artabilir mi ?
 

Ekli dosyalar

  • Adsız.jpg
    Adsız.jpg
    96.4 KB · Görüntüleme: 3
doğru değil
olay şu sarı kırmızı tüm bölümler kritere göre kontrol edilip yeşil olan bölüme yazdıracağız.
a34 kriter
b40 küçükse b41 al
c40 küçükse c41 al
...
z40 kadar devam et..(..41 ler boş ise listeye alma)
sonra
b45 z45 arası aynı şekil
b50 z50

bler 5 er artacak şekilde 105e kadar devam edecek
Liste 17 satıra ulaşınca a17 den başlamıştıya b17 yazsın soncra c17 gibi maksat öğrencinin eksik olduğu konuları yeşil alana yazdırmak.ve öğrenci değişince liste tekrar oluşsun..

Murat ustam çok ilgileniyorsunuz konuyla allah razı olsun..
 
Son düzenleme:
Şu kodları bir dener misiniz ?

Kod:
DefInt A, I, S
Sub Emre()
    Range("a17:ac33").ClearContents
    On Error Resume Next
    son = 17
    sut = Cells(17, Columns.Count).End(1).Column
    For a = 2 To 26
        For i = 40 To 106 Step 5
            If Cells(i, a) > Range("A34").Value Then
                 son = 17
                 If Cells(33, sut) <> "" Then
                    Cells(son, sut) = Cells(i + 1, sut + 1)
                    sut = sut + 1
                        Else
                    Cells(33, sut).End(3)(2, 1) = Cells(i + 1, sut + 1)
                    son = son + 1
                End If
            End If
        Next i
    Next a
    i = Empty: son = Empty: a = Empty
End Sub
 
ustam kodu yapıştırdım
fakat liste oluşmadı nerede hata yapmış olabilrim?
 
Hocam afedersini kodların çalışma şeklini değiştirdim.
Kodları Sayfaya değil de Module içerisine yazıp F5'e basar mısınız ?
 
kodu module kısmına yapıştırıp f5 yaptığımda bir pencere açılıyor başvuru gibi bir şey yazıyor
sizlerden ricam belliki ben beceremiyorum ustamda kodları yazmış bi yapıştırıp denerseniz ben ekli halini indirip kullanırım..

destek lütfen..
 
murat usta nasıl teşekkür edeceğimi bilemiyorum.eline bilgine sağlık.

Murat OSMA ustanın yaptığı dosyayı inceleyen arkadaşlar

acaba liste kısmında gelen yazılar biraz üst üste biniyor görsellik anlamında bir şeyler yapılabilir mi acaba?
 
Rica ederim Mehmet Bey,

Listeler için, yazı fontunu küçültüp sütunları genişletmelisiniz.
 
Usta liste çıkarken anladığım kadarı ile sütunları yukarıdan aşağıya tarıyor böyle olunca ders kazanımlarını bir arada görmek zor oluyor.birde listede 0 ları yazdırmasının önüne geçmemiz mümkünse..

Ilginize teşekkür ederim ben dosyanın yeni halini yüklüyorum bakarsınız inş...
 

Ekli dosyalar

0' ların görünmemesi için kodları bu şekilde düzenleyebilirsiniz;

Kod:
DefInt A, I, S
Sub MehmetHoca()
    Range("a17:ab66").ClearContents
    On Error Resume Next
    son = 30
    sut = Cells(30, Columns.Count).End(1).Column
    For a = 2 To 26
        For i = 76 To 142 Step 5
            If Cells(i + 1, a) <> "0" Then
                 If Cells(i, a) < Range("AK7").Value Then
                    son = 30
                    If Cells(46, sut) <> "" Then
                        Cells(son, sut) = Cells(i + 1, sut + 5)
                        sut = sut + 5
                            Else
                        Cells(46, sut).End(3)(2, 1) = Cells(i + 1, sut + 5)
                        son = son + 1
                    End If
                End If
            End If
        Next i
    Next a
    i = Empty: son = Empty: a = Empty
End Sub
 
üstat 0 sorunu çözüldü..
sayende çok şey öğrendim ...
Fakat kod mantığını çözemedim sanırım yukardan aşağı tarayıp bir yan sutüna geçiyor.. listede dersler karışık sıralamada çıkıyor.
satır işine i sütun işine a bakıyor anladığım ....önce 1 satırı kontrol edip 2 den 26 ya sonra bir alt adıma geçse ...böyle olursa benim kazanımlar dağılmamış olur..
oluru varsa bir ustam el atarmı?

murat beyden bi şey istemeye yüzüm yok artık...tekrar allah razı olsun kendisinden...
 
Mehmet Bey anladığım kadarıyla, istediğiniz gibi olması için kodlardaki For i ve For a döngülerini yer değiştirmeniz yeterli olacaktır.

For i satırını For a satırının üzerine alın

Yani bu şekilde olsun;
Kod:
    For i = 76 To 142 Step 5
        For a = 2 To 26
          'burada Diğer kodlar
          '''''''''''''''''''''''''''''
          '''''''''''''''''''''''''''''
        Next a
    Next i

Kodların nasıl çalıştığını anlamanız için: Kod ekranındayken View menüsünden Locals Window'u seçin. Alt tarafta Locals penceresi açılmış olacak.
Şimdi Makronun içinde bir yeri seçin. Örneğin mouse ile MehmetHoca'yı seçin, sonra da F8 tuşuna basın.
Locals Penceresinde tanımladığınız değişkenlerin isimlerini, aldıkları değeri ve değişken tipini göreceksiniz.
Şimdi bir kez daha F8'e basın sonra bir kez daha derken yavaş yavaş indikçe Locals Penceresindeki değişkenlerin değer kazanmaya başladığını göreceksiniz.
Bu değerler size kodların çalışma mantığıyla ilgili yol gösterecektir.



İyi akşamlar...
 
Evet, yeni öğrenmeye başlayanlar için önemli bir pencere.
F8 ile adım adım giderek kodların nasıl çalıştığını görüp anlayabilir ve hatalı bir yer var ise müdahale edebilirsiniz.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst