Conversione da Data a stringa di Excel


125

In una cella nel foglio di Excel ho un valore Data come:

01/01/2010 14:30:00

Voglio convertire quella data in testo e voglio anche che il testo appaia esattamente come la data. Quindi un valore di Data 01/01/2010 14:30:00dovrebbe apparire 01/01/2010 14:30:00ma internamente dovrebbe essere Testo.

Come posso farlo in Excel?


6
Molti programmatori snob sostengono che Excel non sia un ambiente di programmazione, quindi potrebbe chiudere questa domanda. Spero che non lo facciano, ma solo per avvisarti.
Nick Fortescue,

4
Excel potrebbe non essere un IDE completo, ma se ti vengono dati i dati in Excel e hai bisogno di risultati in Excel, una certa programmazione VBA ha tutti i tipi di senso.
brichins,

Risposte:


241
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")

(24 ore)

=TEXT(A1,"DD/MM/YYYY hh:mm:ss AM/PM")

(tempo standard)


3
Riferimento completo alla funzione TEXT, in particolare per sapere come impostare i formati: vedere Linee guida per i formati di data e ora in questa pagina office.microsoft.com/en-us/excel-help/…
codea

Quando provo a fare questa conversione, c'è un "#AD?" testo e dice che qualcosa non va.
AloneInTheDark

1
@AloneInTheDark Quando segui il link da codea, i formati funzionano ma solo se hai un sistema operativo Windows che utilizza i formati inglesi. Il mio utilizza i formati olandesi, il che significa che ad esempio "GG / MM / AAAA hh: mm: ss" diventa "GG / MM / JJJJ uu: mm: ss" perché in olandese "anno" è "jaar" e "ora" è "uur", ovvero altre lettere iniziali (mentre "giorno", "mese", "minuti" e "secondi" iniziano con le stesse lettere sia in olandese che in inglese). Fondamentalmente, traduci le lettere iniziali dei formati nella lingua del tuo sistema operativo.
Sem Vanmeenen,

3
E la conversione opposta è fatto conDATEVALUE("01/01/2010")
Zenadix

Un modo per utilizzare il formato che sto già utilizzando per la visualizzazione della data senza doverlo specificare?
Palswim,

8

Ecco un approccio VBA:

Sub change()
    toText Sheets(1).Range("A1:F20")
End Sub

Sub toText(target As Range)
Dim cell As Range
    For Each cell In target
        cell.Value = cell.Text
        cell.NumberFormat = "@"
    Next cell
End Sub

Se stai cercando una soluzione senza programmazione, la domanda dovrebbe essere spostata su SuperUser.


6

Ecco un'altra opzione. Utilizzare la procedura guidata "Testo in colonne" di Excel. Si trova nella scheda Dati in Excel 2007.

Se hai selezionato una colonna, le impostazioni predefinite per il tipo di file e i delimitatori dovrebbero funzionare, quindi ti chiederà di cambiare il formato dei dati della colonna. La scelta del testo lo impone in formato testo, per assicurarsi che non sia memorizzato come data.


4

In alcuni contesti l'utilizzo anticipato di un carattere funzionerà, ma se si salva in CSV e si carica di nuovo, questo è impossibile.

'01/01/2010 14:30:00

4

Impossibile far funzionare la formula TEXT ()

La soluzione più semplice era copiare e incollare in Blocco note e tornare in Excel con la colonna impostata su Testo prima di incollare nuovamente

Oppure puoi fare lo stesso con una formula come questa

=DAY(A2)&"/"&MONTH(A2)&"/"&YEAR(A2)& " "&HOUR(B2)&":"&MINUTE(B2)&":"&SECOND(B2)


1
È stato votato perché, per quanto ne so, questo è l'unico metodo di lavoro che non è soggetto alle impostazioni della lingua. Se intendi condividere il tuo lavoro, l'uso di TEXT () ti causerà problemi. Anche all'interno di un paese (ad es. Germania), troverai persone con configurazioni tedesche e inglesi.
Dr. V

1
grazie mille e voto! Funziona per me, perché non riesco a usare = TEXT (formule di libreria python)
lestat_kim

1

Se non stai utilizzando la programmazione, procedi come segue (1) seleziona la colonna (2) fai clic con il pulsante destro del mouse e seleziona Formato celle (3) Seleziona "Personalizzata" (4) Appena sotto "Tipo:" digita gg / mm / aaaa hh: mm : ss


0

In Excel 2010, la risposta di Marg ha funzionato solo per alcuni dei dati che avevo nel mio foglio di calcolo (è stato importato). La seguente soluzione ha funzionato su tutti i dati.

Sub change()
    toText Selection
End Sub

Sub toText(target As range)
Dim cell As range
Dim txt As String
    For Each cell In target
        txt = cell.text
        cell.NumberFormat = "@"
        cell.Value2 = txt
    Next cell
End Sub

0

Non ho idea dell'anno di pubblicazione della domanda; potrebbe essere vecchio ora. Quindi, mi aspetto che la mia risposta sia più di riferimento per future domande simili dopo il mio post.

Non so se qualcuno là fuori abbia già dato una risposta simile a quella che sto per dare, il che potrebbe risultare - penso - essere il più semplice, il più diretto ed efficace: se qualcuno lo ha già dato, mi scuso , ma non l'ho visto. Ecco, la mia risposta usando CStr invece di TEXT:

Supponendo che la cella A1 contenga una data e utilizzando il codice VBA:

Dim strDate As String

'Convert to string the value contained in A1 (a date)
strDate = CStr([A1].Value)

Successivamente, è possibile manipolarlo come qualsiasi normale stringa usando le funzioni di stringa (MID, LEFT, RIGHT, LEN, CONCATENATE (&), ecc.)


-1

La risposta selezionata non ha funzionato per me poiché Excel non stava ancora convertendo il testo fino ad oggi. Ecco la mia soluzione

Dì che nella prima colonna, A, hai dati del tipo 2016/03/25 21:20:00ma sono memorizzati come testo. Quindi nella colonna B scrivi =DATEVALUE(A1)e nella colonna C scrivi =TIMEVALUE(A1).

Quindi, nella colonna D, =B1+C1aggiungi i formati numerici di data e ora.

Infine, copia i valori da D nella colonna E facendo clic con il tasto destro nella colonna E e seleziona Paste Special -> Paste as Values.

Evidenzia i valori numerici nella colonna E e modifica il tipo di dati fino ad oggi: preferisco utilizzare una data personalizzata del modulo YYYY-MM-DD HH:MM:SS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.