Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 30 di 37

Discussione: Aiuto per modificare/migliorare una Macro su Excel



  1. #1
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Aiuto per modificare/migliorare una Macro su Excel

    Ciao e ben ritrovati a tutti.

    Qualche tempo fa avevo scritto sul forum chiedendo aiuto per creare una Macro che mi aiutasse a comparare due elenchi complessi (chiamiamoli Matrice e week) su due fogli distinti che chiamiamo per semplicità con lo stesso nome, restituendo nel secondo elenco (week), accanto ad ogni valore, il relativo match del primo elenco (Matrice).
    I nomi degli elenchi sono complessi e ricchi di caratteri speciali e gli elenchi molto lunghi, circa 1000 righe ciascuno.
    Salvatore mi aveva aiutato tantissimo ed era riuscito a trovare una soluzione notevole. Lo ringrazio ancora tanto.
    Sfortunatamente, a distanza di tempo mi sono resa conta di alcune limitazioni da una parte, e di aver bisogno di implementare nuove funzioni dall'altra.
    Ho però un problema a condividere i file su cui lavoro, perchè non posso farlo pubblicamente per ragioni di sicurezza e quindi ho bisogno, se è necessario lavorare sui dati specifici di relazionarmi anche in privato con qualcuno.
    La situazione attuale è che la Macro funziona, ma al momento riesce a restituire solo il primo valore che trova nell'elenco Matrice, mentre gli altri eventuali match non li considera.

    Io avrei bisogno che una volta trovato il primo match, escludesse quest'ultimo dalla ricerca e riprendesse a cercare, restituendo ogni risultato nelle celle a fianco al relativo valore nel foglio week fino a quando non trova più nessun match.

    Questo loop (si chiama così?) si deve ripetere per ogni valore dell'elenco week, contro tutti i valori dell'elenco Matrice.

    Nella macro attuale, oltre a trovare e restituire il match, viene anche copiato il valore nella cella a fianco al valore trovato in Matrice: questa cosa dovrrebbe estendersi ad una ulteriore cella.
    Inoltre, per gestire in maniera congrua i risultati (per un valore nel foglio week, si potrebbero generare anche 10/15 match dal foglio Matrice con relative due/tre caselle affiancate da trasporre) sarebbe forse meglio, se fosse possibile, che per ogni match e relativi valori associati,  la Macro inserisse una nuova riga sotto il relativo valore nel foglio week, magari con sfondo colorato in maniera che sia immediatamente identificabile come risultato.

    A me sembra una cosa davvero tanto complessa da spiegare, forse poi operativamente lo è meno... Spero tanto che si possa risolverla.

    Non so se sono stata sufficientemente chiara, sarebbe più facile discuterne guardano il file, i risultati attuali quelli che desidererei ottenere, magari potendo parlarsi e condividendo lo schermo, ma immagino che non sia possibile.

    Se qualcuno fosse disponibile a provare a lavorare partendo dalla Macro di Salvatore, mi faccia sapere se basta copiare la Macro o se serve il file, nel qual caso, come dicevo, lo invierei separatamente.

    Grazie dell'attenzione e buona giornata,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  2. #2
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    1995
    Versione Office
    2007 - 2013
    Mi Piace ricevuti
    249
    Mi Piace dati
    38

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao Alice

    Dal tuo profilo vedo che questo è il tuo primo messaggio qui per cui se ti riferisci ad aiuti ricevuti in passato probabilmente hai ricevuto supporto su altro forum (e d'altra parte non mi risulta che qui ci sia qualcuno di nome Salvatore).

    Venendo al tuo problema il regolamento vieta lo stabilire contatti privati tra utenti per la risoluzione di problemi relativi ad Excel ma il tutto deve avvenire sul forum in ossequio allo spirito di condivisione che lo anima.

    Ovvio che la macro da sola non serve quasi a nulla se non si ha a disposizione lo scenario (il file) entro quale deve operare per cui l'unica cosa che mi sento di consigliarti è quella di cercare di ricreare il tuo file (senza dati sensibili, in misura ridotta) e di allegarlo qui insieme alla macro e si cercherà di trovare una soluzione.

    Spero che tu non interpreterai questa mia risposta come un rifiuto ma il forum ha le sue regole che, ovviamente, devono essere rispettate.
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"
    Cit. Berna11: "Se ti piace la risposta di qualcuno, oltre a ringraziarlo, puoi cliccare su "Mi Piace" in basso a sinistra del loro messaggio."

  3. #3
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao Alfredo,

    grazie per la tua risposta.

    Riguardo al forum, temo di avere fatto una gaff... preferisco che non indagare ulteriormente

    Riguardo invece alle tue osservazioni, le capisco, soprattutto ne capisco la ragionevolezza, credimi. Ho immaginato che l'esigenza del contatto "privato" potesse essere un problema ed è anche per questo che ho esposto la cosa chiaramente, per evitare fraintendimenti.
    Vengo da una realtà in cui ci si parla da una parte all'altra del mondo tramite un pc, si condivide lo schermo, si opera sugli stessi documenti contemporaneamente, in tempo reale, e questo forse mi rende un po' educata-male in tal senso. Mi scuso per questo.
    Devo essere onesta però e confessare che speravo tanto in un confronto diretto, dal vivo, per evitare complicazioni.

    Come ti dicevo, però, condivido le tue ragioni, le regole del forum e ti ringrazio per avermene parlato con pazienza.

    Riguardo alla difficoltà ad inviare un file senza i valori sensibili, derivava dal fatto che quanto ci ho provato, in passato, poi la macro non funzionava proprio a causa della particolare "sintassi" di tali valori.
    Tuttavia, vista l'importanza che ha per me ottenere un risultato in questo senso, credo che valga assolutamente la pena di riprovarci cercando di creare valori fittizzi con sintassi simile a quella dei valori veri.

    Ti ringrazio ancora quindi: vado a lavorare sul file e poi torno.

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  4. #4
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    1995
    Versione Office
    2007 - 2013
    Mi Piace ricevuti
    249
    Mi Piace dati
    38

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Alice grazie per aver compreso lo spirito del mio post e poi condividendo avresti maggior possibilità di risposte che rivolgendoti ad un'unica persona.
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"
    Cit. Berna11: "Se ti piace la risposta di qualcuno, oltre a ringraziarlo, puoi cliccare su "Mi Piace" in basso a sinistra del loro messaggio."

  5. #5
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Di nuovo ciao a tutti.
    Ecco il file, con qualche modifica e con la macro attualmente utilizzata. Ho inserito alcuni commenti per cercare di essere più chiara possibile.
    Il file è strutturato in 3 fogli: il primo Matrix, è il foglio madre contro cui vanno confrontati tutti i nuovi fogli che via via si aggiungono,
    Il secondo foglio, week, è un tipico esempio dei dati che devo confrontare contro Matrix ed ha già illustrato il risultato della Macro attuale
    Il terzo foglio, non ha eseguito la macro ed è solo quello che vorrei ottenere.

    Non è un file su cui ho lavorato solo io, nel senso che a sua volta proviene da altre persone, ma riguardo ai dati contenuti non dovrebbero esserci problemi.

    Grazie e... attendo con trepidazione,


    alice
    File Allegati File Allegati
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  6. #6

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Scusami ma io nel foglio "week" vedo un solo confronto trovato (riga 12) e non 8 come hai scritto nel file.
    Quello che ho capito io è che deve trovare tutti i riferimenti uguali al foglio Matrix e deve scrivere nelle colonne C-D-E, e questo già lo fa' .

  7. #7
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao Rubik.
    Mmm... il foglio 'week' è quello con i risultati che ottengo lanciando la Macro che ho adesso.

    Come vedi, nonostante i match in realtà siano 8, utilizzando questa Macro ne trovo solo 1.

    Il foglio "cosa vorrei ottenere" invece non è il frutto di una Macro, ma è semplicemente quello che vorrei che la macro facesse davvero.

    Spero di non avere confuso le idee anzicchè chiarirle.

    Una buona giornata,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Se ho capito bene, prova questa routine:
    Codice: 
    Sub Find_Matches_2()
    'by Rubik72 07-10-2016
    Dim Wks1 As Worksheet
    Dim Wks2 As Worksheet
    Dim uRiga1 As Long
    Dim uRiga2 As Long
    Dim Testo1 As String
    Dim i As Long
    Dim j As Long
    
    
        Set Wks1 = Worksheets("Matrix")
        Set Wks2 = ActiveSheet
        If Wks1.Name = Wks2.Name Then Exit Sub
        Application.ScreenUpdating = False
        uRiga1 = Wks1.Range("A" & Rows.Count).End(xlUp).Row
        uRiga2 = Wks2.Range("A" & Rows.Count).End(xlUp).Row
        
        For i = uRiga2 To 2 Step -1
            Testo1 = Replace(Replace(Wks2.Range("B" & i).Value, "[", ""), "]", "")
            For j = 2 To uRiga1
                If InStr(1, Wks1.Range("B" & j).Value, Testo1, vbTextCompare) > 0 Then
                    Wks2.Rows(i + 1).Insert
                    Wks2.Range("C" & i + 1) = Wks1.Range("B" & j)
                    Wks2.Range("E" & i + 1) = Wks1.Range("A" & j)
                End If
                
                If InStr(1, Wks1.Range("C" & j).Value, Testo1, vbTextCompare) > 0 Then
                    Wks2.Rows(i + 1).Insert
                    Wks2.Range("D" & i).Value = Wks1.Range("C" & j)
                        Wks2.Range("G" & i).Value = Wks1.Range("A" & j)
                End If
            Next j
        Next i
    
    
            Wks2.Range("C:E").Columns.AutoFit
        
        Application.ScreenUpdating = True
                                                      
        MsgBox "Completed!"
        
        Set Wks1 = Nothing
        Set Wks2 = Nothing
    End Sub

  9. #9
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Grazie Rubrik, , funziona in parte!

    C'è qualche cosina da mettere a punto, però.

    Ho allegato un nuovo file dove ho inserito un nuovo foglio, chiamato "Risultati Nuova Macro" in modo che si possa vedere meglio l'esito della tua routine.

    Come vedi qualcosa non torna.

    Spero se ne possa venire a capo.

    Se guardi nel terzo foglio, quello chiamato "cosa vorrei ottenere", vedrai che oltre a trovare tutti i match possibili e portarsi dietro il valore corrispondente della colonna "Categoria", la routine dovrebbe portarsi dietro, per ogni match, anche i valori nelle colonne "DCODE", "CAS" e Smiles"del foglio "Matrix"

    Come ho scritto nella casella di testo che trovi nel foglio "cosa vorrei ottenere", tenendo come esempio il valore 'Tetradecane', in pratica, vorrei che:

    1) la Macro individuasse tutti e 8 i matches (magari con l'istruzione di ignorare quelli già trovati, non lo so...) cercando sia nella colonna B che nella colonna C del foglio Matrix (qui ci siamo in parte, perchè come vedi nel risultato della tua routine, i match sono un po' sfalsati anche se ci sono tutti)

    2) Nel foglio in cui verranno riportati i risultati, immediatamente sotto il valore per il quale si trova un match (in questo caso "Tetradecane"), ci fosse un inserimento di una riga nuova, per ogni match trovato, e tutti i match fossero nella stessa colonna, uno sotto l'altro, ad esempio nella colonna C (come in questo esempio)
    (I match andrebbero quindi riportati nella colonna "match" del foglio con i risultati, uno sotto l'altro)

    3) per ciascun match trovato oltre al match stesso (colonne B e C di Matrix) venissero trasposti anche i relativi valori nelle colonne A, D, E e F di Matrix, vale a dire i valori corripondenti a Category, DCode, CAS e Smiles (la trasposizione delle colonne D,E, e F deve essere creata, mentre quella della colonna A c'è già, anche se bisogna sistemare la destinazione)

    4) le righe nuove inserite sotto il valore, fossero riempite e formattate in grassetto o rosso (come ho fatto nell'esempio) per essere immediatamente riconoscibili (qui mi pare che ci siamo)

    Tutto questo lo vedi nel foglio "cosa vorrei ottenere" che non deriva dall'esecuzione della Macro ma è solo una rappresentazione del risultato desiderato

    Grazie ancora e buon fine settimana,

    alice
    File Allegati File Allegati
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  10. #10

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    Grazie Rubrik, [...]
    Semplicemente Rubik

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    [...]
    1) la Macro individuasse tutti e 8 i matches (magari con l'istruzione di ignorare quelli già trovati, non lo so...) cercando sia nella colonna B che nella colonna C del foglio Matrix (qui ci siamo in parte, perchè come vedi nel risultato della tua routine, i match sono un po' sfalsati anche se ci sono tutti)
    [...]
    Io ne vedo solo 4 di match infatti se guardi nel foglio "cosa vorrei ottenere" nel range(C17:C20) non trovo la descrizione "TETRADECANE" ma tutt'altro.
    Come potrebbe la macro fare un confronto nel foglio Matrix cercando "TETRADECANE" e scrivere "4decane", "Tredecaneodoatino", "OssiTredecane", ecc. ???.
    Chiarito questo punto il resto è in discesa

  11. #11
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao RUBIK

    Che stupida! Ho fatto confusione perchè ero partita con un nome (tridecane) e poi ne ho usato un altro (tetradecane)

    Scusa... settimana davvero pesante, quella appena passata.

    Ho provato a sistemare il file, per vedere tutti e 8 i risultati che ti elencavo e non so come mai, adesso la routine mi ricopia tuuuuutti i valori della colonna B di Matrix, e, come vedi, non una volta sola...

    Io nella macro non ho cambiato nulla, non so cosa sia successo.

    Hai ancora un po' di pazienza? Spero che almeno i dati del file stavolta siano a posto.

    Grazie e buona giornata,

    alice
    File Allegati File Allegati
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  12. #12

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Prova con questa routine:
    Codice: 
     Sub Find_Matches_3()
    '*************************
    '* by Rubik72 10-10-2016 *
    '*************************
    Dim Wks1 As Worksheet
    Dim Wks2 As Worksheet
    Dim uRiga1 As Long
    Dim uRiga2 As Long
    Dim Testo1 As String
    Dim i As Long
    Dim j As Long
    
    Set Wks1 = Worksheets("Matrix")
    Set Wks2 = ActiveSheet
    If Wks1.Name = Wks2.Name Then Exit Sub
    Application.ScreenUpdating = False
    uRiga1 = Wks1.Range("A" & Rows.Count).End(xlUp).Row
    uRiga2 = Wks2.Range("A" & Rows.Count).End(xlUp).Row
        
    With Wks2
        For i = uRiga2 To 2 Step -1
            Testo1 = Replace(Replace(.Range("B" & i).Value, "[", ""), "]", "")
            For j = 2 To uRiga1
                If InStr(1, Wks1.Range("B" & j).Value, Testo1, vbTextCompare) > 0 Then
                    .Rows(i + 1).Insert
                    .Range("B" & i + 1 & ":G" & i + 1).Interior.ColorIndex = 6
                    .Range("B" & i + 1) = "Match"
                    .Range("B" & i + 1).Font.ColorIndex = 3
                    .Range("C" & i + 1) = Wks1.Range("B" & j)
                    .Range("D" & i + 1) = Wks1.Range("A" & j)
                    .Range("E" & i + 1) = Wks1.Range("D" & j)
                    .Range("F" & i + 1) = Wks1.Range("E" & j)
                    .Range("G" & i + 1) = Wks1.Range("F" & j)
                End If
                
                If InStr(1, Wks1.Range("C" & j).Value, Testo1, vbTextCompare) > 0 Then
                    .Rows(i + 1).Insert
                    .Range("B" & i + 1 & ":G" & i + 1).Interior.ColorIndex = 6
                    .Range("B" & i + 1) = "Match"
                    .Range("B" & i + 1).Font.ColorIndex = 3
                    .Range("C" & i + 1) = Wks1.Range("C" & j)
                    .Range("D" & i + 1) = Wks1.Range("A" & j)
                    .Range("E" & i + 1) = Wks1.Range("D" & j)
                    .Range("F" & i + 1) = Wks1.Range("E" & j)
                    .Range("G" & i + 1) = Wks1.Range("F" & j)
                End If
            Next j
        Next i
    
    
        Wks2.Range("C:G").Columns.AutoFit
        
    End With
    
    Application.ScreenUpdating = True
                                                      
    MsgBox "Completed!"
        
    Set Wks1 = Nothing
    Set Wks2 = Nothing
    End Sub
    Inviato dal mio GT-I9301I utilizzando Tapatalk
    Ultima modifica fatta da:cromagno; 10/10/16 alle 18:17

  13. #13
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao Rubik,
    grazie dell'aiuto.
    Purtroppo la routine mi restituisce ancora tutti, proprio tutti i valori della colonna dentro cui deve cercare anzicchè i soli match... e inoltre la ripete all'infinito. Infatti non riesco ad allegare il file con la nuova macro perchè è diventato troppo pesante.

    Non so...

    Credi che si possa risolvere?

    Grazie della pazienza,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  14. #14

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    [...]
    Credi che si possa risolvere?
    [...]
    Sicuramente si

    Sul file che mi hai allegato la routine funziona.
    Il tuo file da quanti record è formato?
    I Campi sono disposti alla stessa maniera?
    Cosa intendi per
    mi restituisce tutti, proprio tutti
    inserisce righe all'infinito e si blocca?

    Cerca di allegare un file quanto più simile all'originale.

  15. I seguenti utenti hanno dato un "Mi Piace"


  16. #15
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Buondì Rubik!

    Ho capito, almeno credo, dove stia il problema.
    La tua ultima routine funziona bene, l'unico intoppo è che se trova una riga vuota nell'elenco da confrontare (i fogli diversi da Matrix), sotto quella riga vuota ricopia tutti i valori di Matrix come fossero dei match.

    Nel file che ho allegato, il secondo foglio "Routine non eseguita" riporta solo i valori da confrontare, per mostrarti dove sono le righe vuote che io ho riempito in BLU.
    Nel terzo foglio "Routine eseguita" trovi il risultato della routine e puoi vedere come sotto le righe blu (che erano quelle vuote nell'elenco) siano stati riportati, come se fossero dei match, tutti i valori del foglio Matrix.

    A parte questo, per il resto funziona benissimo

    In effetti che può capitare che in un elenco lungo come quelli che di solito uso, ci siano delle righe vuote.

    Aspetto fiduciosa...

    Grazie grazie!!!

    Buona giornata,

    alice
    File Allegati File Allegati
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  17. #16
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Scusa Rubik,

    se agguingo carne al fuoco, immagino che ancora non hai neanche visto la mia risposta precedente.

    Tuttavia, lavorando un po' sul file ho realizzato di avere bisogno di un'altra cosa... e mi chiedo se non sia meglio farla presente adessso.

    Se io volessi fare la stessa cosa che faccio confrontando le colonne B dei due fogli (Matrix e i vari fogli nuovi) ma utilizzando per il confronto una colonna diversa, sarebbe tanto complicato cambiare la Macro?

    Quello che voglio dire è che se per caso avessi bisgno di utilizzare come criterio di ricerca la colonna DCode (oppure la CAS opppure la Smiles) di ogni nuovo foglio, contro la colonna DCode (oppure rispettivamente, la CAS o la Smiles) di Matrix, in maniera che siano qui i match da cercare, sarebbe tanto complicato cambiare la routine?

    IL punto è che ho realizzato che mi può succedere di avere bisogno di verificare il DCode o il CAS anzicchè il nome, perchè magari il nome non c'entra niente ma questi altri paramentri possono coincidere.
    Anche in questi casi avrei bisogno però che il match si portasse dietro i valori correlati a tutta la riga in cui si trova.

    Questa "variante" non dovrebbe sostituire la precedente, ma vorrei solo averla disponibile da utilizzare in modo che se mi servisse confrontare anzicchè le colonne B, altre colonne, fosse possible.

    Al momento le colonne sul foglio Matrix non coincidono perfettamente con quelle sui fogli nuovi, nel senso che in Matrix sono D,E,F , e nel foglio da confrontare sono E,F,G. Se è necessario posso modificare il file.

    Se riuscissi ad interpretare la sintassi della macro, forse potrei farlo anche vio, visto che si tratta di cambiare i riferimenti, non la macro di per sè. Sbaglio?

    Mmm... a volte mi sembra di parlare ostrogoto. Ho timore di risultare incomprensbile... se è così, per favore, abbi pazienza, proverò a spiegare meglio.

    Grazie ancora,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  18. #17

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    se ho capito bene la richiesta, prova con questa routine che ti da la possibilità di scegliere il campo da cui cercare:
    Codice: 
    Sub Find_Matches_4()
    '*************************
    '* by Rubik72 11-10-2016 *
    '*************************
    Dim Wks1 As Worksheet
    Dim Wks2 As Worksheet
    Dim uRiga1 As Long
    Dim uRiga2 As Long
    Dim Testo As String
    Dim i As Long
    Dim j As Long
    Dim Criterio As String
    Dim Campo1 As String
    Dim Campo2 As String
    Dim Campo3 As String
    
    
    Set Wks1 = Worksheets("Matrix")
    Set Wks2 = ActiveSheet
    If Wks1.Name = Wks2.Name Then Exit Sub
    Application.ScreenUpdating = False
    uRiga1 = Wks1.Range("A" & Rows.Count).End(xlUp).Row
    uRiga2 = Wks2.Range("A" & Rows.Count).End(xlUp).Row
    
    
    Criterio = InputBox("Inserire il campo da cercare" & Chr(13) & "1 - Descrizione" _
        & Chr(13) & "2 - DCode" & Chr(13) & "3 - CAS" & Chr(13) & "4 - Smiles", "Criterio ricerca", 1)
    
    
    If Asc(Criterio) < 49 Or Asc(Criterio) > 52 Then
        MsgBox "Scelta errata", vbInformation, "ATTENZIONE"
        Exit Sub
    End If
    
    
    Select Case Criterio
        Case 1
            Campo1 = "B"
            Campo2 = "B"
        Case 2
            Campo1 = "E"
            Campo2 = "D"
        Case 3
            Campo1 = "F"
            Campo2 = "E"
        Case 4
            Campo1 = "G"
            Campo2 = "F"
    End Select
    Campo3 = "C"
    
    With Wks2
        For i = uRiga2 To 2 Step -1
            Testo = Replace(Replace(.Range(Campo1 & i).Value, "[", ""), "]", "")
            If Len(Testo) > 0 Then
                For j = 2 To uRiga1
                    If InStr(1, Wks1.Range(Campo2 & j).Value, Testo, vbTextCompare) > 0 Then
                        .Rows(i + 1).Insert
                        .Range("B" & i + 1 & ":G" & i + 1).Interior.ColorIndex = 6
                        .Range("B" & i + 1) = "Match"
                        .Range("B" & i + 1).Font.ColorIndex = 3
                        .Range("C" & i + 1) = Wks1.Range("B" & j)
                        .Range("D" & i + 1) = Wks1.Range("A" & j)
                        .Range("E" & i + 1) = Wks1.Range("D" & j)
                        .Range("F" & i + 1) = Wks1.Range("E" & j)
                        .Range("G" & i + 1) = Wks1.Range("F" & j)
                    End If
                    If InStr(1, Wks1.Range(Campo3 & j).Value, Testo, vbTextCompare) > 0 Then
                        .Rows(i + 1).Insert
                        .Range("B" & i + 1 & ":G" & i + 1).Interior.ColorIndex = 6
                        .Range("B" & i + 1) = "Match"
                        .Range("B" & i + 1).Font.ColorIndex = 3
                        .Range("C" & i + 1) = Wks1.Range("C" & j)
                        .Range("D" & i + 1) = Wks1.Range("A" & j)
                        .Range("E" & i + 1) = Wks1.Range("D" & j)
                        .Range("F" & i + 1) = Wks1.Range("E" & j)
                        .Range("G" & i + 1) = Wks1.Range("F" & j)
                    End If
                Next j
            End If
        Next i
        Wks2.Range("C:G").Columns.AutoFit
    End With
    
    
    Application.ScreenUpdating = True
    
    
    MsgBox "Completed!"
    
    
    Set Wks1 = Nothing
    Set Wks2 = Nothing
    End Sub
    Ultima modifica fatta da:Rubik72; 12/10/16 alle 18:58

  19. I seguenti utenti hanno dato un "Mi Piace"


  20. #18
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao Rubik,

    scusa sa ma sono fuori per lavoro e non ho avuto modo di testare la nuova Macro. In ogni caso, grazie infinite per la tua disponibilità.
    Appena ho modo di provarla ti faccio sapere.
    A presto,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  21. #19
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Buongiorno Rubik.

    Ti chiedo scusa se ritorno solo adesso a darti un feedback (e non solo...perdonami da subito per la quantità di cose che troverai qui sotto) ma, come ti dicevo, ero fuori per lavoro e, inoltre, è un brutto momento per altre situazioni.
    Diciamo solo che quel poco tempo libero che ho lo passo in ospedale.
    In ogni caso, ho davvero bisogno di questa macro ben funzionante perchè, il lavoro si accumula, anche per i motivi di cui sopra, e i dati diventano davvero troppi.

    La tua nuova macro funziona benissimo ed è davvero grande, solo che non riesco a "traslarla" per le mie esigenze.

    Voglio dire che, alla fine nella realtà, le comparazioni che la macro deve eseguire sono:

    -foglio -Foglio
    Matrix Nuovo

    B - B 'Description 1'
    C - B 'Description 2'
    D - B 'Description 3'
    E - B 'Description 4'
    F - B 'Description 5'
    G - E 'Smiles'
    H - D 'casNO'

    Inoltre, ho bisogno di trovare subito non solo i match (che tu fai comparire con sfondo giallo) ma anche i valori originali nel foglio nuovo (che invece non sono colorati)

    Intendo: metti che nel mio foglio nuovo ho il valore PIPPO, che ha come match sul foglio Matrix PIPPO1, PIPPO2 e PIPPO3. Questi 3 match, grazie alla tua macro si inseriscono sotto PIPPO e sono colorati con sfondo giallo.
    Dopo avere eseguito la routine, per vedere tutti i match, trattandosi di migliaia di righe, filtro per il colore giallo e vedo in effetti i match, non vedo però il PIPPO originale, che è rimasto con sfondo incolore e per me diventa laborioso andare poi a trovare le righe corrispondenti una per una (alla fine a me interessa sapere non solo quali sono i match ma, per quale valore sono, perchè è questo valore il sospettato che devo controllare)

    Così ho cercato una macro che per tutte le righe gialle che trova, colori la riga immediatamente sopra dello stesso colore, così quando filtro per il giallo (in realtà io poi ho fatto viola) vedo anche il valore di riferimento che ha generato i match.

    HO trovato questa routine (non so scriverla come fate voi....:

    Codice: 
    Sub FormatRows()
    Dim lngLastRow As Long
    Dim l As Long
    Dim Rng As Range
    Application.ScreenUpdating = False
    With ActiveSheet 
    lngLastRow = .Range("A1048576").End(xlUp).Row 
    For l = 1 To lngLastRow
    
    Set Rng = .Range("A" & l + 1).EntireRow.Find(What:="Match", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext)
    
    If Not Rng Is Nothing Then 'if Match found
    
    .Range("A" & l).EntireRow.Interior.ColorIndex = 39 
    
    End If
    
    Next l
    End With
    Application.ScreenUpdating = True
    Set Rng = Nothing
    End Sub
    E l'ho inserita a seguire alla tua routine con l'istruzione CALL
    Ti riporto solo la parte finale:

    Codice: 
    Call FormatRows
    MsgBox "Completed!"
    Set Wks1 = Nothing
    Set Wks2 = Nothing
    End Sub
    Non so se è questo il problema, cioè avere aggiunto questa macro consecutiva, o se ho fatto qualcos'altro, ma succede anche con la routine precedente che mi hai inviato e che non ho modificato, fatto sta che è lentissima...
    Posso in qualche modo velocizzare il tutto.

    Non odiarmi... non è finita.

    Dal momento che a volte mi serve tornare indietro e vedere il tutto come era prima dell'esecuzione della macro, ho trovato una routine che crea il backup (la copia del foglio non lavorato con la macro) in automatico e ti da anche la possibilità poi di eleminarlo.

    Ora però non vorrei che anche questa routine mi complicasse tutto in termini di velocità, anche se resterebbe come Macro separata, in questo caso.

    La scrivo qui di seguito:

    Codice: 
    Copy sheet backup / remove backup
    
    Public backupSheet As Worksheet
    Public originalSheet As Worksheet
    Public originalSheetName As String
    
    Sub b_CreateBackup()
    Set originalSheet = Application.ActiveSheet
    originalSheetName = originalSheet.Name
    originalSheet.Copy After:=Sheets(Application.Worksheets.Count)
    Set backupSheet = Application.ActiveSheet
    backupSheet.Name = "backup"
    originalSheet.Activate
    End Sub
    Codice: 
    Sub d_RestoreBackup()
    Application.DisplayAlerts = False
    originalSheet.Delete
    backupSheet.Name = originalSheetName
    Application.DisplayAlerts = True
    End Sub
    Codice: 
    Sub Zeros()
    Range("A1:Z100").Select
    Cells.Value = 0
    End Sub
    Codice: 
    Sub Test()
    Call b_CreateBackup
    Call Zeros
    MsgBox "look at all those darn 0s!"
    Call e_RestoreBackup
    End Sub
    Non so se ci sono diritti di autore su queste robe, io le ho scopiazzate in giro... spero di non fare danni.

    Però è quello che mi servirebbe.

    Come posso fare per conciliare tutto quanto questo assieme senza rallentare tutto? Si può fare?

    Grazie mille e buon proseguimento di giornata,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  22. #20
    L'avatar di alfrimpa
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Napoli
    Età
    63
    Messaggi
    1995
    Versione Office
    2007 - 2013
    Mi Piace ricevuti
    249
    Mi Piace dati
    38

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Alice ti ricordo l'utilizzo dei TAG CODE per il codice.
    Alfredo

    "Non esistono cose facili o difficili; esistono cose che si sanno e cose che non si sanno"
    Cit. Berna11: "Se ti piace la risposta di qualcuno, oltre a ringraziarlo, puoi cliccare su "Mi Piace" in basso a sinistra del loro messaggio."

  23. #21
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ecco... non sapevo come si facesse :)

    Grazie Alfredo,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  24. #22
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Buongiorno.

    Volevo solo sapere se ho chiesto troppo. Mi rendo conto che potrebbe essere così.

    Grazie comunque,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  25. #23

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    Buongiorno Rubik.

    Ti chiedo scusa se ritorno solo adesso a darti un feedback (e non solo...perdonami da subito per la quantità di cose che troverai qui sotto) ma, come ti dicevo, ero fuori per lavoro e, inoltre, è un brutto momento per altre situazioni.
    Diciamo solo che quel poco tempo libero che ho lo passo in ospedale.
    In ogni caso, ho davvero bisogno di questa macro ben funzionante perchè, il lavoro si accumula, anche per i motivi di cui sopra, e i dati diventano davvero troppi.

    La tua nuova macro funziona benissimo ed è davvero grande, solo che non riesco a "traslarla" per le mie esigenze.

    Voglio dire che, alla fine nella realtà, le comparazioni che la macro deve eseguire sono:

    -foglio -Foglio
    Matrix Nuovo

    B - B 'Description 1'
    C - B 'Description 2'
    D - B 'Description 3'
    E - B 'Description 4'
    F - B 'Description 5'
    G - E 'Smiles'
    H - D 'casNO'

    [...]
    Il criterio di ricerca non coincide con il file postato in particolare G-E e H-D

    Visto che ti servono i dati filtrati, non sarebbe il caso di creare un nuovo foglio con i soli dati interessati?
    es.
    Codice: 
    Sub Find_Matches_5()
    '*************************
    '* by Rubik72 25-10-2016 *
    '*************************
    Dim Wks1 As Worksheet
    Dim Wks2 As Worksheet
    Dim uRiga1 As Long
    Dim uRiga2 As Long
    Dim Testo As String
    Dim i As Long
    Dim j As Long
    Dim Criterio As String
    Dim Campo1 As String
    Dim Campo2 As String
    Dim Campo3 As String
    Dim newSheet As Worksheet
    Dim Num As Long
    Dim a As Byte
    Dim Nome As String
    
    Set Wks1 = Worksheets("Matrix")
    Set Wks2 = ActiveSheet
    If Wks1.Name = Wks2.Name Then Exit Sub
    Application.ScreenUpdating = False
    uRiga1 = Wks1.Range("A" & Rows.Count).End(xlUp).Row
    uRiga2 = Wks2.Range("A" & Rows.Count).End(xlUp).Row
    
    Criterio = InputBox("Inserire il campo da cercare" & Chr(13) & _
                "1 - Descrizione" & Chr(13) & _
                "2 - DCode" & Chr(13) & _
                "3 - CAS" & Chr(13) & _
                "4 - Smiles", "Criterio ricerca", 1)
    
    If Asc(Criterio) < 49 Or Asc(Criterio) > 52 Then
        MsgBox "Scelta errata", vbInformation, "ATTENZIONE"
        Exit Sub
    End If
    
    Select Case Criterio
        Case 1
            Campo1 = "B"
            Campo2 = "B"
            Nome = "Descrizione"
        Case 2
            Campo1 = "E"
            Campo2 = "D"
            Nome = "DCode"
        Case 3
            Campo1 = "F"
            Campo2 = "E"
            Nome = "CAS"
        Case 4
            Campo1 = "G"
            Campo2 = "F"
            Nome = "Smiles"
    End Select
    Campo3 = "C"
    
    Set newSheet = Sheets.Add
    With newSheet
        .Move after:=Sheets(Sheets.Count)
        .Name = Nome
        For i = 2 To uRiga2
            Testo = Replace(Replace(Wks2.Range(Campo1 & i).Value, "[", ""), "]", "")
            If Len(Testo) > 0 Then
                For j = 2 To uRiga1
                    If InStr(1, Wks1.Range(Campo2 & j).Value, Testo, vbTextCompare) > 0 Then
                        Num = Num + 1
                        For a = 1 To 7
                            .Cells(Num, a) = Wks2.Cells(j, a)
                        Next
                        Num = Num + 1
                        .Range("B" & Num & ":G" & Num).Interior.ColorIndex = 6
                        .Range("B" & Num) = "Match"
                        .Range("B" & Num).Font.ColorIndex = 3
                        .Range("C" & Num) = Wks1.Range("B" & j)
                        .Range("D" & Num) = Wks1.Range("A" & j)
                        .Range("E" & Num) = Wks1.Range("D" & j)
                        .Range("F" & Num) = Wks1.Range("E" & j)
                        .Range("G" & Num) = Wks1.Range("F" & j)
                    End If
                    If InStr(1, Wks1.Range(Campo3 & j).Value, Testo, vbTextCompare) > 0 Then
                        Num = Num + 1
                        .Range("B" & Num & ":G" & Num).Interior.ColorIndex = 6
                        .Range("B" & Num) = "Match"
                        .Range("B" & Num).Font.ColorIndex = 3
                        .Range("C" & Num) = Wks1.Range("C" & j)
                        .Range("D" & Num) = Wks1.Range("A" & j)
                        .Range("E" & Num) = Wks1.Range("D" & j)
                        .Range("F" & Num) = Wks1.Range("E" & j)
                        .Range("G" & Num) = Wks1.Range("F" & j)
                    End If
                Next j
            End If
        Next i
        newSheet.Range("C:G").Columns.AutoFit
    End With
    
    Application.ScreenUpdating = True
    
    MsgBox "Completed!"
    
    Set Wks1 = Nothing
    Set Wks2 = Nothing
    End Sub
    Inviato dal mio Nexus 7 utilizzando Tapatalk

  26. I seguenti 2 utenti hanno dato un MI Piace a Rubik72 per questo post:


  27. #24
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Buon pomeriggio, Rubik!

    Grazie mille per questa nuova versione della Macro, è bellissima!

    Per quanto riguarda i riferimenti che non ti tornano, hai perfettamente ragione, le cose sono un po' cambiate perchè ho ricevuto ulteriori input da considerare nel file in questione.

    Questa tua nuova Macro comunque potrebbe risolvere tante problematiche. Grazie Grazie!

    Ho solo notato che non funziona con un criterio, quello delle Smiles, perchè probabilmente contiene caratteri particolari e non riconosce le stringhe (è possibile?).
    Ho provato a sostituire questi codici strani con un valore di testo normale (alicetta ) e così ottengo il risultato. Quindi sembrerebbe che il problema è proprio legato al tipo di caratteri che costituiscono il singoli valori.

    E' possibile ovviare a questo problema con i caratteri speciali dei valori nella colonna "Smiles"?

    Una ultimissima cosa. Come ti dicevo nell'ultimo messaggio, se io dovessi confrontare il valore della colonna "B" dei fogli nuovi) non solo con la colonna "B" di Matrix, ma anche con le colonne C, D, E, F, fermo restando che devo sempre vedere tutti i risultati possibili, sarebbe tanto complicato modificare la macro?
    Infatti è possibile che ci siano tanti "sinonimi" da veriifcare per ogni singolo valore della colonna B nel foglio nuovo.


    Questo significa che gli altri "valori" da cercare, DCode, CAS, Smile, verranno spostati e andranno ad occupare le colonne I, J, G nel foglio di riferimento, vale a dire "Matrix" e saranno invece in E, F, G in tutti i fogli nuovi.

    Credo però di non avere problemi a modificare la tua macro in modo da cambiare i riferimenti per queste colonne.

    Grazie ancora tanto tanto, impagabile!

    A presto,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  28. #25

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    [...]
    Ho solo notato che non funziona con un criterio, quello delle Smiles, perchè probabilmente contiene caratteri particolari e non riconosce le stringhe (è possibile?).
    Ho provato a sostituire questi codici strani con un valore di testo normale (alicetta ) e così ottengo il risultato. Quindi sembrerebbe che il problema è proprio legato al tipo di caratteri che costituiscono il singoli valori.

    E' possibile ovviare a questo problema con i caratteri speciali dei valori nella colonna "Smiles"?
    [...]
    Non ho notato questo problema.
    Riprova e fammi sapere.

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    [...]
    Una ultimissima cosa. Come ti dicevo nell'ultimo messaggio, se io dovessi confrontare il valore della colonna "B" dei fogli nuovi) non solo con la colonna "B" di Matrix, ma anche con le colonne C, D, E, F, fermo restando che devo sempre vedere tutti i risultati possibili, sarebbe tanto complicato modificare la macro?
    Infatti è possibile che ci siano tanti "sinonimi" da veriifcare per ogni singolo valore della colonna B nel foglio nuovo.


    Questo significa che gli altri "valori" da cercare, DCode, CAS, Smile, verranno spostati e andranno ad occupare le colonne I, J, G nel foglio di riferimento, vale a dire "Matrix" e saranno invece in E, F, G in tutti i fogli nuovi.

    Credo però di non avere problemi a modificare la tua macro in modo da cambiare i riferimenti per queste colonne.
    Basta adattare la macro con i nuovi riferimenti.

    Eccoti l'ultima versione con qualche modifica:
    Codice: 
    Sub Find_Matches_6()
    '*************************
    '* by Rubik72 25-10-2016 *
    '*************************
    Dim Wks1 As Worksheet
    Dim Wks2 As Worksheet
    Dim uRiga1 As Long
    Dim uRiga2 As Long
    Dim Testo As String
    Dim i As Long
    Dim j As Long
    Dim Criterio As String
    Dim Campo1 As String
    Dim Campo2 As String
    Dim newSheet As Worksheet
    Dim Num As Long
    Dim a As Byte
    Dim Nome As String
    
    
    Set Wks1 = Worksheets("Matrix")
    Set Wks2 = ActiveSheet
    If Wks1.Name = Wks2.Name Then Exit Sub
    Application.ScreenUpdating = False
    uRiga1 = Wks1.Range("A" & Rows.Count).End(xlUp).Row
    uRiga2 = Wks2.Range("A" & Rows.Count).End(xlUp).Row
    
    
    Criterio = InputBox("Inserire il campo da cercare" & Chr(13) & _
                "1 - Descrizione 1" & Chr(13) & _
                "2 - Descrizione 2" & Chr(13) & _
                "3 - DCode" & Chr(13) & _
                "4 - CAS" & Chr(13) & _
                "5 - Smiles" & Chr(13) & _
                "6 - " & Chr(13) & _
                "7 - ", "Criterio ricerca", 1)
    
    
    If Asc(Criterio) < 49 Or Asc(Criterio) > 55 Then
        MsgBox "Scelta errata", vbInformation, "ATTENZIONE"
        Exit Sub
    End If
    
    
    Select Case Criterio
        Case 1
            Campo1 = "B"
            Campo2 = "B"
            Nome = "Descrizione 1"
        Case 2
            Campo1 = "C"
            Campo2 = "B"
            Nome = "Descrizione 2"
        Case 3
            Campo1 = "D"
            Campo2 = "E"
            Nome = "DCode"
        Case 4
            Campo1 = "E"
            Campo2 = "F"
            Nome = "CAS"
        Case 5
            Campo1 = "F"
            Campo2 = "G"
            Nome = "Smiles"
        'Case 6
        '    Campo1 = "E"
        '    Campo2 = "F"
        '    Nome = "casNO"
        'Case 7
        '    Campo1 = "H"
        '    Campo2 = "D"
        '    Nome = ""
    End Select
    
    
    Set newSheet = Sheets.Add
    With newSheet
        .Move after:=Sheets(Sheets.Count)
        .Name = Nome
        For i = 2 To uRiga1
            Testo1 = Replace(Replace(Wks1.Range(Campo1 & i).Value, "[", ""), "]", "")
            If Len(Testo1) > 0 Then
                For j = 2 To uRiga2
                    Testo2 = Replace(Replace(Wks2.Range(Campo2 & j).Value, "[", ""), "]", "")
                    If Len(Testo2) > 0 Then
                        If InStr(1, Testo1, Testo2, vbTextCompare) > 0 Then
                            Num = Num + 1
                            For a = 1 To 7
                                .Cells(Num, a) = Wks1.Cells(i, a)
                            Next
                            Num = Num + 1
                            .Range("B" & Num & ":H" & Num).Interior.ColorIndex = 6
                            .Range("B" & Num) = "Match"
                            .Range("B" & Num).Font.ColorIndex = 3
                            .Range("C" & Num) = Wks2.Range("B" & j)
                            .Range("D" & Num) = Wks2.Range("A" & j)
                            .Range("E" & Num) = Wks2.Range("D" & j)
                            .Range("F" & Num) = Wks2.Range("E" & j)
                            .Range("G" & Num) = Wks2.Range("F" & j)
                            .Range("H" & Num) = Wks2.Range("G" & j)
                        End If
                    End If
                Next j
            End If
        Next i
        newSheet.Range("C:H").Columns.AutoFit
    End With
    
    
    Application.ScreenUpdating = True
    
    
    MsgBox "Completed!"
    
    
    Set Wks1 = Nothing
    Set Wks2 = Nothing
    Set newSheet = Nothing
    
    
    End Sub

  29. I seguenti utenti hanno dato un "Mi Piace"


  30. #26
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Caro Rubik,

    mi scuso moltissimo per non avere risposto fino ad oggi ma i problemi a cui accennavo qualche messaggio fa si sono fatti più importanti e per un lungo periodo non ho potuto lavorare.

    Questo fine settimana ho lavorato utilizzando la tua ultima versione della macro (Grazie!!!) e mi sono resa conto che purtroppo, però, produce troppi risultati, così tanti che non sono analizzabili.
    Se ho capito bene sono così tanti perchè per ogni "valore" di riferimento nel foglio Matrix, la macro restituisce anche i valori parziali. Ad esempio se il valore in Matrix che devo trovare nei nuovi fogli è "pippo" la macro mi restituisce come match anche "pi", "pip", "pipp", oltre a "pippo", "pippone", "pippolo"(sono solo esempi per farti capire cosa intendo).
    In realtà i valori potenzialmente interessanti sarebbero quelli da "pipp" in poi, quindi tutti i valori che contegono almeno il valore di riferimento esatto, meno l'ultima lettera.
    Spero che sia chiaro così.

    Ho lavorato sulla Master List, vale a dire tutti i valori presenti nel foglio Matrix per cercare di semplificarla.
    Sono riuscita ad ottenere un foglio che contiene 5 colonne, per cui adesso per cercare i match per "Descrizione" l'unica colonna da considerare nel foglio Matrix è la colonna B.
    Rimangono poi i match da cercare per CAS, Smiles e DCode, ma le colonne sono allocate nella stessa maniera nel foglio Matrix e nei nuovi fogli, per cui la ricerca diventa:

    - Find Matches by Description: cerca ogni valore della colonna B di Matrix nella colonna B di worksheet
    - Find Matches by CAS: cerca ogni valore della colonna C di Matrix nella colonna C di worksheet
    - Find Matches by Smiles: cerca ogni valore della colonna D di Matrix nella colonna D di worksheet
    - Find Matches by DCode: cerca ogni valore della colonna E di Matrix nella colonna E di worksheet

    Se può essere utile, allego un foglio excel privo di Macro con quello che vorrei ottenere, sia in termini di "matches" sia per quanto riguarda il formato.

    Spero così che tutto sia più chiaro...

    Rubik, mi spiace di doverti ancora chiedere aiuto, ma sarebbe davvero fondamentale per me riuscire a venire a capo di questa cosa. Senza una Macro funzionale, che mi dia la possibilità di trovare efficacemente i risultati da verificare, sono davvero in difficoltà soprattutto a causa di tutto il tempo in cui non s ho potuto lavorare.
    Considera che durante questo periodo di fermo forzato ho accumulato qualcosa come una trentina di nuovi file da controllare, ciascuno con migliaia e migliaia di valori.

    In ogni caso, Rubik, grazie mille per tutto quello che hai già fatto fin qui.

    Buona giornata,

    alice

    P.S. Perchè non vedo più il bottone "Mi piace" nei messaggi?
    File Allegati File Allegati
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  31. #27
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Buongiorno Rubik

    Dimenticavo una cosa importante.
    Tenendo buono l'esempio del valore "pippo" nella colonna B del foglio Matrix, se in una delle celle della colonna B del nuovo foglio c'è un match del tipo "pluto pippo minnie", vale a dire il match "pippo" cade all'interno di una cella con più parole, separate da spazi, la macro è capace di trovarlo comunque?

    Ho visto che capita spesso che nei nuovi elenchi da controllare si trovano valori di questo tipo, formati cioè da più parole separate da spazi.

    Grazie e buona giornata,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  32. #28

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    ciao @indaco ho apportato le modifiche richieste, ecco la routine:
    Codice: 
    Sub Find_Matches_7()'*************************
    '* by Rubik72 22-11-2016 *
    '*************************
    Dim Wks1 As Worksheet
    Dim Wks2 As Worksheet
    Dim uRiga1 As Long
    Dim uRiga2 As Long
    Dim Testo1 As String
    Dim Testo2 As String
    Dim i As Long
    Dim j As Long
    Dim Criterio As String
    Dim newSheet As Worksheet
    Dim Num As Long
    Dim a As Byte
    Dim Nome As String
    Dim Click As Boolean
    
    
    Set Wks1 = Worksheets("Matrix")
    Set Wks2 = ActiveSheet
    If Wks1.Name = Wks2.Name Then Exit Sub
    Application.ScreenUpdating = False
    uRiga1 = Wks1.Range("A" & Rows.Count).End(xlUp).Row
    uRiga2 = Wks2.Range("A" & Rows.Count).End(xlUp).Row
    
    
    Criterio = InputBox("Inserire il campo da cercare" & Chr(13) & _
                "1 - Descrizione" & Chr(13) & _
                "2 - CAS" & Chr(13) & _
                "3 - Smiles" & Chr(13) & _
                "4 - DCode", "Criterio ricerca", 1)
    
    
    If Criterio < 1 Or Criterio > 4 Then
        MsgBox "Scelta errata", vbInformation, "ATTENZIONE"
        Exit Sub
    End If
    
    
    Nome = "Matches by " & Choose(Criterio, "Descrizione", "DCode", "CAS", "Smiles", "DCode")
    
    
    Set newSheet = Sheets.Add
    With newSheet
        .Move after:=Sheets(Sheets.Count)
        .Name = Nome
        .Cells(1, 2) = "CATEGORY"
        .Cells(1, 3) = "DESCRIPTION"
        .Cells(1, 4) = "CAS"
        .Cells(1, 5) = "SMILES"
        .Cells(1, 6) = "DCODE"
        Num = 1
        For i = 2 To uRiga1
            Testo1 = Replace(Replace(Wks1.Cells(i, Criterio + 1).Value, "[", ""), "]", "")
            If Len(Testo1) > 0 Then
                For j = 2 To uRiga2
                    Testo2 = Replace(Replace(Wks2.Cells(j, Criterio + 1).Value, "[", ""), "]", "")
                    If Len(Testo2) > 0 Then
                        If InStr(1, Testo1, Testo2, vbTextCompare) > 0 Then
                            If Click = False Then
                                Num = Num + 1
                                .Cells(Num, 1) = "Match from Matrix"
                                For a = 1 To 5
                                    .Cells(Num, a + 1) = Wks1.Cells(i, a)
                                Next
                                .Range("A" & Num & ":F" & Num).Interior.ColorIndex = 6
                                Click = True
                            End If
                            Num = Num + 1
                            .Range("B" & Num).Font.ColorIndex = 3
                            For a = 1 To 5
                                Cells(Num, a + 1) = Wks2.Cells(j, a)
                            Next
                        End If
                    End If
                Next j
            End If
            Click = False
        Next i
        .Range("A:F").Columns.AutoFit
    End With
    
    
    Application.ScreenUpdating = True
    
    
    MsgBox "Completed!"
    
    
    Set Wks1 = Nothing
    Set Wks2 = Nothing
    Set newSheet = Nothing
    
    
    End Sub

  33. I seguenti utenti hanno dato un "Mi Piace"


  34. #29
    L'avatar di indaco
    Clicca e Apri
    Data Registrazione
    Aug 2016
    Località
    milano
    Messaggi
    37
    Versione Office
    2010
    Mi Piace ricevuti
    2
    Mi Piace dati
    5

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Ciao Rubik,

    grazie mille per la disponibilità che merita già da sola un "Mi piace", oltre alla capacità!

    Per quanto riguarda la Macro, rimane ancora il problema dei match eccessivi.
    Ti faccio un esempio, per il valore "Carbon disulfide" (che è uno dei valori contenuti nell'elenco di Matrix), ottengo come match tutti i risultati qua sotto, ma come vedi molti "matchano" solo per una 'A' o un'altra sola lettera o per 'RB' (caRBon), mentre a me interesserebbero solo quelli "carbon" o eventualmente, se ci fossero, "disulfide" o anche ovviamente "carbon disulfide":
    A
    A
    A
    A
    A
    A
    A
    A
    A
    A
    CARBON
    RB
    RB
    RB
    RB
    CA
    DI
    S
    S
    CARBON
    S
    L
    F
    L
    O
    L
    U
    U

    In effetti la routine è lentissima, circa 3/4 minuti e genera quasi 80.000 match per una lista di 33.000 valori.

    E' possibile eliminare i valori non "stringenti"? come ti dicevo sarebbero quelli che corrispondono al valore esatto o (desiderabilmente) al valore esatto meno una lettera, nell'esempio di cui sopra, per esempio "carbo" e "sulfid" mi andrebbero bene, ma non tutto il resto.

    Grazie ancora,

    alice
    The only strings that hold me here are tangled up around the pier (Tom Waits)


  35. #30

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    44
    Messaggi
    1621
    Versione Office
    Excel 2013
    Mi Piace ricevuti
    497
    Mi Piace dati
    407

    Re: Aiuto per modificare/migliorare una Macro su Excel

    Citazione Originariamente Scritto da indaco Visualizza Messaggio
    Ti faccio un esempio, per il valore "Carbon disulfide" (che è uno dei valori contenuti nell'elenco di Matrix), ottengo come match tutti i risultati qua sotto, ma come vedi molti "matchano" solo per una 'A' o un'altra sola lettera o per 'RB' (caRBon), mentre a me interesserebbero solo quelli "carbon" o eventualmente, se ci fossero, "disulfide" o anche ovviamente "carbon disulfide":
    [...]
    ciao @indaco, è difficile testare esempi che non hai postato. Il valore "Carbon disulfide" non è in nessun file.
    Allega un file con pochi record ma con le casuali interessate.

Discussioni Simili

  1. Modificare composizione macro
    Di PALLAS0TTO nel forum Domande su Excel VBA e MACRO
    Risposte: 6
    Ultimo Messaggio: 07/07/16, 18:28
  2. Modificare macro Sorteggio
    Di roky48 nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 02/05/16, 13:39
  3. macro per modificare contenuto altre macro.
    Di nessi nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 15/04/16, 15:53
  4. richiesta aiuto su macro Excel 2003
    Di sandro di ventura nel forum Domande su Excel VBA e MACRO
    Risposte: 6
    Ultimo Messaggio: 25/02/16, 08:49
  5. richiesta aiuto su macro Excel 2003
    Di sandro di ventura nel forum Domande su Excel in generale
    Risposte: 0
    Ultimo Messaggio: 24/02/16, 20:21

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •