[Yardım]  UserFrom İle birden fazla sheets den filtre yapma

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

UserFrom İle birden fazla sheets den filtre yapma

İleti#1)  ercanfb34 » 19 Tem 2020 02:10

Merhabalar

Raporlama userform yapmak istiyorum. Tüm sheetslerdeki uygun veriyi filtre yaptıktan sonra tek bir sayfaya yapıştırma. Ay mult seçim ve temsilciler multi seçim. Bunu nasıl yaparım.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
ercanfb34
 
Kayıt: 19 Tem 2020 01:53
Meslek: tekniker
Yaş: 30
İleti: 7
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#2)  Bülent » 19 Tem 2020 14:20

Merhaba,
Hoş geldiniz.

Aşağıdaki kodlarla deneyebilir misiniz?

Kod: Tümünü seç
Private Sub CommandButton1_Click()
Dim yil
Dim temsilci, ay
Dim tem, a, t1, a1

sayfalar = Array("Sayfa1", "Sayfa2", "Sayfa6")
yil = ComboBox1.Text
If ComboBox1.Text = "" Then yil = "%"
t1 = 0: a1 = 0

For a = 0 To ListBox2.ListCount - 1
' Ay
    If ListBox2.Selected(a) = True Then a1 = a1 + 1: ay = ay & "','" & a + 1
Next a
If a1 <> 0 Then
    ay = VBA.Right(ay, Len(ay) - 2) & "'"
Else
    ay = "%"
End If

For tem = 0 To ListBox1.ListCount - 1
' Temsilciler
    If ListBox1.Selected(tem) = True Then t1 = t1 + 1: temsilci = temsilci & "','" & ListBox1.List(tem)
Next tem
If t1 <> 0 Then
    temsilci = VBA.Right(temsilci, Len(temsilci) - 2) & "'"
Else
    temsilci = "%"
End If

If ActiveWorkbook.Sheets("Rapor").Index > 0 Then
'rapor isimli sayfa varsa seç ve temizle, yoksa oluştur.
    Sheets("Rapor").Select
    ThisWorkbook.Worksheets("Rapor").UsedRange.ClearContents
Else
    Set rapor = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count))
    rapor.Name = "Rapor"
End If
ThisWorkbook.Worksheets("Rapor").Range("A1").Value = "Firma"
ThisWorkbook.Worksheets("Rapor").Range("B1").Value = "Ülke"
ThisWorkbook.Worksheets("Rapor").Range("C1").Value = "Tarih"
ThisWorkbook.Worksheets("Rapor").Range("D1").Value = "Temsilci"
ThisWorkbook.Worksheets("Rapor").Range("E1").Value = "Ürünler"

Set con = CreateObject("adodb.connection")
con.Open "provider=Microsoft.ACE.OLEDB.12.0;data source=" & ThisWorkbook.FullName & ";extended properties=""excel 12.0;hdr=yes"""
Set rst = CreateObject("ADODB.Recordset")

For say = LBound(sayfalar) To UBound(sayfalar)
    sayfam = "[" & sayfalar(say) & "$]"
    If yil = "%" And ay = "%" And temsilci = "%" Then
    'Bütün kayıtları listele
        sorgum = "Select * From " & sayfam: GoTo atesle
    End If
    If yil <> "%" And ay = "%" And temsilci = "%" Then
    'sadece yıl kriterine göre listele
        sorgum = "Select * From " & sayfam & " where Year(Tarih) = '" & yil & "'": GoTo atesle
    End If
    If yil = "%" And ay <> "%" And temsilci = "%" Then
    'sadece ay kriterine göre listele
        sorgum = "Select * From " & sayfam & " where Month(Tarih) IN (" & ay & ")": GoTo atesle
    End If
    If a1 = 0 Then
        sorgum = "Select * From " & sayfam & " where Temsilci IN (" & temsilci & ")" & " AND Year(Tarih) like '" & yil & "'"
    Else
        sorgum = "Select * From " & sayfam & " where Temsilci IN (" & temsilci & ")" & " AND Year(Tarih) like '" & yil & "'" & " AND Month(Tarih) IN (" & ay & ")"
    End If
