È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Estrazione numeri da stringa

Ultimo Aggiornamento: 13/02/2017 15:13
Post: 179
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
07/02/2011 16:47

Stavo cercando una soluzione per estrarre numeri da una stringa di testo in qualunque posizione si trovino all'interno della stringa ho trovato una formula nel sito di microsoft office ma non trovo il modo di farla funzionare
=1*STRINGA.ESTRAI(A1,CONFRONTA(TRUE,VAL.NUMERO(1*STRINGA.ESTRAI(A1,RIGA($1:$9),1)),0),CONTA.NUMERI(1*STRINGA.ESTRAI(A1,RIGA($1:$9),1)))

questo è il link dove l'ho presa
http://office.microsoft.com/it-it/excel-help/estrazione-di-numeri-da-stringhe-alfanumeriche-HA001154901.aspx

adesso in quela formula il problema che trovo dopo averla corretta cambiando le , in ; e true con vero è la funzione Riga($1:$9)
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 42
Registrato il: 18/08/2008
Città: CALCIO
Età: 62
Utente Junior
2013
OFFLINE
07/02/2011 17:40

Ciao

ho provato a modificare la formula:

=1*STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;Riga($1:$9);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;Riga($1:$9);1)))


Ho modificato la punteggiatura ";" e VERO

Domanda n.1 Riga non è scritta in MAIUSCOLO
Io non ho questa formula attiva

S.O. win XP: EXCEL 2000-2003
S.O. Windows8: EXCEL 2013
Post: 179
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
07/02/2011 18:16

neanche io ho quella formula attiva ma se vedi il link sul sito ufficiale di office la mette come formula il problema credo sia nella funzione riga che da quello che ho capito dovrebbe controllare i caratteri da 1 a 9 in quella impostazione ma non è cosi mi chiedevo se qualcuno di voi avesse un'alternativa fattibile
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 600
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Senior
2007 / 13
OFFLINE
07/02/2011 18:32

ciao a tutti e due
questa funzione per fare questo lavoro lavevo gia' postata molto tempo fa, richiesta da qualcuno in questo o in altro forum, comunque ve la riposto, va messa in un modulo e utilizzata come una funzione di excel ad un parametro
ess se in a1 avete abc123nutr dovete estrarre solo 123 scriverete
=trova_num(a1)
-------------
Function trova_num(Stringa As String) As String ''trova i numeri in una stringa
Application.Volatile
Dim numeri As Long, i As Long
Stringa = StrConv(Stringa, vbUpperCase)
i = 1
numeri = "0"
For i = 1 To Len(Stringa)
numeri = Asc(Mid(Stringa, i, 1))
Select Case numeri
Case "48" To "57"
trova_num = trova_num & Chr(numeri)
Case Else
End Select
Next
Exit Function
End Function '' uso =trova_num()
-----------
ciao da locate buon [SM=x423051]
EXCEL 2003
Ciao da locate
excel 2007 / 13
Post: 69
Registrato il: 27/09/2010
Città: FIRENZE
Età: 61
Utente Junior
Excel 2010
OFFLINE
07/02/2011 21:50

estrazione numeri da una stringa

Ciao,

prova a sostituire RIGA con RIF.RIGA: la formula è stata tradotta male dall'inglese (ROW=RIGA).

E' da inserire con control+maiusc+invio: l'ho provata, funziona.

Saluti a tutti
[Modificato da (Canapone) 07/02/2011 21:54]

Post: 182
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
07/02/2011 22:04

io avevo gia fatto questa prova ma non sono riuscito nel farla funzionare mi posti il fil er favore
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 183
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
07/02/2011 22:07

grazie funziona quando ho fatto la prova con rif.riga non l'ho messa sotto matrice dando per scontato che non funzionasse
sei un grande
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 601
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Senior
2007 / 13
OFFLINE
07/02/2011 23:32

ciao clandestino
intanto saluto canapone sempre presente
ti scrivo per dirti che la funzione che ai trovato nel sito di microsoft a suo tempo lavevo gia' scaricata ma lo dovuta abbandonare perche' se ti capita come e' stato per il problema posto in quella discussione di estrarre da una stringa di una vecchia rubrica sia nominativi che numeri di telefono questi si comportava non proprio giusto al suo scopo, qindi allora avevo creato due funzioni una per le parole e una per i numeri. prova e vedrai con questi esempi semplici a ricavare i numeri di telefono,
PS erano piu' di 10000
-------------
ROSSI MARIO 392/9074542
ROSSI CELESTE 392-3654879
392-4192785 BIANCHI MARIO
392-5602074 BIANCHI ANGELO
BRAMBILLA S 02-9870784
BRAMBILLA C 393-0589576
393 1141308 SALVI A
393 1677804 SALVI E
393 . 4557720 VERDI S
VERDI MAURO393 . 7162089
VERDI LUIGI 393/0050369
393 3363324 ROSSI ANGELO
393 6160481 ROSSI ERNESTO
GALLO E 393/0132916
GALLO G 3930435209
393-1718693 GALLO LUIGI
093.2086578 GALLO NANDO
393.3765311 GALLO PAOLO
FERLINI 0314677035 MEO
FERLINI 093.5935644 DAVIDE
FERLINI 3936350969 PADRE
ANTONIO 0032185 012
------- questo e' quello che devi trovare
ROSSI MARIO 3929074542
ROSSI CELESTE 3923654879
BIANCHI MARIO 3924192785
BIANCHI ANGELO 3925602074
BRAMBILLA S 029870784
BRAMBILLA C 3930589576
SALVI A 3931141308
SALVI E 3931677804
VERDI S 3934557720
VERDI MAURO 3937162089
VERDI LUIGI 3930050369
ROSSI ANGELO 3933363324
ROSSI ERNESTO 3936160481
GALLO E 3930132916
GALLO G 3930435209
GALLO LUIGI 3931718693
GALLO NANDO 0932086578
GALLO PAOLO 3933765311
FERLINI MEO 0314677035
FERLINI DAVIDE 0935935644
FERLINI PADRE 3936350969
ANTONIO 0032185012
----------------
ciao da locate e buon [SM=x423051]
Excel 2003
Ciao da locate
excel 2007 / 13
Post: 184
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
08/02/2011 02:16

guarda io non avevo il tuo stesso problema pero ho risolto il tuo
ti allego il file
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 602
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Senior
2007 / 13
OFFLINE
08/02/2011 10:53

ciao clandestino
potresti postare la funzione che ai utilizzato per la versione excel 2003 dato che se apro il tuo file e' in versione 2007 e' come presumo stai utilizzando funzioni di 2007/10 che non vengono riconosciute per le versioni 97/2003 quindi danno come riferimento in colonna B:B {=#VALORE!} quindi errore
ti rincrazio
ciao da locate
EXCEL 2003
Ciao da locate
excel 2007 / 13
Post: 186
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
08/02/2011 11:29

=RIMPIAZZA(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);LUNGHEZZA(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1)))))-CONTA.NUMERI(1*STRINGA.ESTRAI(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1))));RIF.RIGA($1:$1000);1))+CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1))));CONFRONTA(FALSO;VAL.NUMERO(1*STRINGA.ESTRAI(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1))));RIF.RIGA($1:$1000);1));0);LUNGHEZZA(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1)))))-CONTA.NUMERI(1*STRINGA.ESTRAI(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1))));RIF.RIGA($1:$1000);1));"")
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 187
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
08/02/2011 11:29

dopo devi solo metterla sotto matrice ed è riferita alla cella a1
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 188
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
08/02/2011 12:18

dimenticavo laformula per estrarre solo il nome

=ANNULLA.SPAZI(SOSTITUISCI(A1;ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);LUNGHEZZA(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1)))))-CONTA.NUMERI(1*STRINGA.ESTRAI(ANNULLA.SPAZI(STRINGA.ESTRAI(A1;CONFRONTA(VERO;VAL.NUMERO(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1));0);CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1))));RIF.RIGA($1:$1000);1))+CONTA.NUMERI(1*STRINGA.ESTRAI(A1;RIF.RIGA($1:$1000);1))));""))
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 603
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Senior
2007 / 13
OFFLINE
08/02/2011 12:47

