[Risolto] ricerca ciclica

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
pabacca
Messaggi: 2
Iscritto il: giovedì 13 gennaio 2011, 11:51

[Risolto] ricerca ciclica

Messaggio da pabacca »

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?
OpenOffice 3.2 su Windows Vista / OpenOffice su Ubuntu 9.04
Avatar utente
Gumo
Messaggi: 1227
Iscritto il: lunedì 15 marzo 2010, 13:43
Località: IT

Re: ricerca ciclica

Messaggio da Gumo »

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
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 !
pabacca
Messaggi: 2
Iscritto il: giovedì 13 gennaio 2011, 11:51

Re: ricerca ciclica

Messaggio da pabacca »

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 :D

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
Rispondi