Condividi:        

[EXCEL] Ricerca di un testo specifico e restituzione valore

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo » 01/07/10 11:54

Ciao, amici.

sono di nuovo qui a chiedervi umilmente un aiuto.

Premetto che ho excell in inglese.

Ho un file in cui, nella colonna l, c'é un codice html all' interno di ogni cella.

mi servirebbero 2 formule da mettere una nella colonna p e una nella colonna q che rispettivamente mi dovrebbero cercare nel codice html, presente nella colonna l, il peso e la misura dell'articolo.

praticamente la formula in p dovrebbe cercare la stringa "kg." in l2 e restituirmi il valore numerico immediatamente precedente la stringa "kg." fino al primo spazio che precede in numero, mettendolo in p2.

esempio: se nel codice nella cella l2 c'é scritto ad un certo punto "1,16 kg." mi deve restituire "1,16" in p2

stessa cosa per la formula in q2 che dovrebbe cercare la stringa "mm." e restituirmi il valore della stringa immediatamente precedente la stringa "mm." fino al primo spazio che precede in numero.

esempio: se nel codice nella cella l2 c'é scritto ad un certo punto "dimensioni d'ingombro 210x140x24 mm." mi deve restituire "210x140x24" in q2

per me é fantascienza ma so che per un esperto si risolve con un cerca.vert o vlookup in poco tempo. io non ho proprio idea di come procedere.

mi aiutate ?

grazie, ragazzi.
LoLLo.il.PoLLo
Newbie
 
Post: 2
Iscritto il: 01/07/10 11:51

Sponsor
 

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi Flash30005 » 01/07/10 12:27

LoLLo.il.PoLLo ha scritto:sono di nuovo qui a chiedervi umilmente un aiuto.
:?: :roll:

Mi risulta che questo è il tuo primo messaggio e ti dò, quindi, il benvenuto nel Forum

Potresti inviare l'intera stringa (più di una sarebbe meglio) sia dei Kg che dei mm?
(non solo una parte, come hai fatto)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo » 01/07/10 13:23

Flash30005 ha scritto:
LoLLo.il.PoLLo ha scritto:sono di nuovo qui a chiedervi umilmente un aiuto.
:?: :roll:

Mi risulta che questo è il tuo primo messaggio e ti dò, quindi, il benvenuto nel Forum

Potresti inviare l'intera stringa (più di una sarebbe meglio) sia dei Kg che dei mm?
(non solo una parte, come hai fatto)

Ciao


Ciao.

In realtà si tratta solo di trovare le parole "Kg." e "mm." all'interno di una cella che contiene del codice HTML... se postassi tutto il codice della cella si riempirebbe la pagina.

Se vuoi ti posso mandare il file, che ne dici ?

Ho applicato delle formule ma non so perché mi dà dei risultati sballati. Vicini alla soluzione ma sballati.

Puoi scaricare il file da qui:
http://www.saibersciop.com/varie/test-video-tvcolor-lcd.rar

Ci ho messo le spiegazioni in rosso. A me le formule sembrano esatte... però é come se nel testo HTML presente nella cella é come se ci fossero due tipi di SPAZIO differenti.
Se gli faccio fare un FIND alcuni spazi non me li riconosce come spazio...allora devo prendere quello specifico SPAZIO e incollarlo nel comando FIND per fargli fare 2 ricerca differenti... é come se fossero 2 caratteri differenti.

Mah... ci stò impazzendo
LoLLo.il.PoLLo
Newbie
 
Post: 2
Iscritto il: 01/07/10 11:51

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi Flash30005 » 01/07/10 14:55