ciao clandestino
questa funzione che tu ai proposto puo' funzionare solo con versione 2007/10 perche' con piu' di 7 nidificazioni max supportate da 2000/3
eccho perche' avevo creato la macro per questo lavoro, excel 2007 lo uso anch'io sul pc di mia figlia ma le richieste in forum sono sempre e la maggiorparte rivolte a versione 2003 e precedente vedi riferimenti a versioni, quindi non utilizzabili.
PS prova a salvare in 2003 e vedrai che non lo acconsente e mette un errore
ciao da locate e buon [SM=x423051]
EXCEL 2003
Ciao da locate
excel 2007 / 13
Post: 189
Registrato il: 21/02/2010
Utente Junior
Clandestino
OFFLINE
08/02/2011 13:01

hai pefettamente ragione ma per farla funzionare dovrei lavorarci dal 2003 per farla funzionare
il mio problema è che non capito bene come funziona la compatibilità tra le due versioni
By Clandestino



Non sono niente...
Non sarò mai niente...
Non posso voler di esser niente...
A parte questo, ho in me tutti i sogni del mondo!!!

Versione Excel 2007/2010
Post: 2.126
Registrato il: 14/11/2004
Utente Veteran
Office 2019
OFFLINE
08/02/2011 14:43

Dividi, numeri e lettere
Ciao a tutti ecco una macro che fa il lavoro, unica pecca che quando estrae un numero che incomincia per 0 tipo 021524etc.. non scrive lo 0, ma credo che si possa ovviare formattando la colonna come testo.

Ho fatto la prova e va bene con la colonna in formato testo

divide la stringa in due parti il nome nella colonna C ed il numero nella colonna D.

vedi se va bene, allego il file

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 604
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Senior
2007 / 13
OFFLINE
08/02/2011 17:25

ciao sal
e grazie per il tuo interessamento, ma la questione era scrivere una funzione nidificata piu di 7 per il 2003 e antecedenti, vedi funzione posta da clandestino nei post precedenti, per le funzioni di estrarre numeri e lettere quelle le ho gia' scritte a suo tempo con il vecchio clipper e tradotte quando mi sono servite in VBA, vedi quella da me postata all'inizio la quale trasforma tutto in testo i numeri e per il testo esiste una seconda funzione che usandola abbinata mette sia il testo che numeri nella medesima cella,
la funzione numeri e' quella che vedi sopra il testo e' quella che metto adesso per farci capire
-------
Function trova_car(Stringa As String) As String ''trova tutti i caratteri in una stringa
Application.Volatile
Dim valori As Long, i As Long
Stringa = StrConv(Stringa, vbUpperCase)
i = 1
valori = "0"
For i = 1 To Len(Stringa)
valori = Asc(Mid(Stringa, i, 1))
Select Case valori
Case "65" To "90"
trova_car = trova_car & Chr(valori)
Case "32"
trova_car = trova_car & Chr(valori)
Case Else
End Select
Next
Exit Function
End Function '' uso =TROVA_CAR()
--------------
quindi se usiamo in una cella =TROVA_CAR(A1)&" "&TROVA_NUM(A1), avremo
ROSSI 0987654321 MARIO = ROSSI MARIO 0987654321
e posiiamo anche utilizzare funzioni di excel per esempio annullare spazi allinizio e alla fine
=ANNULLA.SPAZI(TROVA_CAR()) e trasformare i numeri di testo in valori
=VALORE(TROVA_NUM())
la questione come detto era per versioni 2003 e prima senza utilizzo di VBA

ciao da locate e buon [SM=x423051]
EXCEL 2003
Ciao da locate
excel 2007 / 13
Post: 2.128
Registrato il: 14/11/2004
Utente Veteran
Office 2019
OFFLINE
08/02/2011 19:37

Nidificazione
Ciao Locate, la nidificazione dei se() può è stata risolta mettendo "&" di concatena tra una serie ed un altra, prova anche con questa funzione, probabile che funzioni anche con la versione 2000-2003.

Ciao By Sal [SM=x423051]



se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 0
Registrato il: 04/07/2013
Città: TAIBON AGORDINO
Età: 47
Utente Junior
OFFLINE
04/07/2013 09:41

Re: sto impazzendo!!!
[POSTQUOTE][QUOTE:109317346=clandestino83, 08/02/2011 02:16]guarda io non avevo il tuo stesso problema pero ho risolto il tuo
ti allego il file[/QUOTE][/POSTQUOTE]

siete dei mostri, in senso buono!!!
Post: 0
Registrato il: 13/02/2017
Città: MILANO
Età: 39
Utente Junior
OFFLINE
13/02/2017 15:13

non riesco
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 17:03. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com