Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Estrarre una parte variabile di un stringa di testo da una stringa

Ultimo Aggiornamento: 28/02/2023 11:24
Post: 1
Registrato il: 26/07/2019
Città: TORRACA
Età: 60
Utente Junior
11
OFFLINE
27/02/2023 12:00

Ciao.

Io ho una stringa di 18 caratteri alfanumerici che inizia con un numero variabile di zero e termina con un identificativo della stazione di campionamento formata da un numero variabile di caratteri alfanumerici. Sotto trovate alcuni esempi:

0000000SMR_COM_WA5
000000000000VAD120
000000IT_m1vt04_12

Io dovrei da queste stringhe solo la parte priva della serie di zeri posti a sinistra, il cui numero è però variabile.
La cosa è un po' più complicata perché in alcuni casi, per fortuna pochi, la sigla della stazione inizia con 1 o 2 zeri. Non credo che si possa si possa prevedere questo caso nella formula; vuol dire che aggiungerò gli zero manualmente.

Purtroppo non sono riuscito a implementare una formula che faccia questo. E' possibile farlo con una formula oppure bisogna ricorre ad un piccolo script in VBA ?

Grazie
Post: 2.858
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
27/02/2023 16:33

ciao
in A2 la prima stringa

=STRINGA.ESTRAI(A2;CONFRONTA(VERO;VAL.ERRORE(VALORE(STRINGA.ESTRAI(A2;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A2)));1)));0);100)

senza indiretto
=STRINGA.ESTRAI(A2;CONFRONTA(VERO;VAL.ERRORE(VALORE(STRINGA.ESTRAI(A2;RIF.RIGA($1:$100);1)));0);100)

se vuoi puoi aggiungere ANNULLA.SPAZI(formula)

dovrebbe essere matriciale
ctrl maiuscolo invio
[Modificato da federico460 27/02/2023 16:36]
Post: 1
Registrato il: 26/07/2019
Città: TORRACA
Età: 60
Utente Junior
11
OFFLINE
27/02/2023 16:57

Grazie mille funziona su gran parte delle stringhe.
Su questa
00004-MS00200_TR03
la tua prima formula mi genera:
-MS00200_TR03 invece che 4-MS00200_TR03.
Come mai ?
Post: 2.859
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
27/02/2023 17:12

ciao
mi sono basato sull'esempio
infatti cerca la prima lettera della stringa

=STRINGA.ESTRAI(A1;CONFRONTA(VERO;(STRINGA.ESTRAI(A1;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A1)));1)<>"0");0);LUNGHEZZA(A1))
[Modificato da federico460 27/02/2023 17:28]
Post: 3.400
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
27/02/2023 17:17

ciao


[ c u t ]
....formula errata......

che figura di m......

edit: ci riprovo:

=STRINGA.ESTRAI(A2;CONFRONTA(VERO;(STRINGA.ESTRAI(A2;RIF.RIGA(INDIRETTO("1:"&LUNGHEZZA(A2)));1)<>"0");0);LUNGHEZZA(A2))
matriciale

saluti a tutti
[Modificato da dodo47 27/02/2023 17:24]
Domenico
Win 10 - Excel 2016
Post: 2.406
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
27/02/2023 17:47

ciao a tutti

con una UDF in VBA
da inserire in un Modulo Standar


Function EliminaZero(ByVal stringa As String) As String
Dim i As Long
Dim car1 As String
For i = 1 To Len(stringa)
car1 = Mid(stringa, i, 1)
If car1 <> Chr(48) Then
EliminaZero = Mid(stringa, i, 50)
Exit Function
End If
Next i
End Function




Ciao da locate
excel 2007 / 13
Post: 2.407
Registrato il: 21/03/2008
Città: LOCATE VARESINO
Età: 76
Utente Veteran
2007 / 13
OFFLINE
27/02/2023 17:47

ciao a tutti

con una UDF in VBA
da inserire in un Modulo Standar


Function EliminaZero(ByVal stringa As String) As String
Dim i As Long
Dim car1 As String
For i = 1 To Len(stringa)
car1 = Mid(stringa, i, 1)
If car1 <> Chr(48) Then
EliminaZero = Mid(stringa, i, 50)
Exit Function
End If
Next i
End Function




Ciao da locate
excel 2007 / 13
Post: 2
Registrato il: 26/07/2019
Città: TORRACA
Età: 60
Utente Junior
11
OFFLINE
28/02/2023 11:24

OK
Grazie.
Alla fine la formula di Dodo47 ha funzionato !!!
😀
Vota: 15MediaObject5,0028 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 10:48. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com