View Full Version : [V.B.] Macro Excel per trova-sostituisci
Ciao,
devo implementare una macro che trovi e sostituisca delle parole.
Ad esempio:
Nella cella A-1 c'è la frase " scarpe simpson colore red "
Nella cella A-2 c'è la frase " scarpe simpson colore blue "
Nella cella A-3 c'è la frase " maglia redstill colore red "
Nella cella A-4 c'è la frase " maglia simpson colore blue "
La macro deve trovare le parole "red " e "blue " (cercando in tutto il foglio) e sostituire con "rosso " e "blu " considerando anche lo spazio dopo la parola per evitare la sostituzione di parole composte (come redstill).
Quindi dopo l'esecuzione della macro il risultato deve essere:
Nella cella A-1 la frase " scarpe simpson colore rosso "
Nella cella A-2 la frase " scarpe simpson colore blu "
Nella cella A-3 la frase " maglia redstill colore rosso "
Nella cella A-4 la frase " maglia simpson colore blu "
So che esiste già il trova-sostituisci in excel ma siccome sono molte le parole da sostituire e sempre le stesse preferirei implementare una macro.
Spero di essere stato chiaro :D
Grazie mille
Daniele
La macro deve trovare le parole "red " e "blue " (cercando in tutto il foglio) e sostituire con "rosso " e "blu " considerando anche lo spazio dopo la parola per evitare la sostituzione di parole composte (come redstill).
Quel "cercando in tutto il foglio" suona un po' come una minaccia ! :D
Significa come minimo 256x65'536 = 16'777'216 di celle.
E non penso tu debba automatizzare un elenco di 16 milioni di voci.
Forse intendi un certo range preciso... ;)
:) ok allora diciamo una seleziona da A,1 a L,1000 :)
Comunque eventualmente il range lo adatto dopo se la macro impiega troppo tempo :)
Grazie mille
Daniele
:) ok allora diciamo una seleziona da A,1 a L,1000 :)
Comunque eventualmente il range lo adatto dopo se la macro impiega troppo tempo :)
Grazie mille
Daniele
Mmm, chi non muore si rivede eh ? :D
Detesto le "meteore", ma dato che è codice di tre settimane fa, lo posto ugualmente... :
Dim cella As Range
For Each cella In Range("A1:L1000")
Dim strCella As String
strCella = cella.Text
Dim parole() As String
parole() = Split(strCella)
Dim nuovaStr As String
nuovaStr = ""
For i = 0 To UBound(parole)
Select Case parole(i)
Case "blue"
parole(i) = "blu"
Case "red"
parole(i) = "rosso"
'Case ...
End Select
nuovaStr = nuovaStr & parole(i) & " "
Next
cella.FormulaR1C1 = nuovaStr
Next
Routine espandibile e personalizzabile... ;)
Ed è anche l'ultima volta che ti rispondo se lasci passare altre 3 settimane ! :D
hai ragione ti chiedo scusa, purtroppo ho dovuto accantonare un attimo il progetto per fare un altro lavoro, in ogni caso hai ragione
Grazie mille
Daniele
Mmm, chi non muore si rivede eh ? :D
Detesto le "meteore", ma dato che è codice di tre settimane fa, lo posto ugualmente... :
Dim cella As Range
For Each cella In Range("A1:L1000")
Dim strCella As String
strCella = cella.Text
Dim parole() As String
parole() = Split(strCella)
Dim nuovaStr As String
nuovaStr = ""
For i = 0 To UBound(parole)
Select Case parole(i)
Case "blue"
parole(i) = "blu"
Case "red"
parole(i) = "rosso"
'Case ...
End Select
nuovaStr = nuovaStr & parole(i) & " "
Next
cella.FormulaR1C1 = nuovaStr
Next
Routine espandibile e personalizzabile... ;)
Ed è anche l'ultima volta che ti rispondo se lasci passare altre 3 settimane ! :D
Ciao! Abuso di nuovo delle tue capacità per chiederti una cosa :) se puoi aiutarmi :)
Supponendo che volessi che mettere il valore da sostituire nella colonna successiva, stessa riga, cosa dovrei fare?
Esempio:
cella A1 contiene:
t-shirt blue
dopo aver eseguito la macro
cella A1 contiene:
t-shirt blue
cella B1 contiene:
blu
:D
Grazie mille
Daniele
Kralizek
01-04-2009, 13:04
ammazza che "resuscita topic" di classe :P
cmq pensaci un minimo, non é tanto difficile ;)
cella A1 contiene:
t-shirt blue
dopo aver eseguito la macro
cella A1 contiene:
t-shirt blue
cella B1 contiene:
blu
Ma è cambiato il range di riferimento ? Ora è la colonna A1:A1000 ?
ammazza che "resuscita topic" di classe :P
Sì. infatti. :D
Ma è cambiato il range di riferimento ? Ora è la colonna A1:A1000 ?
Sì. infatti. :D
:D
si il range di riferimento è A1:A1000
Grazie mille :)
Daniele
si il range di riferimento è A1:A1000
In tal caso :
Dim cella As Range
For Each cella In Range("A1:A1000")
Dim strCella As String
strCella = cella.Text
Dim parole() As String
parole() = Split(strCella)
For i = 0 To UBound(parole)
Select Case parole(i)
Case "blue"
Range("B" & cella.Row).FormulaR1C1 = "blu"
Exit For
Case "red"
Range("B" & cella.Row).FormulaR1C1 = "rosso"
Exit For
'Case ...
End Select
Next i
Next cella
;)
In tal caso :
Dim cella As Range
For Each cella In Range("A1:A1000")
Dim strCella As String
strCella = cella.Text
Dim parole() As String
parole() = Split(strCella)
For i = 0 To UBound(parole)
Select Case parole(i)
Case "blue"
Range("B" & cella.Row).FormulaR1C1 = "blu"
Exit For
Case "red"
Range("B" & cella.Row).FormulaR1C1 = "rosso"
Exit For
'Case ...
End Select
Next i
Next cella
;)
eheh :) mitico :) la provo subito :)
ti farò un regalo un giorno :)
Grazie ancora
Daniele
Fabrizioespo
20-08-2012, 14:11
Ciao Marco piacere ..... scusami se ti disturbo ma facendo una navigata qui su questo sito ho letto la tua risposta inerente ad una macro excel .....
Mi potresti aiutare?
Il motivo della mia mail è proprio questo, cioè mi manca un piccolo dettaglio per risolvermi un GRANDISSIMO problema.
MACRO ......
Fondamentalmente si riferisce al cerca e sostituisci ..... cioè quando registro una macro e gli segnalo di cercare (per poi sostituire) una parola, lui ricerca sempre la stessa parola inserita quando l'avevo registrata (non so se mi sono spiegato)
cioè il mio intento è quello che l'utente finale deve immettere una parola nella cella e poi la macro deve cercare e sostituire quella parola non richiamare la parola da me registrata al momento della creazione della macro.
ti faccio un esempio:
parola da cercare (CANE) aziono la macro che fa il suo lavoro (cioè quella di sostituire la parola CANE), in un secondo momento voglio che mi cerca (GATTO) ma la macro cerca sempre la stessa parola CANE .....!!!
Spero di essere stato chiaro .....
Mi potresti aiutare?Ovviamente la mia segnalazione è anche per gli utenti che leggono!!!
Grazie
ciao a presto
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.