İKİ TARİH ARASI ŞARTLI RAPOR ALMAK

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Arkadaşlar merhaba, önceki açtığım konuda bütün soruları tek seferde sormuştum, fazla kafa karışıklığı olmasın diye tek tek sorma kararı aldım.

Ekteki örnek dosyada Depo_Stok isimli sayfamızda A:N sütunları arasında 2000 satırlık ürün giriş ve çıkış bilgileri mevcut.

A:I arası ürün giriş, J:N arası ürün çıkış bilgileri mevcut

J sütunda ürünlerin çıkış tarihleri mevcut ama iki tarih arasında farklı firmalardan çıkış olabiliyor.

Buna göre j2:j2000 arası tarih, C2:C2000 arası da firma isimleri mevcut 2 tarih arasında firma ismine göre rapor almak istiyorum.

Bu şartlarda rapor alabilmem için nasıl bir kod yazmalıyız.

Not: Tarihleri gösteren Combobox 1 ve 2 de J sütunundaki bütün tarihleri gösteriyor. Aynı tarihten olanları 1 tane gösterebilir miyiz?

İlgilenen arkadaşlara şimdiden çok teşekkür ederim,
İyi çalışmalar,
Saygılarımlar...
 

Ekli dosyalar

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,125
Excel Vers. ve Dili
office2010
Formda bulunan kodların hepsini silin.


Kod:
Private Sub CommandButton1_Click()
Dim trh_1 As Date, trh_2 As Date, frm As String
Dim veri(), alan()
Dim sD As Worksheet
Set sD = Sheets("DEPO_STOK")
    
    son = sD.Range("A" & Rows.Count).End(3).Row
    veri = sD.Range("A2:N" & son).Value
If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Then
    MsgBox "Tarih alanı Boş.", vbCritical: ListBox1.Clear: Exit Sub: Exit Sub
End If

    trh_1 = ComboBox1
    trh_2 = ComboBox2
    frm = ComboBox3
 
If trh_1 > trh_2 Then
    MsgBox "İlk tarih son tarihden büyük.", vbExclamation
    ListBox1.Clear: Exit Sub
End If
    
For i = 1 To UBound(veri)
    If veri(i, 10) <> "" Then
    If frm = "TÜM FİRMALAR" Then GoTo esgec
        If frm = veri(i, 3) Then
esgec:
        If CDate(veri(i, 10)) >= trh_1 And CDate(veri(i, 10)) <= trh_2 Then
            say = say + 1
            ReDim Preserve alan(1 To UBound(veri, 2), 1 To say)
            For j = 1 To UBound(veri, 2)
                alan(j, say) = veri(i, j)
            Next j
        End If
        End If
    End If
Next i

If say > 0 Then
ListBox1.Column = alan
Else
ListBox1.Clear
End If
End Sub

Private Sub CommandButton3_Click()
    Unload Me
End Sub


Private Sub UserForm_Initialize()
Dim veri()
    Dim sD As Worksheet
    Set sD = Sheets("DEPO_STOK")
    
    Set dt = CreateObject("scripting.dictionary")
    Set df = CreateObject("scripting.dictionary")
    
    son = sD.Range("A" & Rows.Count).End(3).Row
    veri = sD.Range("A2:N" & son).Value
    df("TÜM FİRMALAR") = ""
    For i = 1 To UBound(veri)
        If veri(i, 10) <> "" Then dt(veri(i, 10)) = ""
        If veri(i, 3) <> "" Then df(veri(i, 3)) = ""
    Next i
    
    ComboBox1.List = dt.keys
    ComboBox2.List = dt.keys
    ComboBox3.List = df.keys
    ComboBox3.ListIndex = 0
    ListBox1.ColumnCount = 14
    ListBox1.ColumnWidths = "55;55;90;90;65;65;65;65;75;72;72;72;72;50"
    ListBox1.List = veri
End Sub
 
Son düzenleme:

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Ziynettin Hocam çok teşekkür ederim, tam istediğim gibi oldu, ama bir isteğim daha olacak Texboxlarda kolonların toplamını yazmak istiyorum ama kullandığım kod ile liste ilk açıldığında doğru sonuç veriyor rapor alınca rapordaki son satırın toplamını hesaplamıyor.
Nasıl bir değişiklik yapmalıyım.

Kod:
For i = 1 To ListBox1.ListCount - 1
T1 = ListBox1.List(i - 1, 5) + T1
Next i
TextBox1 = T1
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,655
Excel Vers. ve Dili
Pro Plus 2021
T1 = ListBox1.List(i - 1, 5) + T1
yerine
T1 = ListBox1.List(i, 5) + T1
olarak deneyin.
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Veysel bey teşekkür ederim ama bir şey değişmedi.
Userform ilk açıldığında listeyi tam veriyor ama toplamı bir satır eksik hesaplıyor.
Rapor alınca da aynısı oluyor.
Yalnız ilk satırı hesaplamıyor.
 
