vorrei estrarre il campo data in una nuova colonna per poter totalizzaer per
data.
Vi ringrazio fin d'ora per ogni risposta utile.
Mi spiego meglio, vorrei ottenere la data 27/11/2009 come risultato.
Grazie fin d'ora.
Se hai Excel in italiano e se il dato � una stringa alfanumerica:
=DATA(STRINGA.ESTRAI(A1;7;4);SINISTRA(A1;2);STRINGA.ESTRAI(A1;4;2))
--
Fai sapere se e come hai risolto grazie.
ciao paoloard
http://riolab.org
Funziona abbastanza bene.
Ci sono date tipo 11/9/2009 che equivalgono a 09-11-2009 ma quel report non
contiene lo zero del giorno,oppure 9/30/2009.
In questi casi le posizioni di giorno, mese e anno cambiano.
Modifcando a mano la funzione dove segnala valore errato ha funzionato per�
speravo ci fosse qualcosa di pi� "standard" gi� in excel.
Ti ringrazio molto!
Se non ti spaventi della bruttezza, questa funziona sempre:
=DATA(STRINGA.ESTRAI(A1;RICERCA("/";A1;RICERCA("/";A1;1)+1)+1;4);SINISTRA(A1;RICERCA("/";A1;1)-1);STRINGA.ESTRAI(A1;RICERCA("/";A1;1)+1;RICERCA("/";A1;RICERCA("/";A1;1)+1)-RICERCA("/";A1;1)-1))
Ciao,
E.
2) altro metodo
seleziona l'intervallo in cui hai le tue date, quindi vai in men� > dati >
testo in colonne
- primo step: [x] delimitati
- secondo step: [x] spazio
- terzo step:
in tabella 'Anteprima dati' controlla che la prima colonna sia evidenziata
in nero, quindi in 'Formato dati per colonna' [x] Data: e scegli MGA
Clicca sulla seconda colonna nell'anterprima(diventa nera), 'in 'Formato
dati per colonna' [x] Non importare colonna
Clicca sulla terza colonna: come sopra
Fine
E' lungo da descrivere, ma veloce da fare.
Ciao, Nur
una regexp :-) ci starebbe mica male ...
comunque ...
=VALORE(STRINGA.ESTRAI(SOSTITUISCI(A1;"/";"/"&STRINGA.ESTRAI(A1;1;TROVA
("/";A1));2);TROVA("/";A1)+1;TROVA(" ";A1)-1))
saluti
r
giusto per rimanere in allenamento :-)
Function Estrazione_data(s As String) As String
Dim re As Object
Set re = CreateObject("vbscript.regexp")
re.Pattern = "(^\d{1,2})/(\d{1,2})/(\d{4})(.+$)"
Estrazione_data = re.Replace(s, "$2/$1/$3")
End Function
saluti
r
"Henry Wotton" ha scritto:
>
> "paoloard" <xxp...@alice.it> ha scritto nel messaggio
> news:2C217B16-C308-45DB...@microsoft.com...
> >
> > Se hai Excel in italiano e se il dato è una stringa alfanumerica:
> > =DATA(STRINGA.ESTRAI(A1;7;4);SINISTRA(A1;2);STRINGA.ESTRAI(A1;4;2))
> >
>
> Funziona abbastanza bene.
> Ci sono date tipo 11/9/2009 che equivalgono a 09-11-2009 ma quel report non
> contiene lo zero del giorno,oppure 9/30/2009.
> In questi casi le posizioni di giorno, mese e anno cambiano.
> Modifcando a mano la funzione dove segnala valore errato ha funzionato però
> speravo ci fosse qualcosa di più "standard" già in excel.
>
> Ti ringrazio molto!
Ciao Sir Henry.
Questa dovrebbe essere la versione in Vba della nr. 2 della gentile Nur
(ciaoo).
Public Sub prova()
Dim stringa As Variant
stringa = Split(Range("A1"), " ")
Range("B1").Value = stringa(LBound(stringa))
End Sub
Da copiare in un modulo standard, ad esempio Modulo1; il tuo Timestamp in A1
e la data estratta in B1 già formattata (credo).
Saluti
Eliano
"eliano" ha scritto:
E visto che ho parafrasato la bella Nur, diamo una parafrasata anche a
Roby.:-))
Function estraidata(rng As Range) As Date
Dim stringa As Variant
stringa = Split(rng, " ")
estraidata = CDate(stringa(LBound(stringa)))
End Function
Da copiare sempre in un modulo standard e da usare come: =estraidata(A1)
Arisaluti a tutti
Eliano
ciao mitico ...
fosse stato così semplice non avrei tirato di mezzo le regexp :-)
1/2/2009 5:37:25 PM
la tua converte date univocamente americane in europee ... ma quelle
non univocamente americane le lascia così ... in ogni caso verifica
che split abbia almeno un risultato in alternativa una function di
quel tipo usata in vb potrebbe generare un errore ...
bacchettato ... ti ho bacchettato
.... adesso un abbraccio da tutta la tribu
saluti
r
una regexp :-) ci starebbe mica male ...
comunque ...
=VALORE(STRINGA.ESTRAI(SOSTITUISCI(A1;"/";"/"&STRINGA.ESTRAI(A1;1;TROVA
("/";A1));2);TROVA("/";A1)+1;TROVA(" ";A1)-1))
saluti
r
******
Questa � una bella ispirazione!
Anche cos�:
=--SINISTRA(STRINGA.ESTRAI(A1;TROVA(" ";A1)-4;4)&"/"&A1;TROVA(" ";A1)-1)
Ciao :-)
Nur
giusto per rimanere in allenamento :-)
Function Estrazione_data(s As String) As String
Dim re As Object
Set re = CreateObject("vbscript.regexp")
re.Pattern = "(^\d{1,2})/(\d{1,2})/(\d{4})(.+$)"
Estrazione_data = re.Replace(s, "$2/$1/$3")
End Function
***
Come direbbe Eliano (ciao!)... "Parafrasando la mia ultima formula..."
(e giusto perch� sicuramente ho ben pi� bisogno di te di allenarmi...!)
Function Estrazione_dataB(s As String) As Date
Dim re As Object
Set re = CreateObject("vbscript.regexp")
re.Pattern = "(^\d{1,2}/\d{1,2})/(\d{4}).+"
Estrazione_dataB = CDate(re.Replace(s, "$2/$1"))
End Function
(non ti piacer�... lo so gi�)
Ciao, Nur
In effetti questa ha funzionato subito su tutte le righe.
Grazie!
In effetti si fa prima a farlo che a scriverlo... :-))
Grazie ancora.
"r" ha scritto:
> ..... adesso un abbraccio da tutta la tribu
> saluti
> r
Ciao Roby.
0) Non avevo XL su quel trabiccolo.
1) Il motivo per parafrasare una tua Udf era evidente.:-))
2) Dal post mi sembravano proprio date 'merigane'; sciolte o a pacchetti nin
sò.:-)))
3) Grazie dell'informazione, ma split non mi ha mai dato problemi nelle mie
MicroUdf.
4) Bacchettate gradite, contraccambio con saluti, baci e abbracci.
Eliano