Vba İndis Kısaltma

1 2
04/05/2021, 13:26

malatyalı

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim s1 As Worksheet
Dim s2 As Worksheet
Set s1 = Sheets("Okul")
Set s2 = Sheets("İlçe")
s2.Range("G9") = WorksheetFunction.VLookup(s2.Range("B9"), s1.Range("B9:h54"), 4, 0)
s2.Range("H9") = WorksheetFunction.VLookup(s2.Range("B9"), s1.Range("B9:h54"), 5, 0)
s2.Range("G10") = WorksheetFunction.VLookup(s2.Range("B10"), s1.Range("B9:h54"), 4, 0)
s2.Range("H10") = WorksheetFunction.VLookup(s2.Range("B10"), s1.Range("B9:h54"), 5, 0)
s2.Range("G11") = WorksheetFunction.VLookup(s2.Range("B11"), s1.Range("B9:h54"), 4, 0)
s2.Range("H11") = WorksheetFunction.VLookup(s2.Range("B11"), s1.Range("B9:h54"), 5, 0)

End Sub

Ustam ben bildiğim şekilde yaptım ama bayağı uzun bir iş oldu.

dosya ekte gönderilmiştir. İlçe sayfasında B9:B54 arasında bir hücreye tıklayınca Okul sayfasında ki bilgileri getiriyor.

Bu kodu en kısa şekli ile düğmeye bağlamak istiyorum. Yardımcı olabilir misiniz?
04/05/2021, 14:23

berduş

bu soru da fonksiyona gerek var mı ki?
doğrudan hücre içi düşeyAra kullanılamaz mı?
erkeklerin olduğu G9 için =DÜŞEYARA(B9;Okul!B9:G54;4;YANLIŞ)
kadınların olduğu H9 için =DÜŞEYARA(B9;Okul!B9:G54;5;YANLIŞ)
toplam sayının olduğu I9 için =DÜŞEYARA(B9;Okul!B9:G54;6;YANLIŞ)
formüllerini girip aşağı sürüklemeniz yeterli bence
04/05/2021, 15:10

malatyalı

ustam
erkeklerin olduğu G9 için =İNDİS(Okul!$E$9:$E$54;KAÇINCI(B9;Okul!$B$9:$B$54;0))
kadınların olduğu H9 için =İNDİS(Okul!$F$9:$F$54;KAÇINCI(B9;Okul!$B$9:$B$54;0))
toplam sayının olduğu I9 için =İNDİS(Okul!$G$9:$G$54;KAÇINCI(B9;Okul!$B$9:$B$54;0))
formülünü kullanıyorum.
Eyvallah. Ama yine de makrosunu öğrenmek isterim.
04/05/2021, 15:24

berduş

kodu aşağıdaki gibi düzenleyebilirsiniz?
burada b sütununda aşağı gidildikçe o satıra değer gelir
yok eğer ben b de harekettiğimde hepsi gelsin derseniz o da yapılır ama fazla veri olduğunda ağırlaşabilir
If Not Intersect(Target, Range(" B9:B54")) Is Nothing Then
Dim s1 As Worksheet
Dim s2 As Worksheet
Set s1 = Sheets("Okul")
Set s2 = Sheets("İlçe")
StrNo = Target.Row
s2.Range("G" & StrNo) = WorksheetFunction.VLookup(s2.Range("B" & StrNo), s1.Range("B9:h54"), 4, 0)
s2.Range("H" & StrNo) = WorksheetFunction.VLookup(s2.Range("B" & StrNo), s1.Range("B9:h54"), 5, 0)

End If
04/05/2021, 15:33

malatyalı

Ustam
StrNo = Target.Row

ile ne söylemek istedik kod kısmına
04/05/2021, 15:38

berduş

StrNo = Target.Row
Target.Row bulunulan hücrenin satır numarası
eğer biz B20 de isek bize 20 değerini verir
1 2