Son düzenleme:

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,125
Excel Vers. ve Dili
office2010
Satır 1128 toplam alınmış burada veri olmasın. Kodu A sütununa göre dinamik olarak düzenledim.



Toplam olarak;

For i = 0 To ListBox1.ListCount - 1
T1 = ListBox1.List(i , 5) + T1
Next i
TextBox1 = T1

olarak deneyin.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,655
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub toplamAl()

    ver = ListBox1.List
    TextBox1.Text = WorksheetFunction.Sum(Application.Index(ver, , 6))
    TextBox2.Text = WorksheetFunction.Sum(Application.Index(ver, , 7))
    TextBox3.Text = WorksheetFunction.Sum(Application.Index(ver, , 12))
    TextBox4.Text = WorksheetFunction.Sum(Application.Index(ver, , 13))
    TextBox5.Text = TextBox1.Text - TextBox3.Text
    TextBox6.Text = TextBox2.Text - TextBox4.Text

End Sub

Private Sub CommandButton1_Click()
    Dim trh_1 As Date, trh_2 As Date, frm As String
    Dim veri(), alan()
    Dim sD As Worksheet
    Set sD = Sheets("DEPO_STOK")
    
    veri = sD.Range("A2:N" & sD.Cells(Rows.Count, 1).End(3).Row).Value
    If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Then
        MsgBox "Tarih alanı Boş.", vbCritical: ListBox1.Clear: Exit Sub: Exit Sub
    End If

    trh_1 = ComboBox1
    trh_2 = ComboBox2
    frm = ComboBox3
 
    If trh_1 > trh_2 Then
        MsgBox "İlk tarih son tarihden büyük.", vbExclamation
        ListBox1.Clear: Exit Sub
    End If
    
    For i = 1 To UBound(veri)
        If veri(i, 10) <> "" Then
            If frm = "TÜM FİRMALAR" Then GoTo esgec
            If frm = veri(i, 3) Then
esgec:
                If CDate(veri(i, 10)) >= trh_1 And CDate(veri(i, 10)) <= trh_2 Then
                    say = say + 1
                    ReDim Preserve alan(1 To UBound(veri, 2), 1 To say)
                    For j = 1 To UBound(veri, 2)
                        alan(j, say) = veri(i, j)
                    Next j
                End If
            End If
        End If
    Next i

    If say > 0 Then
        ListBox1.Column = alan
    Else
        ListBox1.Clear
    End If
    Call toplamAl
End Sub

Private Sub CommandButton3_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    Dim veri()
    Dim sD As Worksheet
    Set sD = Sheets("DEPO_STOK")
    
    Set dt = CreateObject("scripting.dictionary")
    Set df = CreateObject("scripting.dictionary")
    
    veri = sD.Range("A2:N" & sD.Cells(Rows.Count, 1).End(3).Row).Value
    df("TÜM FİRMALAR") = ""
    For i = 1 To UBound(veri)
        If veri(i, 10) <> "" Then dt(veri(i, 10)) = ""
        If veri(i, 3) <> "" Then df(veri(i, 3)) = ""
    Next i
    
    ComboBox1.List = dt.keys
    ComboBox2.List = dt.keys
    ComboBox3.List = df.keys
    ComboBox3.ListIndex = 0
    ListBox1.ColumnCount = 14
    ListBox1.ColumnWidths = "55;55;90;90;65;65;65;65;75;72;72;72;72;50"
    ListBox1.List = veri
    Call toplamAl
End Sub
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Ziynettin Hocam 6 kolonda yani F sütununda giriş yapılan kasa adet sayısı dosyada 2925 ad görünüyor userform açılınca rakam 2890 olarak veriyor aslında liste tamamını veriyor ama toplamda en üst satırı saymıyor.

Şuanda sizin verdiğiniz kodu kullanıyorum
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
veyselemre Hocam şimdi şimdi tam istediğim gibi oldu. Çok teşekkür ederim.
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Son bir sorum daha olacak hocam aynı dosya içerisinde ürün girişleri yaptığım sayfada ürün çıkışı yaparken hangi palet numarası çıkıyor ise ona göre çıkış yapıyoruz. Aynı formun benzeri gibi form daha var Depo_Stok sayfasından ki verileri gösteriyor. içerinden 55 nolu paletin çıkışını yaparken o satıra gelip çift tıkladığım zaman bütün bilgiler textboxlar'a aktarılıyor, gerekli değişiklikleri yapınca güncelle diyerek çıkış işlemini yapıyorum.

Şimdi sorun burada başlıyor, yaklaşık 2000 palet ürünün içerisinden örneğin 1555 nolu paletin çıkış işlemi için o satıra gitmek uğraştırıyor. Combobox1 de palet numaralarını listeliyorum seçtiğim palet numarasına göre listbox o satıra gidebilir mi?

