yahoo-pier_andreit ha scritto:
Guido (email.it) ha scritto:
yahoo-pier_andreit ha scritto:
Guido (email.it) ha scritto:
yahoo-pier_andreit ha scritto:
Paolo Giovanni Zanin ha scritto:
....
io volevo usare val.numero per estrarre
dalla stringa dei numeri quando fossero presenti,
...
la parte alfabetica e' molto variabile, nelle prove che facevo ne usavo
una corta per capire
stringa di esempio:
valutazioni riferite agli anni (1996-2002) delle 15 versioni di
materiale [forst][develope](red12)(strong.23)
SE quella indicata è LA STRINGA TIPO (altrimenti estendi il
ragionamento) puoi operare come segue
Cerca il segno "-" [ funzione =Ricerca ]
=stringa.estrai quattro caratteri prima e quattro dopo - hai ottenuto
i due anni
Cerca il segno ") (" [ funzione =Ricerca ]
=stringa.estrai prendi due caratteri prima ottengo il 12
....
e così di seguito.
Ovviamente le stringhe da analizzare devono avere una certa regolarità
nella sintassi
no nessuna regolarita' ne nella sintassi ne nella lunghezza, l'unica
cosa che le accomuna e' la presenza dei numeri, e non trovo nessuna
cacchio di funzione che mi riconosca un numero in una stringa??
Per questo tipo di trasformazione è IMPORTANTISSIMO l'analisi dei dati
partenza.
ti consente di limitare lo sforzo di sviluppo.
ALTRIMENTI
Scompatti la stringa un carattere in ogni colonna .... e lavori su
quelli ....
miii quante colonne :-)) va a finire che e' l'unica
ALTRIMENTI
scrivi una piccola macro di analisi stringa....
volevo evitare macro
ciao
g
Questa macro l'ho registrata come funzione in macro personali
non e' scritta molto bene, ma mi sembra funzioni,
estraendo il primo o il secondo numero presente in una stringa.
ciao
Beppe
Function val_cella ( tTesto, optional nNumero as integer) as integer
Dim sRiga as string
nFineNum = 0
sRiga = ""
sRiga = tTesto
nValore1 = 0
nValore2 = 0
nFineNum = 0
nNum = 0
rem controlla che il numero sia compreso tra 1 e 2
if ((nNumero < 1) OR (nNumero > 2)) then
nNumero = 1
endif
rem scansiona la stringa per controllare la presenza di numeri,
rem si interrompe su un carattere non numerico
rem compresi il punto o la virgola
for i = 1 to Len(sRiga)
if ((nFineNum = 0 ) AND (Mid(sRiga, i, 1) = CStr(CInt( Mid(sRiga,
i, 1)))) ) then
nValore1 = nvalore1 * 10 + CInt( Mid(sRiga, i, 1))
nNum = i
endif
if ( (nValore1 > 0) AND (Mid(sRiga, i, 1) <> CStr(CInt(
Mid(sRiga, i, 1)))) ) then
nFineNum = 1
endif
next i
nNum = nNum + 1
nFineNum = 0
for i = nNum to Len(sRiga)
if ((nFineNum = 0 ) AND (Mid(sRiga, i, 1) = CStr(CInt( Mid(sRiga,
i, 1)))) ) then
nValore2 = nvalore2 * 10 + CInt( Mid(sRiga, i, 1))
endif
if ( (nValore2 > 0) AND (Mid(sRiga, i, 1) <> CStr(CInt(
Mid(sRiga, i, 1)))) ) then
nFineNum = 1
endif
next i
rem restituisce il secondo o il primo numero trovato
if ( nNumero > 1 ) then
val_cella() = nValore2
else
val_cella() = nValore1
endif
End Function
--
le nuvole non hanno regole,
perchè non hanno mai rinunciato
alla libertà di sognare.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]