filtro 5 termini



  • filtro 5 termini
    di cristian68 (utente non iscritto) data: 15/07/2014 22:35:46

    Ciao Vecchio Frac
    Non so se ti ricordi ma circa un anno fà (purtroppo poi accantonato per problemi di lavoro) avevi iniziato ad aiutarmi per un filtro su 5 colonne in più fogli di uno stesso file, che poi in base alle parole filtrate, le righe della ricerca nei vari allegati venivano riportati su un foglio scheda, ora ti rimando il file di allora, se hai un momentino di tempo, per rivederlo, funziona più o meno nel senso che se ricerchi le 5 parole delle combobox dovrebbero risultare tutte le righe in cui sono presenti le parole e non solo una riga.
    Ti Ringrazio tanto per la disponibiltà.
    Cristian
    Una curiosità è c’è un manuale che possa aiutarmi a capire le varie codifiche del codice in maniera semplice.



  • di Vecchio Frac data: 16/07/2014 08:30:55

    Ciao Cristian,
    sì mi ricordo, purtroppo non è che abbia più molto tempo adesso.
    Se posso, me ne occupo volentieri.
    Invito tutti quelli che vogliono a collaborare per risolvere.
    Manuali? Google e forum aiutano tanto, tutorial ce ne sono in rete, con un po' di pazienza ne trovi, c'è del materiale anche sul nostro forum; anche la guida (premendo F1) è una buona fonte, per il resto tanto esercizio.





  • di Vecchio Frac data: 16/07/2014 08:37:15

    Nei miei archivi c'è un file leggermente diverso.
    Lo riallego perchè è più completo ("cristian_filtro_5_18_05_2013 (vfrac3).rar").
    Tuttavia è passato del tempo... aiutami a capire cosa vuoi (un esempio concreto, basandoti sul file, per spiegare la frase "se ricerchi le 5 parole delle combobox dovrebbero risultare tutte le righe in cui sono presenti le parole e non solo una riga. ", anche a beneficio di altri).





  • di cristian68 (utente non iscritto) data: 16/07/2014 23:49:25

    ciao
    provo a spiegarmi un pò meglio,
    se nelle 5 combobox inseriamo i termini vegetali, abies, conifere, alveari, america,
    dovrebbero risultare sul foglio scheda per ogni allegato 5 righe, im quanto 1 di questi termni è in ogni riga di ogni foglio con il nome All_ .
    grazie.
    cristian



  • di Raffaele_53 (utente non iscritto) data: 18/07/2014 14:59:06

    Mi ricordo il post dei 3 filtri.
    Ho letto parte del post dei 5 filtri

    Se non erro c'era anche delle combinazioni che non ricordo bene.
    Immettevi una parola, se presente in una qualsiasi cella copiavi la riga
    Immettevi due parole, se erano presenti tutti due copiavi la riga
    Immettevi tre parole, se erano presenti tutti tre copiavi la riga
    Immettevi 4 parole, non ricordo
    Immettevi 5 parole, non ricordo


    Ps, ricerca Parole-esatte oppure parte di una Parola?



  • di cristian68 (utente non iscritto) data: 18/07/2014 19:44:02

    Ciao Raffaele_53
    questo era un tentativo di modifica di quel sistema di ricerca che avevi creato tu, solo che le parole da ricercare erano sulla prima colonna (A), il fatto di scegliere 5 colonne, è per spartire un pò i termini.
    il termine della 1ª combobox si posiziona in A3 del foglio "scheda" si lega alla 2ª e si posiziona B3, la1 si lega ancora con la combobox 3 e si posiziona in C3, la combobox 4 si posiziona in D3 senza legarsi a niente.
    e da queste posizioni inizia la ricerca dai vari allegati.

    Per la ricerca delle parole, è la parola esatta.

    grazie
    cristian




  • di Raffaele_53 (utente non iscritto) data: 18/07/2014 20:15:07

    >>>il fatto di scegliere 5 colonne, è per spartire un pò i termini.
    Questo non desideravo leggerlo, perchè non dice assolutamente nulla.

    Ricominciamo da zero.
    Scrivi una sola parola (cosa deve fare...?). La ricerca solo nella cella in colonna A oppure in tutte le celle della riga?
    Scrivi due parole, queste due parole devono essere in un'unica cella oppure basta che siano nella riga in celle diverse? "Magari intendi dire che la 1 parola deve essere in colonna A, la 2 parola deve essere in colonna B???
    ecc ecc anche se scrivi tre parole

    Oltre al fatto che hai la possibilità di scrivere da 1 a 3 parole, non mi ricordo le condizioni d'utilizzo per la 4 parola, anche per la 5 parola.



  • di cristian68 (utente non iscritto) data: 19/07/2014 22:57:56

    Ciao Raffaele_53
    Intanto ti ringrazio per la disponibilità, e provo a spiegarmi meglio,
    il termine della combobox1 (seconda colonna del foglio elenco esempio vegetali prende la vdp) si unisce al termine tot, e si posiziona nella cella A3 del foglio scheda
    il termine della combobox1 si unisce al termine della combobox2, e si posiziona nella cella B3 del foglio scheda
    il termine della combobox1 si unisce al termine della combobox3, e si posiziona nella cella C3 del foglio scheda
    il termine della combobox4, e si posiziona nella cella D3 del foglio scheda
    il termine della combobox5, e si posiziona nella cella E3 del foglio scheda.
    I termini delle celle A3-B3-C3-D3-E3 nel foglio scheda sono i termini che vengono ricercati nelle rispettive colonne dei denominati allegati (All_.....)
    colonna A (A3 del foglio scheda), colonna B (B3 del foglio scheda), colonna C(C3 del foglio scheda), colonna D(D3 del foglio scheda), colonna E(E3 del foglio scheda),
    quando dalla ricerca dei termini viene trovato uno dei termini, si copia la riga nel foglio scheda, se i termini sono presenti in più colonne, nel foglio scheda, la riga è copiata una sola volta.
    Nella colonna B (dei fogli All_.....) potrebbero esserci più termini per cella divisi da una virgola, ma la ricerca è per un termine alla volta.
    Allego file in cui ho messo qualche appunto sul foglio scheda.
    Spero di essermi spiegato meglio, grazie ancora
    cristian



  • di Raffaele_53 (utente non iscritto) data: 20/07/2014 06:25:34

    >>>2° termine di ricerca = codice 1° dato + 2° dato
    >>>3° termine di ricerca = codice 1° dato + 3° dato

    >>>I termini delle celle A3-B3-C3-D3-E3 nel foglio scheda sono i termini che vengono ricercati nelle rispettive colonne dei denominati allegati (All_.....)
    ....nelle rispettive colonne....

    Ho tenuto conto solo dell'ultima frase.
    Copia incolla nell'userfom (tranne la parte relativa dei cerca(1,2,3,4,5)
     
    Private Sub avvia_ricerca()
    Dim foglio_scheda As Worksheet, foglio As Worksheet
    Dim cell As Range, area_dati As Range, c As Range, last_row As Long
    Dim i As Integer, r As Integer, Uriga As Long, n As Long, Tot As Long, x As Long, rg As Long
    Dim cerca(1 To 5) As String, cerca2 As String, cerca3 As String, cerca4 As String, cerca5 As String
        
        Set foglio_scheda = Sheets("scheda")
        foglio_scheda.Activate
        Uriga = foglio_scheda.Range("A" & Rows.Count).End(xlUp).Row
        If Uriga >= 7 Then
            foglio_scheda.Range("A7:G" & Uriga).Clear
        End If
      
        cerca(1) = [merce].Find(ComboBox1).Offset(, 1) & "tot"                              '1° termine di ricerca = codice 1° dato + "tot"
        cerca(2) = [merce].Find(ComboBox1).Offset(, 1) & IIf(ComboBox2 = "vuoto", "", ComboBox2)      '2° termine di ricerca = codice 1° dato + 2° dato
        cerca(3) = [merce].Find(ComboBox1).Offset(, 1) & IIf(ComboBox3 = "vuoto", "", ComboBox3)    '3° termine di ricerca = codice 1° dato + 3° dato
        cerca(4) = IIf(ComboBox4 = "vuoto", "", ComboBox4)                                          '4° termine di ricerca = 4° dato
        cerca(5) = IIf(ComboBox5 = "vuoto", "", ComboBox5)                                          '5° termine di ricerca = 5° dato
        
        For i = 1 To 5
            Cells(3, i) = cerca(i)
        Next
        
        If [COUNTA(A3:E3)] = 0 Then
            MsgBox "Non hai inserito alcun termine di ricerca!", vbInformation, "Fine della procedura"
            Exit Sub
        End If
        
        Application.ScreenUpdating = False
    
        last_row = 7
    
        For Each foglio In Worksheets   'passa in esame foglio per foglio
    
            If LCase(Left(foglio.Name, 4)) = "all_" Then        'ma considera solo i fogli che iniziano con "all_"
                Uriga = foglio.Range("F" & Rows.Count).End(xlUp).Row
                'copia l'intestazione del foglio corrente
                foglio.[A1].Copy foglio_scheda.Cells(last_row, 1)
                last_row = last_row + 2
                foglio.[F3:H3].Copy foglio_scheda.Cells(last_row, 1)
                last_row = last_row + 1     'si posiziona sulla prima riga vuota
                r = 0
                For i = 1 To 5
                    n = 64 + i
                    If cerca(i) <> "" Then
                    'MsgBox (Chr$(n) & "3:" & Chr$(n) & Uriga)
                        Tot = Application.WorksheetFunction.CountIf(foglio.Range(Chr$(n) & "3:" & Chr$(n) & Uriga), "*" & cerca(i) & "*")
                        rg = 3
                        For x = 1 To Tot
                            Set area_dati = foglio.Range(Chr$(n) & rg & ":" & Chr$(n) & Uriga)
                            Set c = area_dati.Find(cerca(i), lookat:=xlPart) 'LookAt:=xlWhole 'xlPart
                            If Not c Is Nothing Then
                                r = c.Row ': Exit For
                                rg = r + 1
                                foglio.Range(foglio.Cells(r, "F"), foglio.Cells(r, "H")).Copy foglio_scheda.Cells(last_row, 1)
                                last_row = last_row + 1
                            End If
                        Next x
                    End If
                Next i
                last_row = last_row + 3
            End If
        Next
    
        Application.ScreenUpdating = True
    Set foglio = Nothing
    Set foglio_scheda = Nothing
    Set area_dati = Nothing
    End Sub



  • di cristian68 (utente non iscritto) data: 20/07/2014 21:23:23

    grazie Raffaele_53
    adesso lo provo
    cristian