Discussione:
stringa.estrai da un punto secondario
(troppo vecchio per rispondere)
ale
2012-08-06 15:07:30 UTC
Permalink
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
ma se nella stringa ci fossero due o tre o anche quattro volte questi due punti e io vorrei tirarmi fuori solo il terzo? P.es. ho questa stringa:
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
ciao
ale
ale
2012-08-06 15:12:51 UTC
Permalink
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
ciao
ale
Scusate, solo una precisazione: ovviamente i due punti si posizionano in vari modi, potrei anche trovarmi una stringa tipo:
pippo:::1234 e quindi avere blanc le prime due estrazioni e 1234 nella terza.
ciao
ale
plinius
2012-08-06 20:12:52 UTC
Permalink
Post by ale
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
ciao
ale
pippo:::1234 e quindi avere blanc le prime due estrazioni e 1234 nella terza.
ciao
ale
in A1 la stringa "aless:12345aless:6789aless:01010"
In A3 il numero dell'occorrenza che vogliamo ottenere
In A4
=STRINGA.ESTRAI(A1;TROVA("|";SOSTITUISCI(A1;":";"|";A3))+1;SE(VAL.ERR(TROVA("|";SOSTITUISCI(A1;":";"|";A3+1)));999;TROVA("|";SOSTITUISCI(A1;":";"|";A3+1))-TROVA("|";SOSTITUISCI(A1;":";"|";A3))-1))

Se in A3 c'è 1 si ottiene 12345aless
Se in A3 c'è 2 si ottiene 6789aless
Se in A3 c'è 3 si ottiene 01010
Se in A3 c'è 4 o più si ottiene #VALORE!

