• DİKKAT

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

Seviye Sınıfları oluşturma

Katılım
24 Temmuz 2019
Mesajlar
484
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Arkadaşlar merhaba;
Kız ve Erkek sayıları dengeli olacak şekilde not ortalamasına göre en yüksekten en düşüğe doğru sınıfları oluşturmak istiyorum. Örnek dosya ekledim.
Desteğiniz için şimdiden teşekkürler.
 

Ekli dosyalar

Merhaba.

Alternatif
Bir modüle kopyalayıp çalıştırın.

Kod:
Sub SiniflariOlustur()

    Dim Sube As Integer
    Dim Bak As Long
    Dim Say As Integer
    Dim SayKiz As Integer
    Dim SayErkek As Integer
    Dim KizKacinci As Integer

    Application.ScreenUpdating = False
    Sube = 64
    Say = Cells(Rows.Count, "E").End(xlUp).Row
    
    With ThisWorkbook.ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range("E2:E" & Say), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SortFields.Add2 Key:=Range("F2:F" & Say), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .SetRange Range("A1:F" & Rows.Count)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
        
    Range("B2:B" & Say).ClearContents

    SayKiz = WorksheetFunction.CountIf(Range("E:E"), "Kız")
    SayKiz = WorksheetFunction.Round(SayKiz / ((Say - 1) / 100), 1)
    SayKiz = Range("I2") * (SayKiz / 100)
    SayErkek = Range("I2") - SayKiz
    KizKacinci = Range("E:E").Find(what:="Kız").Row
    
    For Bak = 2 To KizKacinci - 1 Step SayErkek
        Sube = 1 + Sube
        If Bak + SayErkek > (KizKacinci - 1) Then SayErkek = (KizKacinci - Bak) - 1
        Range("B" & Bak, "B" & Bak + SayErkek) = ActiveSheet.Name & ". Sınıf /  " & Chr(Sube) & " Şubesi"
    Next
    Sube = 64
    For Bak = KizKacinci To Say Step SayKiz
        Sube = 1 + Sube
        If Bak + SayKiz > (Say - 1) Then SayKiz = (Say - Bak)
        Range("B" & Bak, "B" & Bak + SayKiz) = ActiveSheet.Name & ". Sınıf /  " & Chr(Sube) & " Şubesi"
    Next
    
    With ThisWorkbook.Worksheets("9").Sort
        .SortFields.Clear
        .SortFields.Add2 Key:=Range("B2:B" & Say), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("A1:F" & Rows.Count)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Application.ScreenUpdating = True
End Sub
 
Sayın @muratboz06 ve sayın @Muzaffer Ali ustalarım ilginiz için her ikinize de ayrı ayrı teşekkür ederim. @Muzaffer Ali üstadım kodda ekran görüntüsündeki satırda hata verdi. object doesn't support property or method hatası. Murat hocam dosyanın formatını bozmadan ve kız erkek sayfalarını ikiye ayırmadan yapmak mümkün değil midir?
 

Ekli dosyalar

  • Ekran Alıntısı.PNG
    Ekran Alıntısı.PNG
    55.6 KB · Görüntüleme: 4
Son düzenleme:
Merhaba,
I sütununda şube sayısına tıklayarak çalışır.
Muhammed hocam çok güzel çalışma olmuş eline sağlık. Bu 9 ve 10. sınıflarda oluşturulacak seviye sınıfları için mükemmel. Bir de 11. sınıflarda bir kriter daha ekleyerek SAYISAL, EŞİT AĞIRLIK SÖZEL GİBİ bu alanların içinde seviye sınıfı oluşturabilir miyiz. Yoksa yeni konu mu açayım bunun için.
 

Ekli dosyalar

Değerli hocam sanırım bende yüklü excelden kaynaklanıyor. Zira aynı hata devam ediyor. vba kısmında bir şey aktifleştirmek mi gerekiyor acaba
Add2 yazan 3 tane yer ver hepsini Add ile değiştirin.
Eğer yine hata verirse hata mesajını da paylaşırsanız belki sorunu çözebiliriz
Yada üzerinde çalıştığınız dosyayı paylaşın, dosyayı kontrol edelim.
 
Add2 yazan 3 tane yer ver hepsini Add ile değiştirin.
Eğer yine hata verirse hata mesajını da paylaşırsanız belki sorunu çözebiliriz
Yada üzerinde çalıştığınız dosyayı paylaşın, dosyayı kontrol edelim.
4. Mesajdaki satırda ekli hatayı veriyor
 

Ekli dosyalar

  • Ekran Alıntısı.JPG
    Ekran Alıntısı.JPG
    14.4 KB · Görüntüleme: 4
Muhammed hocam çok güzel çalışma olmuş eline sağlık. Bu 9 ve 10. sınıflarda oluşturulacak seviye sınıfları için mükemmel. Bir de 11. sınıflarda bir kriter daha ekleyerek SAYISAL, EŞİT AĞIRLIK SÖZEL GİBİ bu alanların içinde seviye sınıfı oluşturabilir miyiz. Yoksa yeni konu mu açayım bunun için.
Yeni konu açmanıza gerek yok. Kodlarda düzenleme yapmak gerekiyor. Başka koşul olacak mı?
 
Son düzenleme:
Yeni konu açmaniza gerek yok. Kodlarda düzenleme yapmak gerekiyor. Başka koşul olacak mı?
Hocam çok teşekkür ederim. Başka koşul yok. Aynı bölümü seçenleri kendi içinde erkek ve kız sayıları dengeli olacak şekilde diğer dosyada olduğu mantıkla seviye sınıfı oluşturacak.
 
Sayısal, Sözel, Eşit ağırlık şube sayıları her zaman eşit mi? Onları ayrı ayrı belirtmek daha doğru olur.
 
Geri
Üst