Io ti do un aiutino con una macro...
Codice: Seleziona tutto
Sub TrovaValori()
r4 = Cells(Rows.Count, 1).End(xlUp).Row
For RR = 2 To r4
    StrK = ""
    StrM = ""
    StrL = Range("L" & RR).Value
    StrL = Replace(StrL, "</tr>", "")
    StrL = Replace(StrL, "<tr>", "")
    StrL = Replace(StrL, Chr(10), "")
    If InStrRev(StrL, "Kg.") = 0 Then GoTo salta
    MisStrK = Len(Mid(StrL, InStrRev(StrL, "Kg."), Len(StrL)))
    MiaStrP = Len(Mid(StrL, 1, InStrRev(StrL, "Peso ") + 5))
    StrK = Mid(StrL, InStrRev(StrL, "Peso ") + 5, Len(StrL) - MiaStrP - MisStrK)
    Range("P" & RR).Value = StrK
salta:
    If InStrRev(StrL, "mm.") = 0 Then GoTo Salta2
    MisStrM = Len(Mid(StrL, InStrRev(StrL, "mm."), Len(StrL))) + 4
    MiaStrI = Len(Mid(StrL, 1, InStrRev(StrL, "ingombro ") + 5))
    StrM = Mid(StrL, InStrRev(StrL, "ingombro ") + 9, Len(StrL) - MiaStrI - MisStrM)
    Range("Q" & RR).Value = StrM
Salta2:
Next RR
End Sub

eseguila e dovresti avere dei valori in ogni cella P e Q (se esiste il parametro)

Fai sapere
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo1 » 01/07/10 17:11

Flash30005 ha scritto:Io ti do un aiutino con una macro...
Codice: Seleziona tutto
Sub TrovaValori()
r4 = Cells(Rows.Count, 1).End(xlUp).Row
For RR = 2 To r4
    StrK = ""
    StrM = ""
    StrL = Range("L" & RR).Value
    StrL = Replace(StrL, "</tr>", "")
    StrL = Replace(StrL, "<tr>", "")
    StrL = Replace(StrL, Chr(10), "")
    If InStrRev(StrL, "Kg.") = 0 Then GoTo salta
    MisStrK = Len(Mid(StrL, InStrRev(StrL, "Kg."), Len(StrL)))
    MiaStrP = Len(Mid(StrL, 1, InStrRev(StrL, "Peso ") + 5))
    StrK = Mid(StrL, InStrRev(StrL, "Peso ") + 5, Len(StrL) - MiaStrP - MisStrK)
    Range("P" & RR).Value = StrK
salta:
    If InStrRev(StrL, "mm.") = 0 Then GoTo Salta2
    MisStrM = Len(Mid(StrL, InStrRev(StrL, "mm."), Len(StrL))) + 4
    MiaStrI = Len(Mid(StrL, 1, InStrRev(StrL, "ingombro ") + 5))
    StrM = Mid(StrL, InStrRev(StrL, "ingombro ") + 9, Len(StrL) - MiaStrI - MisStrM)
    Range("Q" & RR).Value = StrM
Salta2:
Next RR
End Sub

eseguila e dovresti avere dei valori in ogni cella P e Q (se esiste il parametro)

Fai sapere
ciao


Grazie mille... sembra funzionare alla grande.

Un'ultima cosa.. é possibile far restituire il valore "4" laddove non trova "Kg." e il valore "0" laddove non trova "mm."

Funziona bene ma quando nella cella non trova Kg. e mm. lascia la cella vuota.

Ti chiedo quest'ultima cosa. Grazie di cuore.
LoLLo.il.PoLLo1
Newbie
 
Post: 1
Iscritto il: 01/07/10 17:08

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi Flash30005 » 01/07/10 21:40

Non è difficile ciò che chiedi.
Pensa che essendomi trovato in quella situazione la macro mi andava in errore.
Se guardi in una riga ho messo riparo a quell'evento (sia per i Kg che per i mm)

vediamo se riesci a "scovare" da solo quali sono le righe (due) che effettuano quel controllo...
Perché se le trovi sarai capace da solo a far fare alla macro ciò che vuoi ;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo3 » 01/07/10 21:52

Flash30005 ha scritto:Non è difficile ciò che chiedi.
Pensa che essendomi trovato in quella situazione la macro mi andava in errore.
Se guardi in una riga ho messo riparo a quell'evento (sia per i Kg che per i mm)

