View Full Version : [V.B.] Macro Excel per trova e scrivi in cella
Ciao a tutti,
avrei bisogno di una macro che cerchi una data parola all'interno di una cella (o più celle), se trovata scriva in un altra cella un valore da me specificato.
Esempio:
La cella A:1 contiene:
"Scarpe rosse lucide"
La cella A:2 contiene:
"Scarpe blu lucide"
La cella A:3 contiene:
"Scarpe nere pelle"
La cella A:4 contiene:
"Maglione Rosso"
La cella A:5 contiene:
"Maglione Verde"
La cella A:6 contiene:
"Scarpe blu pelle"
CONDIZIONE A:
Cerca nella colonna A:9999 le parole "scarpe" e "pelle" se trovate scrivi nella cella affianco il valore 10
CONDIZIONE B:
Cerca nella colonna A:9999 le parole "maglione" se trovate scrivi nella cella affianco il valore 20
Quindi nella cella B:3 e B:6 ci dovrà essere il valore 10
Quindi nella cella B:4 e B:5 ci dovrà essere il valore 20
Grazie a tutti
Daniele
ti serve per forza una macro?
se basta una funzione:
=SE(VAL.ERR(TROVA("aglione";A1))=FALSO;20;SE(VAL.ERR(TROVA("carpe";A1))=FALSO;SE(VAL.ERR(TROVA("pelle";A1))=FALSO;10;0);0))
ho messo "aglione" e "carpe" perchè la funzione TROVA è case sensitive...
La cella A:1 contiene:
"Scarpe rosse lucide"
La cella A:2 contiene:
"Scarpe blu lucide"
La cella A:3 contiene:
"Scarpe nere pelle"
La cella A:4 contiene:
"Maglione Rosso"
La cella A:5 contiene:
"Maglione Verde"
La cella A:6 contiene:
"Scarpe blu pelle"
CONDIZIONE A:
Cerca nella colonna A:9999 le parole "scarpe" e "pelle" se trovate scrivi nella cella affianco il valore 10
CONDIZIONE B:
Cerca nella colonna A:9999 le parole "maglione" se trovate scrivi nella cella affianco il valore 20
Quindi nella cella B:3 e B:6 ci dovrà essere il valore 10
Quindi nella cella B:4 e B:5 ci dovrà essere il valore 20
Dim i As Long
Dim txtCella As String
Application.ScreenUpdating = False
For i = 1 To 9999
txtCella = Sheets("nomeFoglio").Range("A" & i).Text
If InStr(1, txtCella, "maglione", vbTextCompare) > 0 Then Sheets("nomeFoglio").Range("B" & i).FormulaR1C1 = "20"
If InStr(1, txtCella, "scarpe", vbTextCompare) > 0 And InStr(1, txtCella, "pelle", vbTextCompare) > 0 Then Sheets("nomeFoglio").Range("B" & i).FormulaR1C1 = "10"
Next i
Application.ScreenUpdating = True
Dal momento che non è previsto che le stesse keywords coesistano nella stessa cella ( ad es. non è previsto un "maglione + scarpe" ) le condizioni possono essere accodate semplicemente, senza che una escluda l'altra.
Inoltre il parametro vbTextCompare assicura che la condizione di matching sia case-insensitive. ;)
Infine una considerazione : personalmente non mi sembra una scelta brillante mettere tutto in una colonna sola. Meglio sarebbe stato prevedere una tabella dati con :
TipoProdotto | Materiale | Colore
quindi :
Scarpe | Lucido | Rosso
Scarpe | Pelle | Nero
...
Maglione | [null] | Verde
...
ecc... ;)
grazie mille a entrambi :) funziona in entrambi i modi :)
Daniele
Ciao,
scusate di nuovo, una domanda rapida.
Ho una variabile numerica di nome "max".
Voglio far selezionare la cella con cordinate A:max, però ovviamente se scrivo Range("Amax").Select mi dà errore....come posso fare?
Grazie mille
Daniele
Voglio far selezionare la cella con cordinate A:max, però ovviamente se scrivo Range("Amax").Select mi dà errore....come posso fare?
Per forza... :
Range("A" & max).Select
Range("a" & max).Select
edit....BATTUTO per un soffio :)
Range("a" & max).Select
edit....BATTUTO per un soffio :)
:p
:p
beh cmq arrivare anche solo un secondo dopo di te è già un onore :)
beh cmq arrivare anche solo un secondo dopo di te è già un onore :)
Grazie. Lusingato. ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.