- Katılım
- 13 Şubat 2011
- Mesajlar
- 1,167
- Excel Vers. ve Dili
- Microsoft Office Professional Plus 2013 Türkçe
Herkese Merhaba,
Ekte örnek dosyada görüleceği üzere, elimde Sayfa1 de, TEOG Yerleştirme sonuçlarına göre 11 ortaokuldan toplam 382 öğrencinin 13 farklı lise türüne yerleşme verileri var.
İstediğim: Sayfa2 de "A2:A12" sütun aralığına benzersiz ortaokul isimleri, "B1:N1" satır aralığına da benzersiz lise türleri gelecek şekilde bir tablo oluşturarak bunlara karşılık gelen (hangi ortaokuldan hangi lise türüne kaçar öğrenci yerleştiği) verileri dizi mantığı ile tespit edebilmektir.
Aşağıdaki kodlarla oluşturmak istediğim tablonun dikey ve yatay verilerini tek boyutlu dizilerle oluşturabiliyorum. Fakat öğrenci sayılarını vermesini istediğim üçüncü diziyi aynı döngü içinde oluşturma mantığını çözemedim. İlgilenen arkadaşlara şimdiden teşekkürler...
Üzerinde çalıştığım kodlar:
Ekte örnek dosyada görüleceği üzere, elimde Sayfa1 de, TEOG Yerleştirme sonuçlarına göre 11 ortaokuldan toplam 382 öğrencinin 13 farklı lise türüne yerleşme verileri var.
İstediğim: Sayfa2 de "A2:A12" sütun aralığına benzersiz ortaokul isimleri, "B1:N1" satır aralığına da benzersiz lise türleri gelecek şekilde bir tablo oluşturarak bunlara karşılık gelen (hangi ortaokuldan hangi lise türüne kaçar öğrenci yerleştiği) verileri dizi mantığı ile tespit edebilmektir.
Aşağıdaki kodlarla oluşturmak istediğim tablonun dikey ve yatay verilerini tek boyutlu dizilerle oluşturabiliyorum. Fakat öğrenci sayılarını vermesini istediğim üçüncü diziyi aynı döngü içinde oluşturma mantığını çözemedim. İlgilenen arkadaşlara şimdiden teşekkürler...
Üzerinde çalıştığım kodlar:
Kod:
Sub durumu_analiz_et()
Dim s1 As Worksheet, s2 As Worksheet, ss As Long, dx(), dy(), dizi()
Dim a
Set s1 = Sayfa1
Set s2 = Sayfa2
ss = s1.Range("A" & Rows.Count).End(3).Row
a = s1.Range("A2:C" & ss)
ReDim dizi(1 To 1, 1 To 1)
ReDim dx(1 To 1, 1 To 1)
ReDim dy(1 To 1, 1 To 1)
s2.Range("1:1, A:A").ClearContents
With CreateObject("scripting.dictionary")
For i = 1 To UBound(a)
okul = a(i, 1)
yer = a(i, 3)
durum = okul & "#" & yer
If Not .exists(okul) Then
.Add okul, x
x = x + 1
ReDim Preserve dx(1 To 1, 1 To x)
dx(1, x) = okul
End If
If Not .exists(yer) Then
.Add yer, y
y = y + 1
ReDim Preserve dy(1 To 1, 1 To y)
dy(1, y) = yer
End If
' '===================================
' ReDim dizi(1 To x, 1 To y)
' dizi(x, y) = y
' '===================================
Next i
End With
s2.Activate
s2.Range("B1").Resize(1, y).Value = dy
s2.Range("A2").Resize(x, 1).Value = Application.Transpose(dx)
s2.Range("B2").Resize(x, y).Value = Application.Transpose(dizi)
End Sub
