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]

Rispondere a