PDA

View Full Version : [V.B.] Macro Excel per trova-sostituisci


k4daoal
28-05-2008, 10:42
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

MarcoGG
28-05-2008, 14:31
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... ;)

k4daoal
17-06-2008, 11:24
:) 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

MarcoGG
18-06-2008, 08:19
:) 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

k4daoal
19-06-2008, 08:55
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

k4daoal
01-04-2009, 12:26
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 ;)

MarcoGG
02-04-2009, 07:44
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

k4daoal
02-04-2009, 13:06
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

MarcoGG
02-04-2009, 13:19
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

;)

k4daoal
03-04-2009, 11:34
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