• DİKKAT

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

değişken & döngü

  • Konbuyu başlatan Konbuyu başlatan öğrtm
  • Başlangıç tarihi Başlangıç tarihi
Katılım
1 Eylül 2008
Mesajlar
219
Excel Vers. ve Dili
ofis 2010
merhabalar aşağıdaki kodlarla bir sınıfa ait istatistikler oluşturmaya çalışıyorum
fakat kırmızı ile işaretlediğim veriler gelmiyor.konuyla ilgili yardımlarınızı bekliyorum.
Private Sub ComboBox1_Change()

For i = 1 To Sheets("Kutuk").[a60000].End(3).Row
say1 = say1 + 1 'Kütük toplamı
If Sheets("Kutuk").Cells(i, 5) = "Kız" Then
say2 = say2 + 1 'Kız toplamı
ElseIf Sheets("Kutuk").Cells(i, 5) = "Erkek" Then
say3 = say3 + 1 'Erkek toplamı
Else
say4 = say4 + 1 'Cinsiyeti belirtilmemiş öğrenci toplamı
End If
For x = 1 To Me.ComboBox1.ListIndex + 1
Me.Label1.Caption = Sheets("Sayfa2").Cells(x, "a") & Space(1) & say & xNext x, i
End Sub
 

Ekli dosyalar

bunu denermisiniz.


Private Sub ComboBox1_Change()
For i = 1 To Sheets("Kutuk").[a60000].End(3).Row
say1 = say1 + 1 'Kütük toplamı
If Sheets("Kutuk").Cells(i, 5) = "Kız" Then
say2 = say2 + 1 'Kız toplamı
ElseIf Sheets("Kutuk").Cells(i, 5) = "Erkek" Then
say3 = say3 + 1 'Erkek toplamı
Else
say4 = say4 + 1 'Cinsiyeti belirtilmemiş öğrenci toplamı
End If
Next i
If ComboBox1.Text = Sheets("Sayfa2").Cells(1, 1) Then
say = say1
ElseIf ComboBox1.Text = Sheets("Sayfa2").Cells(2, 1) Then
say = say2
ElseIf ComboBox1.Text = Sheets("Sayfa2").Cells(3, 1) Then
say = say3
ElseIf ComboBox1.Text = Sheets("Sayfa2").Cells(3, 1) Then
say = say4
End If
Me.Label1.Caption = Sheets("Sayfa2").Cells(ComboBox1.ListIndex + 1, "a") & Space(1) & say
End Sub
 
kodu düzelttim
 
halit bey yukarıdaki şekliyle kodlar hata veriyor.dahada önemlisi mesela şu anda dört tane istatistik türü çekiyorum.bu 20 çeşit olursa yukarıdaki gibi "if" le oluşturulan bir çözüm çok uzun bir kod dizini oluşturmaz mı?
 
seçilen seçeneğe göre topluyor daha fazlada olabilir

Private Sub ComboBox1_Change()
For i = 1 To Sheets("Kutuk").[a60000].End(3).Row
say1 = say1 + 1 'Kütük toplamı
If Sheets("Kutuk").Cells(i, 5) = "Kız" Then
say2 = CDbl(say2) + 1 'Kız toplamı
End If
If Sheets("Kutuk").Cells(i, 5) = "Erkek" Then
say3 = CDbl(say3) + 1 'Erkek toplamı
End If
If Sheets("Kutuk").Cells(i, 5) = "" Then
say4 = CDbl(say4) + 1 'Cinsiyeti belirtilmemiş öğrenci toplamı
End If
Next i
If ComboBox1.Text = Sheets("Sayfa2").Cells(1, 1) Then
say = say1
ElseIf ComboBox1.Text = Sheets("Sayfa2").Cells(2, 1) Then
say = say2
ElseIf ComboBox1.Text = Sheets("Sayfa2").Cells(3, 1) Then
say = say3
ElseIf ComboBox1.Text = Sheets("Sayfa2").Cells(4, 1) Then
say = say4
End If
Me.Label1.Caption = Sheets("Sayfa2").Cells(ComboBox1.ListIndex + 1, "a") & Space(1) & say
End Sub
 
arkadaşlar şu şekilde biraz daha kısalıyor.

Private Sub ComboBox1_Change()
Dim say(4) As Long


For i = 1 To Sheets("Kutuk").[a60000].End(3).Row

say1 = say1 + 1 'Kütük toplamı
If Sheets("Kutuk").Cells(i, 5) = "Kız" Then
say2 = say2 + 1 'Kız toplamı
ElseIf Sheets("Kutuk").Cells(i, 5) = "Erkek" Then
say3 = say3 + 1 'Erkek toplamı
Else
say4 = say4 + 1 'Cinsiyeti belirtilmemiş öğrenci toplamı
End If
say(1) = say1
say(2) = say2
say(3) = say3
say(4) = say4

For x = 1 To Me.ComboBox1.ListIndex + 1
Me.Label1.Caption = Sheets("Sayfa2").Cells(x, "a") & Space(1) & say(x)

Next x, i

End Sub
 
arkadaşlar bu konuda daha esnek bir çözümü olan yok mu? yukarıdaki şekilde sürekli koda müdahaleetmek lüzumu var
 
:cool:
Kod:
Dim sat As Long, kiz As Long, erkek As Long, diger As Long
Dim toplam As Long, deg As String
sat = Sheets("Kutuk").[a65536].End(3).Row
toplam = sat
kiz = WorksheetFunction.CountIf(Range("E1:E" & sat), "Kız")
erkek = WorksheetFunction.CountIf(Range("E1:E" & sat), "Erkek")
diger = toplam - (kiz + erkek)
deg = "Kız : " & kiz & vbTab & "Erkek :" & erkek & vbTab & _
"Diğer : " & diger & vbTab & " Toplam : " & toplam
Label1.Caption = deg
 
evren bey değişik bir çözüm olmuş sağolun.
iyi akşamlar
 
evren bey değişik bir çözüm olmuş sağolun.
iyi akşamlar
Değişik çözümün yanında hız olarak diğer sizin koda nal toplatır.
Unutmayın döngüler her zaman fren yapar.Eğer excelin hazır fonksiyonları varsa veya komutları ile (find gibi) işlem yapılıyorsa bu işlemi tercih etmelisiniz.
Yoksa dediğiniz gibi olur sadece değişik bir çözüm olarak kalır benim yazdığım kod.
İyi akşamlar.:cool:
 
tavsiyeleriniz için teşekkür ederim.mutlaka dikkate alacağım.nedense her problemde önce döngü ve değişkenler aklıma geliyor.galiba excelin yerleşik işlevlerine biraz daha zaman ayırmak lazım.
iyi akşamlar
 
Merhaba,

Döngü ile değişken aralık nasıl select edebilirim
 
Son düzenleme:
Geri
Üst