atesle:
  rst.Open sorgum, con
    son = ThisWorkbook.Worksheets("Rapor").Range("A65530").End(3).Row + 1
    If son = 2 Then
        ThisWorkbook.Worksheets("Rapor").Range("A2").CopyFromRecordset rst
    Else
        ThisWorkbook.Worksheets("Rapor").Range("A" & son).CopyFromRecordset rst
    End If
    rst.Close
Next say
con.Close
MsgBox "Bitti", vbInformation, "ExcelVba.Net - Bülent - Temmuz 2020"
On Error Resume Next
Set rst = Nothing
Set con = Nothing

End Sub


Dosyanızın uyarlanmış hali ektedir.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Bülent
Yönetim Kurulu
 
Adı Soyadı:Bülent ÖZTÜRK
Kayıt: 15 Haz 2008 00:08
Meslek: Bilgi Sistemleri
Yaş: 43
İleti: 3744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İst/Çekmeköy

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#3)  ercanfb34 » 19 Tem 2020 14:54

Bülent yazdı:Bülent


Çok teşekkür ederim çalışıyor. Deneme yaptım kendi gerçek verilerimde biraz excel kastı.
Rapor sheet değilde yeni workbook içine yapıştırsa filtre yapılan verileri mümkün mü
Kullanıcı avatarı
ercanfb34
 
Kayıt: 19 Tem 2020 01:53
Meslek: tekniker
Yaş: 30
İleti: 7
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#4)  Bülent » 19 Tem 2020 15:19

Sayfa ve veri sayısının fazla olması işlem süresini olumsuz etkileyebilir.

Mevcut dosyada yeni sayfa yerine yeni bir çalışma kitabına da raporlanabilir.

Kodlarda o değişikliği yapmayı deneyin isterseniz, olmazsa yine yardımcı olmaya çalşırım.
Kullanıcı avatarı
Bülent
Yönetim Kurulu
 
Adı Soyadı:Bülent ÖZTÜRK
Kayıt: 15 Haz 2008 00:08
Meslek: Bilgi Sistemleri
Yaş: 43
İleti: 3744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İst/Çekmeköy

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#5)  ercanfb34 » 19 Tem 2020 15:53

Yapmaya çalışıyorum hocam.

Yeni fark ettim benim orjinal verilerin içinde linkli yazı var. Onu normal yazı olarak filtreliyor. Bunun için yapabileceğim birsey var mı

https://prnt.sc/tkngi5
Kullanıcı avatarı
ercanfb34
 
Kayıt: 19 Tem 2020 01:53
Meslek: tekniker
Yaş: 30
İleti: 7
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#6)  Bülent » 19 Tem 2020 16:04

Linkler için şu aşamada sql sorgusuyla bir şey yapılabileceğini sanmıyorum.
Linkler önemli ise, Excel'in mevcut veri filtreleme özelliği kullanılarak, sırayla filtrelenen değerleri kopyalayıp, ayrı bir alana yapıştırmak şeklindeki yöntem ile farklı bir raporlama seçeneği değerlendirilebilir.
Kullanıcı avatarı
Bülent
Yönetim Kurulu
 
Adı Soyadı:Bülent ÖZTÜRK
Kayıt: 15 Haz 2008 00:08
Meslek: Bilgi Sistemleri
Yaş: 43
İleti: 3744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İst/Çekmeköy

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#7)  ercanfb34 » 25 Tem 2020 19:16

@Bülent bey sizden ricam yıl ComboBox olarak yapmıştım. Onu ListBox olarak değiştirmek istiyorum çoklu seçim yapmam gerekiyor nasıl düzenleyecem yardım eder misiniz?
Kullanıcı avatarı
ercanfb34
 
Kayıt: 19 Tem 2020 01:53
Meslek: tekniker
Yaş: 30
İleti: 7
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: istanbul

Cevap: UserFrom İle birden fazla sheets den filtre yapma

İleti#8)  Bülent » 26 Tem 2020 15:10

Bugünlerde biraz yoğunum, zaman ayırabilirsem bakarım.
Kullanıcı avatarı
Bülent
Yönetim Kurulu
 
Adı Soyadı:Bülent ÖZTÜRK
Kayıt: 15 Haz 2008 00:08
Meslek: Bilgi Sistemleri
Yaş: 43
İleti: 3744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İst/Çekmeköy


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Majestic-12 [Bot], Yandex[Bot] ve 1 misafir

Bumerang - Yazarkafe