• DİKKAT

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

Öğrenci cinsiyet ve puanına göre eşit sınıf oluşturma

Bu işlem formülle yapılabilir muhtemelen ama ben yapamam maalesef. Makroyla daha kolay olur.

Ancak her iki durumda da yardımcı olacak arkadaşlar şunları merak edecektir: "cinsiyet ve puana göre dağılım" nasıl olacak? Kız ve erkek ayrı sınıflarda mı olacak yoksa dengeli bir dağılım mı olacak? Ayrıca A ve B sayfalarında hiçbir şey yok. Orda nasıl bir sonuç oluşması gerekiyor?
 
her iki sınıfta da eşit sayıda kız ve erkek olması (olmuyorsa yaklaşık)
SayfaA ve B de sınıf listeleri ad - Cinsiyet - YEP puanı şeklinde sınıf listesi olacak.

Aklımdaki çözüm şu-
liste zaten YEP puanına göre sıralı. bir sütuna kız öğrenciler (sırayı bozmadan) diğer sütuna erkekleri.

1. kızı A sınıfında 2. kızı B sınıfına....
erkekler için de aynısı olabilir mi_
 
Makrolu çözüm isterseniz (ben formüldense makroyu tercih ederim, çünkü hata olasılığı düşüktür belki de hiç yoktur) aşağıdaki kodları bir modüle kopyalayıp deneyiniz:
Kod:
Sub sınıf()
kız = 0
erkek = 0

Set s1 = Sheets("Sayfa1")
Set A = Sheets("Sayfa A")
Set B = Sheets("Sayfa B")

For öğrenci = 2 To s1.Cells(Rows.Count, "C").End(3).Row
    If s1.Cells(öğrenci, "D") = "Erkek" Then
        erkek = erkek + 1
    Else
        kız = kız + 1
    End If
    If s1.Cells(öğrenci, "D") = "Erkek" And erkek Mod 2 = 0 Then
        yeniA = A.Cells(Rows.Count, "A").End(3).Row + 1
        s1.Range("B" & öğrenci & ":E" & öğrenci).Copy A.Cells(yeniA, "B")
        A.Cells(yeniA, "A") = yeniA - 1
    ElseIf s1.Cells(öğrenci, "D") = "Erkek" And erkek Mod 2 > 0 Then
        yeniB = B.Cells(Rows.Count, "A").End(3).Row + 1
        s1.Range("B" & öğrenci & ":E" & öğrenci).Copy B.Cells(yeniB, "B")
        B.Cells(yeniB, "A") = yeniB - 1
    ElseIf s1.Cells(öğrenci, "D") = "Kız" And kız Mod 2 > 0 Then
        yeniB = B.Cells(Rows.Count, "A").End(3).Row + 1
        s1.Range("B" & öğrenci & ":E" & öğrenci).Copy B.Cells(yeniB, "B")
        B.Cells(yeniB, "A") = yeniB - 1
     ElseIf s1.Cells(öğrenci, "D") = "Kız" And kız Mod 2 = 0 Then
        yeniA = A.Cells(Rows.Count, "A").End(3).Row + 1
        s1.Range("B" & öğrenci & ":E" & öğrenci).Copy A.Cells(yeniA, "B")
        A.Cells(yeniA, "A") = yeniA - 1
    End If
Next
    
End Sub
 
Hocam kızları ve erkekleri başarı sırasına göre ayrı sütunlarda sıralayınız. Erkeklere A, B şeklinde, kızlara B, A şeklinde alt alta sürükleyin.
 
Geri
Üst