ho il seguente problema: devo classificare delle descrizioni in base a delle parole chiave contenute. Pensavo di creare una tabella nel foglio DECODIFICHE con le relazioni parola chiave - decodifica e accanto alla cella descrizione effettuare una ricerca in modo che, se nella descrizione era presente una parola chiave presente nel foglio DECODIFICHE, veniva visualizzata la corrispondente classificazione.
Sono riuscito a farlo per una sola coppia di parola chiave - decodifica utilizzando la seguente funzione : SE(VAL.ERRORE(RICERCA(DECODIFICHE.$B$2;E2));"";DECODIFICHE.$C$2)
mi piacerebbe poterlo fare, però, includendo tutte le parole chiave e eventualmente, se esistono più corrispondenze, concatenarle tra loro.
Nella colonna DECODIFICHE.B2:B10 ho le parole chiave; nella colonna DECODIFICHE.C2:C10 ho le decodifiche; nella colonna E2: E20 ho le descrizioni; il risultato deve essere mostrato nella colonna F2:F20
E' possibile?
[Risolto] ricerca ciclica
[Risolto] ricerca ciclica
OpenOffice 3.2 su Windows Vista / OpenOffice su Ubuntu 9.04
Re: ricerca ciclica
con metodo:
-cerchiamo tutte le parole CHIAVE (PC) nella stringa
-poichè le PC sono solo 8 puoi fare una ricerca specifica su 8 celle diverse, di ogni una di loro usando la funzione RICERCA
-- Elaboriamo i risultati della ricerca
-- ogni termine trovato lo metti nella cella risultato con la funzione CONCATENA
-- (per fare questo devi testare i risultato della ricerca)
....
forse ti può già essere sufficiente questa dritta.
ciao
g
-cerchiamo tutte le parole CHIAVE (PC) nella stringa
-poichè le PC sono solo 8 puoi fare una ricerca specifica su 8 celle diverse, di ogni una di loro usando la funzione RICERCA
-- Elaboriamo i risultati della ricerca
-- ogni termine trovato lo metti nella cella risultato con la funzione CONCATENA
-- (per fare questo devi testare i risultato della ricerca)
....
forse ti può già essere sufficiente questa dritta.
ciao
g
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
Re: ricerca ciclica
ringrazio per il suggerimento ma poi ho risolto diversamente: inserire la decodifica nella formula risultava troppo limitativa, se per un numero basso di parole chiave - codifiche andava bene, diventava poco gestibile se queste nel futuro sarebbero cresciute.
Ho quindi tentato di risolvere creando una funzione personalizzata (non ne avevo mai create) e si è aperto un mondo
Ho creato a dire la verità due funzioni una che restituisce solo la decodifica dell'ultima parola chiave trovata (CODIFICA (cella)) e una che mi restituisce le decodifiche di tutte le parole chiave trovate (COD_TUTTO(cella)). In una sub CARICACODIFICHE ho valorizzato un array (decodifiche$) con parola chiave - codifica.
Riporto il risultato:
Public decodifiche$ (200,1)
'FUNZIONE CHE, DATO UN TESTO, CERCA SE SONO CONTENUTE DELLE PAROLE CHIAVE
'E RESTITUISCE LA CODIFICA DELL'ULTIMA PAROLA CHIAVE TROVATA
Function CODIFICA (z) as string
Dim ricerca as integer
Dim esiste as integer
Dim x as integer
CARICACODIFICHE
'INIZIALIZZAZIONE
CODIFICA = ""
x=0
do while decodifiche$(x,0)<>""
ricerca = instr(z,decodifiche$(x,0))
if ricerca >0 then
CODIFICA=decodifiche$(x,1)
end if
x=x+1
loop
if CODIFICA = "" then
CODIFICA="VARIE"
end if
End Function
'FUNZIONE CHE, DATO UN TESTO, CERCA SE SONO CONTENUTE DELLE PAROLE CHIAVE
'E RESTITUISCE LA CONCATENAZIONE DELLE CODIFICHE DELLE PAROLE CHIAVE TROVATE
Function COD_TUTTO (z) as string
Dim ricerca as integer
Dim esiste as integer
Dim x as integer
CARICACODIFICHE
'INIZIALIZZAZIONE
COD_TUTTO = ""
x=0
'CICLO
do while decodifiche$(x,0)<>""
ricerca = instr(z,decodifiche$(x,0))
if ricerca >0 then
if COD_TUTTO = "" then
COD_TUTTO = decodifiche$(x,1)
else
esiste = instr(COD_TUTTO,decodifiche$(x,1))
rem scrivo solo se non è ancora presente
if esiste=0 then
COD_TUTTO = COD_TUTTO + " - " + decodifiche$(x,1)
end if
end if
end if
x=x+1
loop
if COD_TUTTO = "" then
COD_TUTTO = "VARIE"
end if
End Function
Ho quindi tentato di risolvere creando una funzione personalizzata (non ne avevo mai create) e si è aperto un mondo
Ho creato a dire la verità due funzioni una che restituisce solo la decodifica dell'ultima parola chiave trovata (CODIFICA (cella)) e una che mi restituisce le decodifiche di tutte le parole chiave trovate (COD_TUTTO(cella)). In una sub CARICACODIFICHE ho valorizzato un array (decodifiche$) con parola chiave - codifica.
Riporto il risultato:
Public decodifiche$ (200,1)
'FUNZIONE CHE, DATO UN TESTO, CERCA SE SONO CONTENUTE DELLE PAROLE CHIAVE
'E RESTITUISCE LA CODIFICA DELL'ULTIMA PAROLA CHIAVE TROVATA
Function CODIFICA (z) as string
Dim ricerca as integer
Dim esiste as integer
Dim x as integer
CARICACODIFICHE
'INIZIALIZZAZIONE
CODIFICA = ""
x=0
do while decodifiche$(x,0)<>""
ricerca = instr(z,decodifiche$(x,0))
if ricerca >0 then
CODIFICA=decodifiche$(x,1)
end if
x=x+1
loop
if CODIFICA = "" then
CODIFICA="VARIE"
end if
End Function
'FUNZIONE CHE, DATO UN TESTO, CERCA SE SONO CONTENUTE DELLE PAROLE CHIAVE
'E RESTITUISCE LA CONCATENAZIONE DELLE CODIFICHE DELLE PAROLE CHIAVE TROVATE
Function COD_TUTTO (z) as string
Dim ricerca as integer
Dim esiste as integer
Dim x as integer
CARICACODIFICHE
'INIZIALIZZAZIONE
COD_TUTTO = ""
x=0
'CICLO
do while decodifiche$(x,0)<>""
ricerca = instr(z,decodifiche$(x,0))
if ricerca >0 then
if COD_TUTTO = "" then
COD_TUTTO = decodifiche$(x,1)
else
esiste = instr(COD_TUTTO,decodifiche$(x,1))
rem scrivo solo se non è ancora presente
if esiste=0 then
COD_TUTTO = COD_TUTTO + " - " + decodifiche$(x,1)
end if
end if
end if
x=x+1
loop
if COD_TUTTO = "" then
COD_TUTTO = "VARIE"
end if
End Function
OpenOffice 3.2 su Windows Vista / OpenOffice su Ubuntu 9.04