| | 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
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
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
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 | |
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
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
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 | |
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
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 | |
[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 | |
|
|
|