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

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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?
 
Katılım
12 Kasım 2007
Mesajlar
3
Excel Vers. ve Dili
2003 türkçe
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_
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,070
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
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
 

Muhammet Okumuş

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