• DİKKAT

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

Birebir Ders Takip Programı

  • Konbuyu başlatan Konbuyu başlatan meyill
  • Başlangıç tarihi Başlangıç tarihi
Katılım
18 Temmuz 2009
Mesajlar
56
Excel Vers. ve Dili
2007
Merhaba değerli arkadaşlar, Bir deshaneye ait öğrenci Birebir ders takip programı oluşturmak istiyorum. Genel bilgilerini Öğrenci Takip Kartına istenen şekilde aktaracak makroya ihtiyacım var. Verilerin bir kaçı ekteki örnektedir.
Yardımlarınız için teşekkürler..
 

Ekli dosyalar

Merhaba,
Dosyayı inceleyiniz.

Sub Aktar()
Range("D:ZZ") = ""
Application.ScreenUpdating = False
Set G = Sheets("Genel Bil")
son = G.Cells(Rows.Count, "D").End(3).Row
For i = 2 To son
sat = WorksheetFunction.Match(G.Cells(i, 4), Range("B1:B1000"), 0)
sut = WorksheetFunction.CountA(Range(Cells(sat, 4), Cells(sat, 1000))) + 4
Cells(sat, sut) = G.Cells(i, 5).Value
Cells(sat + 1, sut) = G.Cells(i, 2).Value
Cells(sat + 2, sut) = G.Cells(i, 3).Value
Next
End Sub
 
Son düzenleme:
Sub Aktar()
Range("D:ZZ") = ""
Application.ScreenUpdating = False -- İşlem yapılırken ekrana yansıtma, işlem bittiğinde gösterir.
Set G = Sheets("Genel Bil") -- Sayfa adını kısaltmak için tanımlama yaptık
son = G.Cells(Rows.Count, "D").End(3).Row -- Genel Bil sayfasına en alttaki veri satırını buluyoruz.
For i = 2 To son -- Yapılcak işlemleri döngüye aldık.
sat = WorksheetFunction.Match(G.Cells(i, 4), Range("B1:B1000"), 0) -- cells(i,4) öğrenci adını ifade ediyor. Kaçıncı formülü ile öğrencinin çizelgede kaçıncı satırda olduğunu buluyoruz.
sut = WorksheetFunction.CountA(Range(Cells(sat, 4), Cells(sat, 1000))) + 4 -- sat ifadesi ile bulduğumuz satırın, ne kadar veri içerdiğini buluyoruz. 4. sütundan başlatmak için +4 ile topluyoruz.
Cells(sat, sut) = G.Cells(i, 5).Value -- sat ve sut değerinin kesiştiği yere ders adı. cells(i,5) ders adıdır.
Cells(sat + 1, sut) = G.Cells(i, 2).Value
Cells(sat + 2, sut) = G.Cells(i, 3).Value
Next
End Sub

Bu şekil dosya hazırlandı
 
Burada bir olayı daha gerçekleştirmesini istiyorum. "Genel bil" sayfasındaki öğrenci isimlerinide makro aktarsın. Bunun için bir kod yazılırsa sevinirim. Çünkü asıl listem kabarık öğrencilerin isimlerini yazmak çok zaman alıyor.
 
Merhaba,
Şablon sayfasında yapacağınız değişikler Takip sayfasına aynen aktarılıyor.

Sub Aktar()
Application.ScreenUpdating = False
Range("B:ZZ") = ""
Range("B:ZZ").UnMerge
Range("B:ZZ").Borders.LineStyle = 0

Set G = Sheets("Genel Bil")
son = G.Cells(Rows.Count, "D").End(3).Row
For i = 2 To son
If WorksheetFunction.CountIf(Range("C1:C1000"), G.Cells(i, 4)) = 0 Then
son = Range("B1000").End(3).Row + 3
Sheets("Şablon").Range("B1:L4").Copy Range("B" & son)
Range("C" & son + 1) = G.Cells(i, 4).Value
Range("B" & son + 1) = WorksheetFunction.Max(Range("B1:B1000")) + 1
End If
sat = WorksheetFunction.Match(G.Cells(i, 4), Range("C1:C1000"), 0)
sut = WorksheetFunction.CountA(Range(Cells(sat, 5), Cells(sat, 1000))) + 5
Cells(sat, sut) = G.Cells(i, 5).Value
Cells(sat + 1, sut) = G.Cells(i, 2).Value
Cells(sat + 2, sut) = G.Cells(i, 3).Value
Next
Set G = Nothing
End Sub
 
Son düzenleme:
Bunu office 2003 'te denediğimde hata verdi. Hata
sut = WorksheetFunction.CountA(Range(Cells(sat, 5), Cells(sat, 1000))) + 5
satırı gösteriyor. 2007'de sorunsuz çalışıyor. fark neden kaynaklanıyor. Yada 2003 e nasıl uyarlanabilir?
 
Sorunuza cevap verildiği zaman geri dönüşte bulununuz.

sut = WorksheetFunction.CountA(Range(Cells(sat, 5), Cells(sat, 1000))) + 5
Excel 2003'te en fazla 255 sütun vardır. 1000 yazan yeri 255 yapınız.
 
Elinize sağlık teşekkürler..
 
Geri
Üst