Seviye Sınıfları oluşturma

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
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

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,453
Excel Vers. ve Dili
2019 Türkçe
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
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
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

Son düzenleme:

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
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

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,453
Excel Vers. ve Dili
2019 Türkçe
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.
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
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

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,035
Excel Vers. ve Dili
2013 Türkçe
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:

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
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.
 

Muhammet Okumuş

Destek Ekibi
Destek Ekibi
Katılım
28 Eylül 2007
Mesajlar
4,035
Excel Vers. ve Dili
2013 Türkçe
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.
 

Feylosof

Altın Üye
Katılım
24 Temmuz 2019
Mesajlar
470
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
19-12-2025
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.
Genelde 2 SAYISAL 4 EA 1 DİL sınıfı oluyor. Ama bu sayıları biz belirlesek dosyada olduğu gibi olur mu acaba
 
Üst