palet numarası 5 sütununda kayıtlı
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Kayıt_güncelle formunda mevcut hocam, Combobox1 de palet no seçince Listboxda o satıra gitsin istiyorum.
 

Ekli dosyalar

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Arkadaşlar merhaba, ÖmerFaruk beyin yardım ettiği bir konuda yazmış olduğu kod ile denedim ve oldu Combobox ile seçtiğim palet numarasını Listbox da o satıra seçiyor.

Kod:
Private Sub ComboBox1_Change()
 For i = 1 To ListBox1.ListCount
   If UCase(ComboBox1.Value) = UCase(ListBox1.List(i - 1, 4)) Then
      ListBox1.ListIndex = i - 1
     Exit For
   End If
Next i
End Sub

Şimdilik sorun kalmadı, herkese yardımlarından dolayı teşekkür ederim.

İyi çalışmalar.
Saygılarımla...
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Ziynettin hocam yeniden merhaba, yeni bir sorum daha olacak yukarıdaki son eklediğim dosyada. Kayıt_Güncelle isimli Userform da her şey tam istediğim gibi oldu yardımlarınızla. Şimdi yeni bir sorun çıktı, güncellemek istediğim satırı seçiyorum bilgileri Textboxlar'a aktarılıyor, hem giriş yaptığım kısımları hem de çıkış işlemi için yaptığım değişiklikleri yapıp güncelle tuşuna basınca sayfadaki o satırları aşağıdaki kod ile yeniliyorum ama format sorunu çıkıyor. Textbox7 ve Textbox13 sayı içeriyor ama ondalıklı sayı olduğu zaman sayfaya aktarımında sorun oluyor. Aşağıdaki kodda nasıl bir değişiklik yapabiliriz ve Textbox7 ve Textbox13 için farklı formatta değişiklik yapabiliriz.


Kod:
Private Sub CommandButton1_Click()
d = ListBox1.ListIndex + 2
If d < 2 Then Exit Sub
For i = 1 To 14
Sheets("DEPO_STOK").Cells(d, i).Value = Controls("textBox" & i).Value

Next
MsgBox "BİLGİLER GÜNCELLENDİ"
End Sub
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,125
Excel Vers. ve Dili
office2010
Kod:
Private Sub CommandButton1_Click()
    d = ListBox1.ListIndex + 2
    If d < 2 Then Exit Sub
    For i = 1 To 4
        If Controls("textBox" & i).Value <> "" And IsNumeric(Controls("textBox" & i)) Then
            Sheets("sayfa1").Cells(d, i).NumberFormat = "#,##0.00"
            Sheets("sayfa1").Cells(d, i).Value = CDbl(Controls("textBox" & i))
        Else
            Sheets("sayfa1").Cells(d, i).Value = ""
        End If
    Next i
    MsgBox "BİLGİLER GÜNCELLENDİ"
End Sub
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Ziynettim hocam yazdığınız kodda sayfa ismini Depo_Stok diye değiştiriyorum ve aşağıdaki gibi hata veriyor. Sayfa1 diye bir sayfa açıyorum o zaman hata vermiyor ama Depo_Stok sayfasında da değişiklik yapmıyor.

232555232556
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Ziynettin Hocam bir şey farkettim sayfaya aktarıldığı zaman değiştirilen satır texboxlar metin olarak aktarılıyor. Bunu başka bir kod ile tekrar sayıya çevirebilir miyiz?
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Hocam bir kod buldum sayfadaki belirli sütunları sayı formatına çeviriyor. Sayfada uyguladım ve oldu ama sıkıntı şu, benim sayı formatına çevirmek istediğim sütünlar G2:G3000 ve M2:M3000 sütunları. Sadece iki sütunu kapsayacak şekilde nasıl değiştirmeliyim.

Range("G2:M3000").Select yapınca aradaki tarih olan sütunu da sayıya çevirdiği için olmuyor.

Kod:
Dim cell As Range
Range("G2:G3000").Select
For Each cell In Selection
If Not IsEmpty(cell) And IsNumeric(cell.Value) Then
cell.Value = CDbl(cell.Value)
End If
Next cell
 

ulutanas

Altın Üye
Katılım
8 Kasım 2008
Mesajlar
581
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2021 TR 32 Bit
Altın Üyelik Bitiş Tarihi
süresiz üye
Onu da buldum hocam uğraştıkça sonuç çıkıyor.

Kod:
Dim cell As Range
Range("G2:G3000").Select
For Each cell In Selection
If Not IsEmpty(cell) And IsNumeric(cell.Value) Then
cell.Value = CDbl(cell.Value)
End If
Next cell
Range("M2:M3000").Select
For Each cell In Selection
If Not IsEmpty(cell) And IsNumeric(cell.Value) Then
cell.Value = CDbl(cell.Value)
End If
Next cell
 
Üst