vediamo se riesci a "scovare" da solo quali sono le righe (due) che effettuano quel controllo...
Perché se le trovi sarai capace da solo a far fare alla macro ciò che vuoi ;)

Ciao


Guarda ci ho provato ma non ci arrivo. Di VBA proprio non ne capisco.

Mi diresti cosa fare ?
LoLLo.il.PoLLo3
Newbie
 
Post: 5
Iscritto il: 01/07/10 21:51

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo3 » 01/07/10 22:09

Guarda ho provato a ritoccare la macro così... ma non va...

Dovrebbe dare 5 quando non trova Kg. e 1 quando non trova mm.

Ma mi da errore

Codice: Seleziona tutto
Sub TrovaValori()
r4 = Cells(Rows.Count, 1).End(xlUp).Row
For RR = 2 To r4
    StrK = ""
    StrM = ""
    StrL = Range("L" & RR).Value
    StrL = Replace(StrL, "</tr>", "")
    StrL = Replace(StrL, "<tr>", "")
    StrL = Replace(StrL, Chr(10), "")
    If InStrRev(StrL, "Kg.") <> 0 Then MisStrK = Len(Mid(StrL, InStrRev(StrL, "Kg."), Len(StrL)))
    MiaStrP = Len(Mid(StrL, 1, InStrRev(StrL, "Peso ") + 5))
    StrK = Mid(StrL, InStrRev(StrL, "Peso ") + 5, Len(StrL) - MiaStrP - MisStrK)
    Range("P" & RR).Value = StrK
    If InStrRev(StrL, "Kg.") = 0 Then Range("P" & RR).Value = 4
    If InStrRev(StrL, "mm.") <> 0 Then MisStrM = Len(Mid(StrL, InStrRev(StrL, "mm."), Len(StrL))) + 4
    MiaStrI = Len(Mid(StrL, 1, InStrRev(StrL, "ingombro ") + 5))
    StrM = Mid(StrL, InStrRev(StrL, "ingombro ") + 9, Len(StrL) - MiaStrI - MisStrM)
    Range("Q" & RR).Value = StrM
    If InStrRev(StrL, "mm.") = 0 Then Range("Q" & RR).Value = 1

Next RR
End Sub
LoLLo.il.PoLLo3
Newbie
 
Post: 5
Iscritto il: 01/07/10 21:51

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo3 » 01/07/10 22:20

Ciao... rieccomi.

Ho corretto il codice così e mi fa quello che chiedo.

Se non trova Kg. mette il valore "4"

Se non trova mm. mette il valore "NON DISP."

Funziona bene ma quando la eseguo mi da errore di runtime '5'...

Perché se poi invece fa ciò che dico ?
LoLLo.il.PoLLo3
Newbie
 
Post: 5
Iscritto il: 01/07/10 21:51

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo3 » 01/07/10 22:21

LoLLo.il.PoLLo3 ha scritto:Ciao... rieccomi.

Ho corretto il codice così e mi fa quello che chiedo.

Se non trova Kg. mette il valore "4"

Se non trova mm. mette il valore "NON DISP."

Funziona bene ma quando la eseguo mi da errore di runtime '5'...

Perché se poi invece fa ciò che dico ?


Scusa nel messaggio precedente avevo dimenticato il codice

