Veri aktarma...

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
İyi akşamlar arkadaşlar,
Ekteki çalışmada yapmaya çalıştığım husus;
Açılır pencereden seçtiğim sınıfı "LİSTE" adlı sayfada bulacak ve ilk numarasından itibaren, her numara sırasıyla bir hücreye gelecek biçimde, "SGD" adlı sayfanın B sütununun 16,28,40,61,73,85,106,118,130,151,163,175,196,208,220,241,253,265,286,298,331,343,355, 376,388,400,421,433,445,466,478,490,511,523,535,556,568,580,601,613,625,646,658 ve 670. hücrelerine yerleştirecek.
Örneğin 2/A sınıfını seçtiğim zaman "LİSTE" adlı sayfadan 2/A sınıfı bulunacak ve 2/A sınıfındaki ilk numara "SGD" sayfasındaki B16 hücresinen başlayarak sırayla her öğrenci yukarıdaki sıralamada verilen hücrelere yerleştirilecek.
Teşekkür ederim...
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Arkadaşlar özür dilerim VBA şifresini iptal etmeyi unutmuşum.
Şifresi iptal edilmiş hali ektedir....
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Comboboxa aşağıdaki kodu kopyalayın.

Kod:
Private Sub ComboBox1_Change()
Set s1 = Sheets("LİSTE")
Set s2 = Sheets("SGD")
ilk = WorksheetFunction.Match(ComboBox1, s1.[c:c], 0)
son = WorksheetFunction.CountIf(s1.[c:c], ComboBox1) + ilk - 1
hucre = Array(16, 28, 40, 61, 73, 85, 106, 118, 130, 151, 163, _
175, 196, 208, 220, 241, 253, 265, 286, 298, 331, 343, 355, 376, _
388, 400, 421, 433, 445, 466, 478, 490, 511, 523, 535, 556, 568, _
580, 601, 613, 625, 646, 658, 670)
For b = 0 To 43
s2.Range("b" & hucre(b)) = ""
Next
For a = ilk To son
c = c + 12
s2.Range("b" & hucre(d)) = s1.Cells(a, "e")
d = d + 1
Next
End Sub
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Teşekkür ederim Levent Bey, elinize sağlık...
Ancak küçük bir düzeltme yapmam gerekti. Kodlardan yararlanmak isteyen arkadaşlar için belirteyim:
s2.Range("b" & hucre(d)) = s1.Cells(a, "e")
satırındaki "e" ifadesi yerine "b" olması gerekiyormuş. Çünkü "e" olunca okul no yerine adı soyadı aktarıyor.

Tekrar çok teşekkür ediyorum, saygılarımla...
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Buradaki Comboboxa değer aralığını sınıf adlarından oluşan bir listeyi tanımlayarak göstermiştik. Bunun yerine "LİSTE" sayfasında öğrencilerin sınıflarının bulunduğu sütunda ( C:C ) hangi sınıflar varsa onların birer tanesini aldırarak tanımlatabilirmiyiz?
Yani "LİSTE!C:C" aralığına bakacak, oradaki farklı sınıf adlarından birer tanesini alacak ve comboboxda değer olarak gösterecek???

Amaç: Öğrencisi bulunmayan bir sınıf/şube comboxda yer almayacak, görüntülenmeyecek...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Comboboxın listfillrange özelliğine yazdığınız aralığı silin ve aşağıdaki kodu bir normal modüle kopyalayın. Dosya açıldığında verileri tekrarsız olarak yükleyecektir.

Kod:
Sub auto_open()
Set s1 = Sheets("LİSTE")
For a = s1.[c65536].End(3).Row To 3 Step -1
If WorksheetFunction.CountIf(s1.Range("c" & a & ":c65536"), s1.Cells(a, "c")) = 1 Then Sheets("YAZ").ComboBox1.AddItem s1.Cells(a, "c")
Next
End Sub
 

aliakgul

Altın Üye
Katılım
9 Mayıs 2005
Mesajlar
404
Excel Vers. ve Dili
Ofis 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
03-08-2025
Teşekkür ederim...
 
Üst