Condividi:        

convertire testo/generale in data

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

convertire testo/generale in data

Postdi calculon » 02/06/12 16:42

Ciao a tutti,
ho necessità di convertire dei dati, caricati in formato generale o testo, in formato data.

13.09.2010 18.09.2002
07.10.2010 18.09.2002
23.02.2011 18.09.2002
08.04.2011 09.12.2002
31.05.2011 31.01.2003
31.05.2011 27.03.2003
04.10.2011 05.05.2003
20.02.2012 05.05.2003
20.02.2012 30.04.2004
20.02.2012 07.06.2004
20.02.2012 07.06.2004
23.08.2001 03.07.2004

purtroppo procedendo col codice
Selection.Replace What:="-", Replacement:="/", LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

non ottengo il risultato sperato, o meglio lo ottengo solo per alcuni e non per altri.


cosa potete suggerirmi?
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Sponsor
 

Re: convertire testo/generale in data

Postdi CANAPONE » 02/06/12 17:55

Ciao,

sono a zero con il Vba, ma mi sono trovato spesso nella tua condizione scaricando i dati dal database centrale (IBM).

Io uso testo in colonne ed al momento della conversione preciso che sono le sottostringhe sono date.

Spero sia d'aiuto
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: convertire testo/generale in data

Postdi Anthony47 » 02/06/12 23:57

Leggi il messaggio di canapone, sopra.

Immagino che il codice vba che hai testato sostituisse il "punto" col la "barra" (non il "trattino").

Purtroppo la cosa col le macro e' complicata dal fatto che il vba considera le date nel formato americano (mese/giorno/anno), col risultato che stringhe come 13.05.2002 (13 maggio) non sono convertite ma stringhe come 07.10.2030 sono convertite male in Ottobre-7; la stessa operazione fatta da comandi excel si conclude positivamente, quindi questa puo' essere un primo bypass per convivere col problema, se l' operazione non e' da fare spesso.

In alternativa prova una macro come questa:
Codice: Seleziona tutto
Sub text2data()
Dim myDMY
Datarea = "A2:B100"    '<<< L' area con le date
For Each Cell In Range(Datarea)
    If Cell.Value <> "" Then
        myDMY = Split(Cell.Value, ".")
        If UBound(myDMY, 1) = 2 Then _
            Cell.Value = DateSerial(myDMY(2), myDMY(1), myDMY(0))
    End If
Next Cell
End Sub
La riga marcata <<< ovviamente e' da adattare ai tuoi dati.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: convertire testo/generale in data

Postdi calculon » 03/06/12 13:38

funziona benissimo. Grazie!

Potresti spiegarmi, se ti va, il significato logico di quello che mi hai gentilmente concesso?

Salutoni.
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: convertire testo/generale in data

Postdi Anthony47 » 03/06/12 15:27

Direi che l' istruzione chiave e' myDMY = Split(Cell.Value, ".") che divide giorno.mese.anno (ti aiutera' l' help on line del vba alla voce "Funzione Split"), che prelude alla ricreazione della data in formato data con DateSerial(myDMY(2), myDMY(1), myDMY(0))
Le due If servono per gestire celle vuote o che comunque non contengono stringhe in formato gg.mm.aaaa, es celle contenenti vere date, mentre la For Each /Next serve per scansionare l' intervallo dichiarato.

Piu' chiaro?
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "convertire testo/generale in data":


Chi c’è in linea

Visitano il forum: papiriof e 66 ospiti