Codice: Seleziona tutto
Sub TrovaValori()
r4 = Cells(Rows.Count, 1).End(xlUp).Row
For RR = 2 To r4
    StrK = ""
    StrM = ""
    StrL = Range("L" & RR).Value
    StrL = Replace(StrL, "</tr>", "")
    StrL = Replace(StrL, "<tr>", "")
    StrL = Replace(StrL, Chr(10), "")
    If InStrRev(StrL, "Kg.") <> 0 Then MisStrK = Len(Mid(StrL, InStrRev(StrL, "Kg."), Len(StrL)))
    MiaStrP = Len(Mid(StrL, 1, InStrRev(StrL, "Peso ") + 5))
    StrK = Mid(StrL, InStrRev(StrL, "Peso ") + 5, Len(StrL) - MiaStrP - MisStrK)
    Range("P" & RR).Value = StrK
    If InStrRev(StrL, "Kg.") = 0 Then Range("P" & RR).Value = 4
    If InStrRev(StrL, "mm.") <> 0 Then MisStrM = Len(Mid(StrL, InStrRev(StrL, "mm."), Len(StrL))) + 4
    MiaStrI = Len(Mid(StrL, 1, InStrRev(StrL, "ingombro ") + 5))
    StrM = Mid(StrL, InStrRev(StrL, "ingombro ") + 9, Len(StrL) - MiaStrI - MisStrM)
    Range("Q" & RR).Value = StrM
    If InStrRev(StrL, "mm.") = 0 Then Range("Q" & RR).Value = "Non Disp."

Next RR
End Sub
LoLLo.il.PoLLo3
Newbie
 
Post: 5
Iscritto il: 01/07/10 21:51

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi Flash30005 » 01/07/10 22:23

Allora vediamo
la riga codice l'hai indovinata (farò l'esempio solo per i Kg)
Codice: Seleziona tutto
    If InStrRev(StrL, "Kg.") = 0 Then GoTo salta         ' <<<< questa
    MisStrK = Len(Mid(StrL, InStrRev(StrL, "Kg."), Len(StrL)))
    MiaStrP = Len(Mid(StrL, 1, InStrRev(StrL, "Peso ") + 5))
    StrK = Mid(StrL, InStrRev(StrL, "Peso ") + 5, Len(StrL) - MiaStrP - MisStrK)
    Range("P" & RR).Value = StrK
salta:

Tu vuoi che quando non trova i Kg quindi quando è uguale a 0 deve attribuire 5 a Kg che in realtà è la variabile Strk (giusto?)
Allora la macro va modificata così
Codice: Seleziona tutto
    If InStrRev(StrL, "Kg.") = 0 Then      '<<< modifica perché devi dare alla variabile StrK il valore 5 e poi saltare
StrK = 5     '<<<< aggiungere per dare a StrK il valore 5
GoTo salta   '<<<< salto della routine
end if     '<<<< aggiungere perché l'IF non è su una unica riga
    MisStrK = Len(Mid(StrL, InStrRev(StrL, "Kg."), Len(StrL)))
    MiaStrP = Len(Mid(StrL, 1, InStrRev(StrL, "Peso ") + 5))
    StrK = Mid(StrL, InStrRev(StrL, "Peso ") + 5, Len(StrL) - MiaStrP - MisStrK)
salta:                                    '<<<< spostare qui l'etichetta Salta in maniera da attribuire alla cella P il valore assegnato
    Range("P" & RR).Value = StrK

Ripeti le stesse modifiche per i millimetri
Fai sapere
Ciao
Ps. Attenzione il codice l'ho realizzato direttamente nel messaggio, non l'ho testato, ma dovrebbe funzionare
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi LoLLo.il.PoLLo3 » 01/07/10 22:41

Flash sei un mito.

Ultimo consiglio... mi diresti dove potrei scaricare un buon manuale di VBA in PDF ?

voglio studiare un pò
LoLLo.il.PoLLo3
Newbie
 
Post: 5
Iscritto il: 01/07/10 21:51

Re: [EXCEL] Ricerca di un testo specifico e restituzione valore

Postdi Flash30005 » 02/07/10 00:00

Non saprei... :roll:
non ne mai aperto uno :lol:

Hai un ottimo tutorial nell'help in linea di excel, access etc
se tutto ciò non è sufficiente fai una ricerca su internet troverai diverso materiale a proposito ma fai attenzione...
Molte query su Google ti (ri)porteranno qui ;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Ricerca di un testo specifico e restituzione valore":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 83 ospiti