Ciao,
E.
ale
2012-08-07 07:45:37 UTC
Permalink
Post by plinius
Post by ale
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
ciao
ale
pippo:::1234 e quindi avere blanc le prime due estrazioni e 1234 nella terza.
ciao
ale
in A1 la stringa "aless:12345aless:6789aless:01010"
In A3 il numero dell'occorrenza che vogliamo ottenere
In A4
=STRINGA.ESTRAI(A1;TROVA("|";SOSTITUISCI(A1;":";"|";A3))+1;SE(VAL.ERR(TROVA("|";SOSTITUISCI(A1;":";"|";A3+1)));999;TROVA("|";SOSTITUISCI(A1;":";"|";A3+1))-TROVA("|";SOSTITUISCI(A1;":";"|";A3))-1))
Se in A3 c'è 1 si ottiene 12345aless
Se in A3 c'è 2 si ottiene 6789aless
Se in A3 c'è 3 si ottiene 01010
Se in A3 c'è 4 o più si ottiene #VALORE!
Ciao,
E.
ciao plinius e grazie per la risposta. Ma quello che vorrei simulare è tipo un "testo in colonne" con delimitatori i due punti. Ma a parte che non mi viene e non ho modo di farlo per mille motivi (tra cui ho delle col a dx), vorrei risolvere con delle formule.
Il fatto è questo: mi arriva una estrazione da un applicativo esterno, e vorrei acquisirmi le info al suo interno. Ho provato la tua formula, ma non è esattamente ciò che volevo. Pensavo ad una cosa tipo:
in A1 c'è aless:12345ale:6789ass:01010ess:12aless:6as:010
e conosco esattamente la qtà del campo da prendere, riuscire così ad avere
in B1 12345 (in pratica 5 caratteri dopo il primo "due punti")
in C1 6789 (in pratica 4 caratteri dopo il secondo "due punti")
in D1 01010 (in pratica 5 caratteri dopo il terzo "due punti")
in E1 12 (in pratica 2 caratteri dopo il quarto "due punti")
in F1 010 (in pratica 3 caratteri dopo il quinto "due punti")
pensi sia possibile.
grazie ancora
ciao
ale
ale
2012-08-07 07:52:18 UTC
Permalink
Post by ale
Post by plinius
Post by ale
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
ciao
ale
pippo:::1234 e quindi avere blanc le prime due estrazioni e 1234 nella terza.
ciao
ale
in A1 la stringa "aless:12345aless:6789aless:01010"
In A3 il numero dell'occorrenza che vogliamo ottenere
In A4
=STRINGA.ESTRAI(A1;TROVA("|";SOSTITUISCI(A1;":";"|";A3))+1;SE(VAL.ERR(TROVA("|";SOSTITUISCI(A1;":";"|";A3+1)));999;TROVA("|";SOSTITUISCI(A1;":";"|";A3+1))-TROVA("|";SOSTITUISCI(A1;":";"|";A3))-1))
Se in A3 c'è 1 si ottiene 12345aless
Se in A3 c'è 2 si ottiene 6789aless
Se in A3 c'è 3 si ottiene 01010
Se in A3 c'è 4 o più si ottiene #VALORE!
Ciao,
E.
ciao plinius e grazie per la risposta. Ma quello che vorrei simulare è tipo un "testo in colonne" con delimitatori i due punti. Ma a parte che non mi viene e non ho modo di farlo per mille motivi (tra cui ho delle col a dx), vorrei risolvere con delle formule.
in A1 c'è aless:12345ale:6789ass:01010ess:12aless:6as:010
e conosco esattamente la qtà del campo da prendere, riuscire così ad avere
in B1 12345 (in pratica 5 caratteri dopo il primo "due punti")
in C1 6789 (in pratica 4 caratteri dopo il secondo "due punti")
in D1 01010 (in pratica 5 caratteri dopo il terzo "due punti")
in E1 12 (in pratica 2 caratteri dopo il quarto "due punti")
in F1 010 (in pratica 3 caratteri dopo il quinto "due punti")
pensi sia possibile.
grazie ancora
ciao
ale
no...forse non si può fare. pensavo, visto che conosco l'esatta qtà dei caratteri, forzavo io la formula, tipo:
STRINGA.ESTRAI(C2; TROVA(":"; C2; 115)+1; 20)
una volta cerco dal ventesimo, poi dal 50esimo, sopra dal 115esimo, ma ho visto che (non so perchè) non sono esattametne tutti allineati...boh.
cia
ale
plinius
2012-08-07 09:09:59 UTC
Permalink
Post by ale
Post by ale
Post by plinius
Post by ale
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
ciao
ale
pippo:::1234 e quindi avere blanc le prime due estrazioni e 1234 nella terza.
ciao
ale
in A1 la stringa "aless:12345aless:6789aless:01010"
In A3 il numero dell'occorrenza che vogliamo ottenere
In A4
=STRINGA.ESTRAI(A1;TROVA("|";SOSTITUISCI(A1;":";"|";A3))+1;SE(VAL.ERR(TROVA("|";SOSTITUISCI(A1;":";"|";A3+1)));999;TROVA("|";SOSTITUISCI(A1;":";"|";A3+1))-TROVA("|";SOSTITUISCI(A1;":";"|";A3))-1))
Se in A3 c'è 1 si ottiene 12345aless
Se in A3 c'è 2 si ottiene 6789aless
Se in A3 c'è 3 si ottiene 01010
Se in A3 c'è 4 o più si ottiene #VALORE!
Ciao,
E.
ciao plinius e grazie per la risposta. Ma quello che vorrei simulare è tipo un "testo in colonne" con delimitatori i due punti. Ma a parte che non mi viene e non ho modo di farlo per mille motivi (tra cui ho delle col a dx), vorrei risolvere con delle formule.
in A1 c'è aless:12345ale:6789ass:01010ess:12aless:6as:010
e conosco esattamente la qtà del campo da prendere, riuscire così ad avere
in B1 12345 (in pratica 5 caratteri dopo il primo "due punti")
in C1 6789 (in pratica 4 caratteri dopo il secondo "due punti")
in D1 01010 (in pratica 5 caratteri dopo il terzo "due punti")
in E1 12 (in pratica 2 caratteri dopo il quarto "due punti")
in F1 010 (in pratica 3 caratteri dopo il quinto "due punti")
pensi sia possibile.
grazie ancora
ciao
ale
STRINGA.ESTRAI(C2; TROVA(":"; C2; 115)+1; 20)
una volta cerco dal ventesimo, poi dal 50esimo, sopra dal 115esimo, ma ho visto che (non so perchè) non sono esattametne tutti allineati...boh.
cia
ale
Sinceramente non ci ho capito più niente.
Sai già in anticipo numero e posizione dei ":"?
Conosci la lunghezza della parte da prelevare dopo ciascun ":" oppure
devi prelevare solo le cifre, quante siano non importa, interrommpendo
alla prima lettera incontrata?
Chiarisci bene questi elementi aggiungendo magari degli esempi.
Ad occhio, se devi estrarre solo le cifre dopo i due punti e non ne
conosci la posizione, la soluzione ottimale mi parrebbe una UDF.

Fai sapere,
E.
Mauro Gamberini
2012-08-07 09:50:54 UTC
Permalink
"ale" ha scritto nel messaggio news:74425cff-f203-4568-9e3a-***@googlegroups.com...

Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto
ciò che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
ma se nella stringa ci fossero due o tre o anche quattro volte questi due
punti e io vorrei tirarmi fuori solo il terzo? P.es. ho questa stringa:
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in
un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
***********************************


Un possibile modo.

Questa UDF da copia/incollare in un modulo standard:

Public Function f(ByVal Stringa As Variant, _
ByVal Separatore As String, _
ByVal Posizione As Long) As String


Dim v As Variant
v = Split(Stringa.Value, Separatore)
f = v(Posizione - 1)

End Function

A1 la tua stringa.
B1: =f(A1;":";3)

Che ti recupera il terzo valore.
In pratica la funzione richiede tre parametri:

Riferimento alla cella
Separatore
Quale dei valori vuoi recuperare

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
ale
2012-08-07 14:35:34 UTC
Permalink
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto
ci� che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
ma se nella stringa ci fossero due o tre o anche quattro volte questi due
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in
un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
***********************************
Un possibile modo.
Public Function f(ByVal Stringa As Variant, _
ByVal Separatore As String, _
ByVal Posizione As Long) As String
Dim v As Variant
v = Split(Stringa.Value, Separatore)
f = v(Posizione - 1)
End Function
A1 la tua stringa.
B1: =f(A1;":";3)
Che ti recupera il terzo valore.
Riferimento alla cella
Separatore
Quale dei valori vuoi recuperare
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
ciao ragazzi e scusate se rispondo solo ora ma non ho avuto un istante. io penso che sia impossibile la mia richiesta. Faccio un es:
ho questa stringa
ale:125adfpippo:sa1212carlo:1212
ora dovrei prelevare ciò che trovo dopo i primi due punti, dopo i secondi due punti e dopo i terzi due punti (sarebbero anche di più i due punti, ma lasciamo stare). Il problema, non gestibile, è che non so quando dovo fermarmi. per cui ad occhio, la prima estrazione, sarebbe 125adf, ma non avendo un criterio logico di stop è impossibile sapere quando fermarsi. Ero convinto di sapere il nr dei caratteri, per cui gestibilissimo. Ma non è così.
Ho cmq risolto in altro modo, mi prendo i dati da un'altra fonte...buona notte al secchio.
Cmq grazie a tutti per i vs interventi.
ciao alla prox
ale
r
2012-08-07 15:38:00 UTC
Permalink
Post by ale
Post by ale
Buonasera a tutti. Diciamo che ho una stringa e vorrei tirarmi fuori tutto
ci� che trovo dopo un punto, due punti (o altro), e quindi con
STRINGA.ESTRAI(C3; TROVA(":"; C3; 1)+1; 20) ci riesco e va bene....
ma se nella stringa ci fossero due o tre o anche quattro volte questi due
aless:12345aless:6789aless:01010
come faccio a estrarre una volta 12345, poi un'altra volta 6789 e poi in
un'altra cella 01010. Pensate sia possibile?
Grazie anche per dei consigli.
***********************************
Un possibile modo.
Public Function f(ByVal Stringa As Variant, _
ByVal Separatore As String, _
ByVal Posizione As Long) As String
Dim v As Variant
v = Split(Stringa.Value, Separatore)
f = v(Posizione - 1)
End Function
A1 la tua stringa.
B1: =f(A1;":";3)
Che ti recupera il terzo valore.
Riferimento alla cella
Separatore
Quale dei valori vuoi recuperare
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
ho questa stringa
ale:125adfpippo:sa1212carlo:1212
ora dovrei prelevare ciò che trovo dopo i primi due punti, dopo i secondi due punti e dopo i terzi due punti (sarebbero anche di più i due punti, ma lasciamo stare). Il problema, non gestibile, è che non so quando dovo fermarmi. per cui ad occhio, la prima estrazione, sarebbe 125adf, ma non avendo un criterio logico di stop è impossibile sapere quando fermarsi. Ero convinto di sapere il nr dei caratteri, per cui gestibilissimo. Ma non è così.
Ho cmq risolto in altro modo, mi prendo i dati da un'altra fonte...buona notte al secchio.
Cmq grazie a tutti per i vs interventi.
ciao alla prox
ale
beh non è lo spirito giusto di aprire un 3d.

Comunque penso che una soluzione potrebbe essere con il testo in A1, in B1:
=ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI($A1;":";RIPETI(" ";99));(RIF.COLONNA(A1)-1)*99+1;99))
da confermate con ctrl+maiusc+invio e trascinare a destra fino a necessità.

saluti
r
paoloard
2012-08-17 09:03:17 UTC
Permalink
"r" ha scritto nel messaggio news:23e63ded-9a07-47fc-9709-***@googlegroups.com...

cut
Comunque penso che una soluzione potrebbe essere con il testo in A1, in B1:
=ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI($A1;":";RIPETI("
";99));(RIF.COLONNA(A1)-1)*99+1;99))
da confermate con ctrl+maiusc+invio e trascinare a destra fino a necessità.

saluti
r

*************************

Mi sembrava che la richiesta in origine fosse di estrarre solo i numeri.

-- ciao paoloard
http://riolab.org

Bruno Campanini
2012-08-08 05:22:45 UTC
Permalink
Post by ale
ciao ragazzi e scusate se rispondo solo ora ma non ho avuto un istante. io
penso che sia impossibile la mia richiesta. Faccio un es: ho questa stringa
ale:125adfpippo:sa1212carlo:1212
ora dovrei prelevare ciò che trovo dopo i primi due punti, dopo i secondi due
punti e dopo i terzi due punti (sarebbero anche di più i due punti, ma
lasciamo stare). Il problema, non gestibile, è che non so quando dovo
fermarmi. per cui ad occhio, la prima estrazione, sarebbe 125adf, ma non
avendo un criterio logico di stop è impossibile sapere quando fermarsi. Ero
convinto di sapere il nr dei caratteri, per cui gestibilissimo. Ma non è
così. Ho cmq risolto in altro modo, mi prendo i dati da un'altra
fonte...buona notte al secchio. Cmq grazie a tutti per i vs interventi. ciao
alla prox ale
Poche idee e ben confuse...
Fatti coraggio, sei fra i più!

Bruno
Continua a leggere su narkive:
Loading...