• DİKKAT

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

comboboxta seçilen yıla ait veriler

Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Merhaba Excel Dostları ,
Dosyamda comboboxtan diyelim ki 2020 yılını seçtiğim zaman sadece 2020 yılı verilerinin veya başka bir yılı seçersem o yılın verileri gelsin istiyorum , Bir yere kadar geldim ama datediff fonksiyonunu yapamadım desteğinizi bekliyorum teşekkürler
 

Ekli dosyalar

O kısmı aşağıdaki gibi yaspabilirsin.
C++:
            TopW = 0: TopF = 0
            For i = 2 To sonsatir
                If Cells(i, 3) = "arpa" And Year(Cells(i, 2)) = ComboBox1.Value * 1 Then
                    If Cells(i, 5) = "f" Then
                        TopF = TopF + Cells(i, 4)
                    Else
                        TopW = TopW + Cells(i, 4)
                    End If
                End If
            Next i
            TextBox1.Value = TopW + TopF
            TextBox2.Value = TopW
            TextBox3.Value = TopF
 
ÖmerFaruk bey öncelikle tşk istediğim bir eksikle oldu o da:
If Cells(i, 3) = "arpa" And Year(Cells(i, 2)) = ComboBox1.Value * 1 Then bu satırdaki "arpa" ifadesi Arpa olunca kod çalışmıyor.
Bu büyük küçük harf duyarlığı olmasın istiyorum yani arpa yazsamda ArPa yazsamda kod çalışmalı , mümkünmüdür teşwekkürler.
 
Aşağıdaki gibi deneyiniz.
Kod:
If ucase(Cells(i, 3)) = "ARPA" And Year(Cells(i, 2)) = ComboBox1.Value * 1 Then
 
Kod:
Private Sub ComboBox1_Change()
    Dim sonSatir As Double
    sonSatir = Sheets("hububat_alis").Cells(Rows.Count, 1).End(xlUp).Row

    veriler = Sheets("hububat_alis").Range("A2:E" & sonSatir).Value
    Dim w(1 To 2, 1 To 2)
    For i = 1 To UBound(veriler)
        If ComboBox1.Text = "Tümü" Or ComboBox1.Text = Year(veriler(i, 2)) Then
            If WorksheetFunction.Proper(veriler(i, 5)) = "W" Then r = 1 Else r = 2
            If WorksheetFunction.Proper(veriler(i, 3)) = "Arpa" Then c = 1 Else c = 2
            w(r, c) = w(r, c) + veriler(i, 4)
        End If
    Next i

    TextBox1.Text = Format(w(1, 1) + w(2, 1) + 0, "#,##0")
    TextBox2.Text = Format(w(1, 1) + 0, "#,##0")
    TextBox3.Text = Format(w(2, 1) + 0, "#,##0")

    TextBox9.Text = Format(w(1, 2) + w(2, 2) + 0, "#,##0")
    TextBox10.Text = Format(w(1, 2) + 0, "#,##0")
    TextBox11.Text = Format(w(2, 2) + 0, "#,##0")

    TextBox17.Text = Format(w(1, 1) + w(1, 2) + w(2, 1) + w(2, 2) + 0, "#,##0")
    TextBox18.Text = Format(w(1, 1) + w(1, 2) + 0, "#,##0")
    TextBox19.Text = Format(w(2, 1) + w(2, 2) + 0, "#,##0")

End Sub

Private Sub UserForm_Initialize()
    Dim sonSatirTarih%
    sonSatirTarih = Sheets("veri").Cells(Rows.Count, "A").End(xlUp).Row
    ComboBox1.RowSource = "veri!A2:A" & sonSatirTarih
End Sub
 
sayın veyselemre öncelikle hem soru sorup hemde geç dönüş yaptığım için özür dilerim . 2 sebep 1. si işlerim 2.si ise henüz diziler konusu nu tam kavrayabilmiş değilim dünden beri hem diziler konusunu hemde sizin yazdığınız kodu anlamaya kavramaya çalıştım biraz zor oldu ama yazdığınız kodu anladığımı zannediyorum, çok teşekkürler ama nerdeyse pazar günümün tamamını ayırdığım bu kod ile ilgili şunu sormama müsaade edin
1 -Eğer arpa buğdayın haricinde birde yulaf olsa idi bu kod nasıl olmalıydı
2_TextBox19.Text = Format(w(2, 1) + w(2, 2) + 0, "#,##0") burdaki + 0, ın görevi nedir ne işe yarıyor
yulaf eklemesiyle güncellenmiş dosya ekte
 

Ekli dosyalar

+0 lar, ilgili kriterlerde alış olmadığı zaman sonuç olarak 0 değerini alarak textboxun boş kalmasını önlemek ve işlemin sayısal işlem olduğunu kısaca anlatmak için kullanıldı.
Kod:
Private Sub ComboBox1_Change()
    Dim sonSatir As Long
    Dim veriler() As Variant
    Dim i As Long
    Dim w(1 To 2, 1 To 3)
    Dim r As Long
    Dim c As Long

    sonSatir = Sheets("hububat_alis").Cells(Rows.Count, 1).End(xlUp).Row
    veriler = Sheets("hububat_alis").Range("A2:E" & sonSatir).Value

    For i = 1 To UBound(veriler)
        If ComboBox1.Text = "Tümü" Or ComboBox1.Text = Year(veriler(i, 2)) Then
            If WorksheetFunction.Proper(veriler(i, 5)) = "W" Then r = 1 Else r = 2
            If WorksheetFunction.Proper(veriler(i, 3)) = "Arpa" Then
                c = 1
            ElseIf WorksheetFunction.Proper(veriler(i, 3)) = "Buğday" Then
                c = 2
            Else
                c = 3
            End If
            w(r, c) = w(r, c) + veriler(i, 4)
        End If
    Next i

    TextBox1.Text = Format(w(1, 1) + w(2, 1) + 0, "#,##0")
    TextBox2.Text = Format(w(1, 1) + 0, "#,##0")
    TextBox3.Text = Format(w(2, 1) + 0, "#,##0")

    TextBox9.Text = Format(w(1, 2) + w(2, 2) + 0, "#,##0")
    TextBox10.Text = Format(w(1, 2) + 0, "#,##0")
    TextBox11.Text = Format(w(2, 2) + 0, "#,##0")
    
    TextBox20.Text = Format(w(1, 3) + w(2, 3) + 0, "#,##0")
    TextBox21.Text = Format(w(1, 3) + 0, "#,##0")
    TextBox22.Text = Format(w(2, 3) + 0, "#,##0")

    TextBox17.Text = Format(w(1, 1) + w(1, 2) + w(1, 3) + w(2, 1) + w(2, 2) + w(2, 3) + 0, "#,##0")
    TextBox18.Text = Format(w(1, 1) + w(1, 2) + w(1, 3) + 0, "#,##0")
    TextBox19.Text = Format(w(2, 1) + w(2, 2) + w(2, 3) + 0, "#,##0")

End Sub
 
çok teşekkürler eline , emeğine sağlık . bunu dosyamda geliştirmeye çalışacağım ,ancak sizde takdir edersiniz ki , hububat çeşitleri 2-3 kalemden ibaret değil örneğin Arpa,Buğday,Yulaf,Mısır,Pirinç,Çavdar...vs diye çoğaltılabilir oyüzden elbette şimdilik bu kod üzerinde işlem yaparken yeni aklıma gelen yılları bir comboboxta hububat çeşitlerini ayrı bir comboboxta f ve w ayrımını ayrı bir comboboxta yeni bir taslak hazırlayınca tekrar soruma devam edeceğim , teşekkürler .
 
Geri
Üst