estrarre dati usando più filtri



  • estrarre dati usando più filtri
    di trump61 data: 06/12/2015 17:15:03

    Ciao sono qui di nuovo, pensavate di esservi liberati di me. Sto cercando di realizzare un data base da dove estrarre dei dati. vorrei evitare di usare autofilter perchè quando lo appilico alla tabella da dove estrarre i dati ho problemi i dati estratti in una userform con textbox, perche non riesco a puntare la prima riga della tabella dopo essere stata filtrata. C'è un altro modo?
    Ora con il codice sotto che non ho scritto io ma ho trovato hanni fa su un altro sito e che fa perfettamente il suo lavoro se la ricerca la devo fare su una sola colonna. soltanto che ora avrei bisogno che la ricerca la faccia con uno o più dati che sono su combobox su diverse colonne.
    Avevo pensato a questo secondo codice:
    Però devo inserire tutti e quattro i criteri e già questo non è quello che vorrei realizzare, infatti vorrei poter fare la ricerca con uno o più criteri dei quattro senza dover inserirli tutti obbligatoriamente. Il secondo problema è che una volta filtrata la tabella non riesco a puntare la prima cella della prima riga di quelle estratte. non mi viene in mente niente per poter risolvere questo problema, vi sarei grato se mi indirizzaste sulla retta via.
    Grazie
     
    With ActiveSheet.Range("B3:B150")
    Dim x As String
    x = TextBox1.Value
    Set C = .Find(x, LookIn:=xlValues) ', LookAt:=xlWhole
    If Not C Is Nothing Then
    firstAddress = C.Address
    Do
    C.Cells.Select
    TextBox2 = C.Value
    TextBox3 = C.Offset(0, 1).Value
    TextBox4 = C.Offset(0, 2).Value
    TextBox5 = C.Offset(0, 3).Value
    TextBox6 = C.Offset(0, 4).Value
    TextBox7 = C.Offset(0, 5).Value
    Y = C.Value
    irisposta = MsgBox("Trovato " & Y & " . Vuoi fermarti ?", vbYesNo)
    If irisposta = vbYes Then 'se rispondo si allora
    GoTo 10 'esco dal ciclo
    End If
    Set C = .FindNext(C)
    Loop While Not C Is Nothing And C.Address <> firstAddress
    
    Else
    MsgBox "Nome non Trovato"
    End If
    10:
    End With
    End If
    
    
    Private Sub CommandButton5_Click()
     Dim sh1 As Worksheet: Set sh1 = Worksheets("Data Base")
     Dim beta, delta, teta, lamda
        beta = UserForm1.ComboBox1.Text
        delta = UserForm1.ComboBox2.Text
        teta = UserForm1.ComboBox3.Text
        lamda = UserForm1.ComboBox4.Text
        Sheets("Ricerca").Range("A1").Value = beta
        Range("A1").Select
        Selection.AutoFilter
        sh1.Range("$A$1:$E$177").AutoFilter Field:=1, Criteria1:=beta
        sh1.Range("$A$1:$E$177").AutoFilter Field:=2, Criteria1:=delta
        sh1.Range("$A$1:$E$177").AutoFilter Field:=3, Criteria1:=teta
        sh1.Range("$A$1:$E$177").AutoFilter Field:=4, Criteria1:=lamda
        Sheets("Data Base").Select
    Range("A1").Offset(1, 0).Select
    TextBox9 = ActiveCell.Value
    TextBox10 = ActiveCell.Offset(0, 1).Value
    TextBox11 = ActiveCell.Offset(0, 2).Value
    TextBox12 = ActiveCell.Offset(0, 3).Value
    TextBox13 = ActiveCell.Offset(0, 4).Value
    TextBox5 = ActiveCell.Offset(0, 5).Value
    TextBox6 = ActiveCell.Offset(0, 6).Value
    TextBox7 = ActiveCell.Offset(0, 7).Value
    TextBox8 = ActiveCell.Offset(0, 8).Value
    TextBox3 = ActiveCell.Offset(0, 9).Value
    TextBox4 = ActiveCell.Offset(0, 10).Value
    End Sub



  • di trump61 data: 06/12/2015 19:42:20

    Sono sempre io diciamo, che la parte che riguarda il selezionare la prima cella dei dati filtrati l'ho risolta in un modo vergognoso che evito di raccontare, però non riesco a trovare niente che mi toglie questo dubbio se posso o no usare i criteri di ricerca non tutti insieme. Vorrei se voglio filtrare solo con il primo criterio o con i primi due , o con i primi tre, o tutti. non trovo niente che mi renda chiaro l'uso di Autofilter



  • di trump61 data: 08/12/2015 20:06:50

    L'ho risolta in altro modo, usando AdvancedFilter molto più adatto ale mie esigenze.

     
    Private Sub CommandButton5_Click()
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Data Base")
    Dim numrec As Long
    Dim alfa As Range
    Set alfa = sh1.Range("E2")
        sh1.Range("A2") = UserForm1.ComboBox1.Text
        sh1.Range("B2") = UserForm1.ComboBox2.Text
        sh1.Range("C2") = UserForm1.ComboBox3.Text
        sh1.Range("D2") = UserForm1.ComboBox4.Text
        alfa = UserForm1.ComboBox5.Text
    numrec = sh1.Range("A1").End(xlDown).Row
        sh1.Range("A1:K" & numrec).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=sh1.Range("A1:E2"), CopyToRange:=sh1.Range("L1:V1"), Unique:=False
     sh1.Range("L1").Offset(2, 0).Select
    TextBox9 = ActiveCell.Value
    TextBox10 = ActiveCell.Offset(0, 1).Value
    TextBox11 = ActiveCell.Offset(0, 2).Value
    TextBox12 = ActiveCell.Offset(0, 3).Value
    TextBox13 = ActiveCell.Offset(0, 4).Value
    TextBox5 = ActiveCell.Offset(0, 5).Value
    TextBox6 = ActiveCell.Offset(0, 6).Value
    TextBox7 = ActiveCell.Offset(0, 7).Value
    TextBox8 = ActiveCell.Offset(0, 8).Value
    TextBox3 = ActiveCell.Offset(0, 9).Value
    TextBox4 = ActiveCell.Offset(0, 10).Value
    End Sub