Trova e sostituisci



  • Trova e sostituisci
    di Dindog (utente non iscritto) data: 18/07/2013 17:52:30

    Ciao a tutti.
    Ho un problema che credo semplice, ma pur dannandomi per fare una macro, non ho trovato soluzione..

    Allora io ho, per ipotesi, 3 colonne.
    colonna 1:
    345
    354
    344
    355

    colonna 2:
    Alto
    basso
    grasso
    magro

    colonna 3:
    345
    345
    345
    345
    354
    354
    354
    344
    354
    344
    355
    344

    Le 3 colonne sono appaiate: colonna 1 - 2 - 3.

    Io volevo costruire una macro che mi sostituisse nella colonna 3 il testo corrispondente a quello contenuto nella colonna 2 e che corrisponde al numero presente nella colonna 1.
    Per spiegarmi meglio: nell'esempio sopra riportato io ho che nella seconda riga ho i valori 354 sulla colonna 1 e basso sulla colonna 2. La macro dovrebbe sostituirmi tutti i valori 354 della colonna 3 con la parola basso. Dovrebbe poi fare la stessa cosa per tutte le righe delle colonne 1 e 2 (ie sostituendo 344 con grasso, e così via).

    Come si fa?
    Grazie
    Ale




  • di HarryBosch data: 18/07/2013 19:26:13

    Ciao Dindog
    se l'operazione che devi fare è occasionale, allora potresti cavartela anche con una formula;
    in D1 puoi scrivere:
    =CERCA.VERT(C1;A:B;2;FALSO)
    e trascinare verso il basso (o doppio clic sulla crocetta in basso a destra).

    Eventualmente cancelli la colonna C dopo aver trasformato in valori i dati della colonna D.

    Se invece l'operazione si deve svolgere all'interno di una operazione più articolata, magari avrai già un abbozzo di routine da aggiustare.

    Oppure chiedevi la macro a scopo didattico? ^_^



  • di Vecchio Frac data: 18/07/2013 19:43:53

    Vai Harry, didatticaci pure ^_^





  • di HarryBosch data: 18/07/2013 20:06:36

    Ok, giusto per uscire dai soliti canoni del classico Find o CercaVerticale...
    Io posto e qualcuno commenta ^_^
     
    Sub intervallo()
        Dim r As Integer
        r = 1
    
        Do Until Cells(r, 2) = ""
            Columns("C").Replace Cells(r, 1), Cells(r, 2), xlWhole
            r = r + 1
        Loop
    
    End Sub
    



  • di Vecchio Frac data: 18/07/2013 20:56:13

    Carino.
    What if in Cells(r,2) c'è qualcosa del tipo " " (spazio vuoto)? ^_^





  • di isy data: 18/07/2013 23:27:17

    Ciao

    Ecco un codice col metodo Evaluate.

     
    Sub Formula()
        Dim x   As String
        With Range("C2:C" & Range("C" & Rows.Count).End(xlUp).Row)
            x = .Address
            .Offset(, 0) = Evaluate("VLOOKUP( " & x & " ,A:B" & ",2,FALSE)")
        End With
    End Sub