Cerca e cambia parola



  • Cerca e cambia parola
    di PAOLO (utente non iscritto) data: 27/02/2014 17:16:24

    Buongiorno ho bisono di un aiuto vi prego ho bisogno del codice vba per realizzare una macro che cerchi in un range che va da B2:B30 delle parole all'interno di frasi e che una volta trovata quella parola vada a scrivere un'altra parola nella colonna esempio da D2:D30.

    esempio:
    B2: la casa era piccola nel bosco ------> D2: grande

    parola da cercare "piccola" e se viene trovata la macro deve scrivere solamente la parola "grande" in D2.



    Ovviamente le parole da cercare possono essere diverse e una volta trovate le rispettive da sostituire devono essere diverse.
    Aiutatemi...
    Grazie infinite.




  • di Vecchio Frac data: 27/02/2014 17:18:35

    Sì, ma qual è la difficoltà specifica che hai incontrato? Hai scritto qualche riga di codice o parti da zero?




  • Cerca e cambia parola
    di PAOLO (utente non iscritto) data: 27/02/2014 17:20:07

    parto da zero. Ti prego aiutami.



  • di patel data: 27/02/2014 17:25:12

    allega un file con i dati ed il risultato desiderato





  • Cerca e cambia parola
    di Paolo (utente non iscritto) data: 27/02/2014 17:25:17

    Ti ho allegato un file se vuoi visionarlo.....se osservi il modulo "sostituisci" ho messo come parola blue da cercare e sostituire con blu......ma questa funziona solo se nella frase la parola da cercare si trova alla fine della frase.....NON SO SE MI HAI CAPITO.....

    Se ad esempio scrivo: "La casa aveva pareti blue e tetto rosso" e klikko su sostituisci mi scrive rosso... invece che "BLU" !! Ma perche'??



  • di paolo (utente non iscritto) data: 27/02/2014 17:39:10

    Ho allegato il file hai visto?



  • di patel data: 27/02/2014 19:10:05

    tu hai detto
    una volta trovata quella parola vada a scrivere un'altra parola nella colonna esempio da D2:D30.
    quindi occorre una colonna con la parola da cercare
    una con la frase
    una con la parola da scrivere
    una col risultato
    tutto questo se ho capito quello che intendi fare





  • di Vecchio Frac data: 27/02/2014 19:14:16

    Io avrei altre osservazioni da fare... a partire da Option Explicit :)
    Giustamente, ci vorrebbe una tabella di dati da cercare/sostituire... altrimenti la devi codificare come ho fatto io nell'Array che segue (simildizionario).
     
    Option Explicit
    
    Sub sostituisci()
    Dim r As Range, parola As Variant, v As Variant, c As Range
        Set r = Sheets("FRASI").Range("D2:D1000")
        
        With Sheets("FRASI")
            r.Value = .Range("B2:B1000").Value
    
            For Each parola In Array("blue:blu", "yellow:rosso", "pipistrello:cavallo")
                v = Split(parola, ":")
                With r
                    Set c = .Find(v(0), LookIn:=xlValues, lookat:=xlPart)
                    If Not c Is Nothing Then
                        Do
                            c.Replace v(0), v(1)
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing
                    End If
                End With
            Next
    
            .Range("C1").Select
        End With
    End Sub






  • di Lucas87 data: 27/02/2014 19:18:11

    Così può andare?
    Però devi decidere a priori quale parola cercare e quale scrivere all'interno della macro.
    Se le parole variano, come ha detto patel, devi descrivere in che maniera

     
    Sub sostituisci()
    parola1 = "parola_da_cercare"
    parola2 = "parola_da_scrivere"
    For Each cel In Range("b2:b35")
        If InStr(1, cel, parola1, vbTextCompare) <> 0 Then
            Cells(cel.Row, 4) = parola2
        End If
    Next
    End Sub
    



  • di Vecchio Frac data: 27/02/2014 19:23:54

    Ah, ma io avevo capito che lui invece voleva sostituire le occorrenze di alcune parole con altre.
    Questo accade quando gli utenti non si spiegano bene ^_^




  • Cerca e cambia parola
    di paolo (utente non iscritto) data: 28/02/2014 08:17:49

    Ciao Vecchio Frank il tuo codice è quasi esatto solo che vorrei che nel momento che klikko su sostituisci nella colonna D2:D1000 mi deve scrivere solo la parola da sostituire e non di riscrivere tutta la frase con la parola cambiata. Non so se mi hai capito.
    Esempio:

    La finestra era di colore yellow --------------> rosso

    e non invece:

    La finestra era di colore yellow -----------------> la finestra era di colore rosso

    Capito?
     
    Option Explicit
    
    Sub sostituisci()
    Dim r As Range, parola As Variant, v As Variant, c As Range
        Set r = Sheets("FRASI").Range("D2:D1000")
        
        With Sheets("FRASI")
            r.Value = .Range("B2:B1000").Value
    
            For Each parola In Array("blue:blu", "yellow:rosso", "pipistrello:cavallo")
                v = Split(parola, ":")
                With r
                    Set c = .Find(v(0), LookIn:=xlValues, lookat:=xlPart)
                    If Not c Is Nothing Then
                        Do
                            c.Replace v(0), v(1)
                            Set c = .FindNext(c)
                        Loop While Not c Is Nothing
                    End If
                End With
            Next
    
            .Range("C1").Select
        End With
    End Sub



  • di paolo (utente non iscritto) data: 28/02/2014 11:17:15

    qualcuno mi aiuta?



  • di Lucas87 data: 28/02/2014 11:51:29

    Scusa, hai letto quello che ho messo io?
    Mi sembra che risolva quanto richiesto



  • di Vecchio Frac data: 28/02/2014 18:45:03

    Il codice di Lucas87 va già bene infatti.
    Se vuoi conservare la mia impostazione, sostituisci
    c.Replace v(0), v(1)
    con
    c = v(1)