Sviluppare funzionalita su Microsoft Office con VBA Macro VBA ricerca da lista parole chiavi ed evidenzia in altro foglio Excel.

LoginRegistrati
Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
  • Autore
    Articoli
  • #23416 Risposta

    Salve a Tutto il magnifico Forum. Mi sto affacciando a questo fantastico mondo di VBA e relative macro.
    Ho una necessità di espletare delle operazioni da una maschera VBA e vorrei animare un Pulsante con un Click e assegnarli una determinata Macro ma non riesco a venirne fuori; per questo mi rivolgo a voi esperti.
    Ho 2 fogli Excel.
    Nel 1° foglio chiamato "Parole Chiavi" , ho 3 colonne (A - B - C) dove inserisco rispettivamente parole chiavi (che di tanto in tanto vado ad incrementare) divise per argomento nelle 3 colonne. Intestazioni:(Colonna A - Rosso) (Colonna B - Giallo) (Colonna C - Verde)
    Nel 2° foglio Excel chiamato "Testo", dovrei effettuare nella Colonna "F" con intestazione "TESTO" (contenente testo lungo composto da lettere numeri e simboli), una ricerca delle parole chiavi contenute nel 1° foglio Excel "Parole Chiavi", ed evidenziare nella colonna "F", la parola rintracciata oppure la riga intera del campo "F"(a voi la scelta cmq se facile specificare le stringhe possibili da inserire come variante), colorandola di:
    ROSSO, se la parola chiave è in elenco nella colonna "A" del foglio "Parole chiavi";
    GIALLO, se la parola chiave è in elenco nella colonna "B" del foglio "Parole chiavi";
    VERDE, se la parola chiave è in elenco nella colonna "C" del foglio "Parole chiavi";
    Quindi ricapitolando per chiarire: Nel 1° foglio "Parole chiavi", sono contenute tante parole da ricercare suddivise in 3 colonne a seconda dell'argomento e il 2° foglio denominato Testo" (foglio di targeting), dove bisogna rintracciare e colorare nella colonna "F", le parole chiavi evidenziandole del colore ROSSO, GIALLO o VERDE a seconda di quale colonna ne fanno parte.
    Spero possiate aiutarmi poichè mi aiuterebbe nell'individuare i testi che sono interessati dalle tante parole chiavi facendomi risparmiare una marea di tempo. E' una settimana che sto provando ma non riesco.
    Un saluto.

    #23417 Risposta
    Marius44
    Marius44
    Moderatore
      19 pts

      Ciao

      Non sarebbe il caso di allegare, visto che già lo hai, il tuo file ed evitare, a chi volesse aiutarti, di costruirselo, magari sbagliando?

       

      Ciao,

      Mario

      #23420 Risposta
      PMC77
      PMC77
      Partecipante
        6 pts

        Concordo pienamente con Maruis44!

        #23436 Risposta

        Salve a tutti. Ringrazio Marius44 e PMC77 per avermi fatto notare che allegare files aiuta a chi si offre gentilmente di aiutare. E' la prima volta che mi rivolgo su un Forum e non ho esperienza. Ho creato due file di esempio ma che possono essere usati per approcciare una soluzione. Ovviamente vi ringrazio anticipatamente dell'interessamento.

         

        Allegati:
        You must be logged in to view attached files.
        #23729 Risposta

        Salve ragazzi. Qualche idea su come riuscire nell'intento? 

        #23730 Risposta
        patel
        patel
        Moderatore
          37 pts

          ercolanisimonyahoo-it ha scritto:

          E' una settimana che sto provando ma non riesco.

          cosa hai provato ?

          #23788 Risposta
          albatros54
          albatros54
          Moderatore
            50 pts

            tu parli di  di due fogli excel , pera hai allegato due file, uno con il foglio testo e un con le parole da ricercare.

            ti allego queste poche righe di codice, ma devi copiare il foglio che si trova nel file parole da cercare nel file testo.

            il codice funziona per lo schema dei due fogli, se cambi schema devi modificare il codice.

            il codice che ti posto serve ad evidenziare le parole in rosso, per gli altri colori, lascio a te il compito di continuare,nel codice vedrai che prim dell'uscita della sub , ci sono due chiamate ad altre sub che sono commentate, lascio a te il compito di capire il perche del commento  

            Sub rosso()
            'post #23416
                Set shparolechiavi = Sheets("foglio2")
                Set shtesto = Sheets("Foglio1")
                With shtesto
                    finalrow = .Cells(Rows.Count, 6).End(xlUp).Row
                    Set rngtesto = .Range("f1:f" & finalrow)
                End With
                With shparolechiavi
                    Finale = .Cells(Rows.Count, 1).End(xlUp).Row
                    Set rngparole = .Range("a2:a" & Finale)
                End With
                For Each cl In rngparole
                    For Each gl In rngtesto
                        trovato = InStr(gl, cl)
                        If trovato <> 0 Then
                            gl.Offset(0, -5).Select
                            ActiveCell.Resize(1, 6).Interior.ColorIndex = 3
                        End If
                    Next
                Next
                'giallo
                'verde
            End Sub
            

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #23794 Risposta

            Buona sera a tutti. Un meritato applauso ad ALBATROS54, il quale in modo geniale, non solo ha risolto il problema ma lo ha fatto anche con uno script corto e snello. Grazie tantissimo sembra funzionare alla grande. Ho notato che trova ed evidenzia tutte le parole scritte con lo stesso stile, ovvero minuscole con le minuscole e capitali con capitali; se volessi aggiungere al tuo geniale script, il modo di rintracciare le parole indistintamente se scritte in minuscolo o maiuscolo oppure con la prima maiuscola e le altre in minuscolo (ossia ignorare se maiuscole o minuscole importante la parola), hai un suggerimento?  Grazie ancora per avermi risolto il rebus.

            #23803 Risposta
            PMC77
            PMC77
            Partecipante
              6 pts

              Ciao!

              Puoi usare nel confronto la funzione "UCase" in entrambe le celle in modo da non fare differenza fra maiuscole e minuscole!

              Paolo

              #23812 Risposta
              albatros54
              albatros54
              Moderatore
                50 pts

                ciao, la soluzione proposta da paola(saluto) è valida, pero nel nostro caso , se trasforma tutto in maiuscolo la riga di codice

                gl.Offset(0, -5).Select

                non va , quindi ho usato la funzione di vba FILTER, che fa un confronto di tutti i termini che compongono una frase(li spitta, crea una matrice)con il valore che gli passiamo facendo un confronto di tipo "vbTextCompare", che ritorna true a prescindere di come è formattata la frase o il valore da ricercare.

                L'appetito vien mangiando, ti posto il codice modificato, con qualche riga in piu, seguendo sempre lo schema del tuo file, che ti colora le varie righe in base al colore che è scritto nella colonna che corrisponde al colore,studialo cosi lo pui espandere per le tue esigenze.

                Sub totalecolori()
                'post #23416
                    Dim shparolechiavi As Worksheet, shtesto As Worksheet
                    Dim finalrow As Integer, Finalerosso As Integer, Finalegiallo As Integer, Finaleverde As Integer
                    Dim rngtesto As Range, rngparole1 As Range, rngparole2 As Range, rngparole3 As Range, totalebig As Range
                    Dim cl As Object, gl As Object
                    Dim d As Integer
                    Dim clucase As String, glucase As String
                    Dim matricetesto As Variant
                    Dim trovato As Variant, trovatobis As Variant
                    Set shparolechiavi = Sheets("foglio2")
                    Set shtesto = Sheets("Foglio1")
                    With shtesto
                        finalrow = .Cells(Rows.Count, 6).End(xlUp).Row
                        Set rngtesto = .Range("f1:f" & finalrow)
                    End With
                    With shparolechiavi
                        Finalerosso = .Cells(Rows.Count, 1).End(xlUp).Row
                        Set rngparole1 = .Range("a2:a" & Finalerosso)
                        Finalegiallo = .Cells(Rows.Count, 2).End(xlUp).Row
                        Set rngparole2 = .Range("b2:b" & Finalegiallo)
                        Finaleverde = .Cells(Rows.Count, 3).End(xlUp).Row
                        Set rngparole3 = .Range("c2:c" & Finaleverde)
                    End With
                    Set totalebig = Union(rngparole1, rngparole2, rngparole3)
                    For Each cl In totalebig
                        For Each gl In rngtesto
                            matricetesto = Split(gl)
                            trovato = Filter(matricetesto, cl, True, vbTextCompare)
                            trovatobis = Join(trovato)
                            d = cl.Column
                            If trovatobis <> "" Then
                                Select Case d
                                Case 1
                                    gl.Offset(0, -5).Select
                                    ActiveCell.Resize(1, 6).Interior.ColorIndex = 3
                                Case 2
                                    gl.Offset(0, -5).Select
                                    ActiveCell.Resize(1, 6).Interior.ColorIndex = 6
                                Case 3
                                    gl.Offset(0, -5).Select
                                    ActiveCell.Resize(1, 6).Interior.ColorIndex = 4
                                End Select
                
                            End If
                        Next
                    Next
                End Sub

                 

                Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                Sempre il mare, uomo libero, amerai!
                ( Charles Baudelaire )
                #23816 Risposta

                Ciao a tutto il Magnifico Forum. Di nuovo un GRAZIE ad ALBATROS54 che il un lampo ha rimodulato lo Script andando nuovamente a target. Funziona benissimo. Grazie anche a tutti coloro che si stavano prodigando per la soluzione.

                GRAZIE.

              LoginRegistrati
              Stai vedendo 11 articoli - dal 1 a 11 (di 11 totali)
              Rispondi a: Macro VBA ricerca da lista parole chiavi ed evidenzia in altro foglio Excel.
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni:



              vecchio frac - 2750 risposte

              albatros54
              albatros54 - 940 risposte

              patel
              patel - 817 risposte

              Marius44
              Marius44 - 708 risposte

              Luca73
              Luca73 - 624 risposte