Conversion de date en chaîne Excel

125

Dans une cellule de la feuille Excel, j'ai une valeur de date comme:

01/01/2010 14:30:00

Je veux convertir cette date en texte et je veux également que le texte ressemble exactement à la date. Ainsi, une valeur de Date 01/01/2010 14:30:00devrait ressembler à, 01/01/2010 14:30:00mais en interne, elle devrait être Text.

Comment puis-je faire cela dans Excel?

Chaitanya MSV
la source
6
Beaucoup de programmeurs snob diraient qu'Excel n'est pas un environnement de programmation et pourraient donc clore cette question. J'espère que non, mais juste pour vous avertir.
Nick Fortescue le
4
Excel n'est peut-être pas un IDE à part entière, mais si vous recevez des données dans Excel et avez besoin de résultats dans Excel, certaines programmations VBA ont toutes sortes de sens.
brichins

Réponses:

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

(24 heures)

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

(heure standard)

Kirill
la source
3
Référence complète à la fonction TEXTE en particulier pour savoir comment définir les formats: voir Directives pour les formats de date et d'heure sur cette page office.microsoft.com/en-us/excel-help
...
Lorsque j'essaye de faire cette conversion, il y a un "#AD?" texte et il dit que quelque chose ne va pas.
AloneInTheDark
1
@AloneInTheDark Lorsque vous suivez le lien de codea, les formats fonctionnent mais uniquement si vous avez un système d'exploitation Windows qui utilise les formats anglais. Le mien utilise les formats néerlandais ce qui signifie que par exemple "JJ / MM / AAAA hh: mm: ss" devient "JJ / MM / JJJJ uu: mm: ss" car en néerlandais, 'year' est 'jaar' et 'hour' est «uur», c'est-à-dire d'autres lettres de départ (tandis que «jour», «mois», «minutes» et «secondes» commencent par les mêmes lettres en néerlandais et en anglais). En gros, traduisez les lettres de départ des formats dans la langue de votre système d'exploitation.
Sem Vanmeenen
3
Et la conversion inverse se fait avecDATEVALUE("01/01/2010")
Zenadix
Un moyen d'utiliser le format que j'utilise déjà pour l'affichage de la date sans avoir à le spécifier?
palswim le
8

Voici une approche 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

Si vous recherchez une solution sans programmation, la question doit être déplacée vers SuperUser.

marg
la source
6

Voici une autre option. Utilisez l'assistant `` Texte en colonnes '' intégré d'Excel. Il se trouve sous l'onglet Données dans Excel 2007.

Si vous avez sélectionné une colonne, les valeurs par défaut pour le type de fichier et les délimiteurs devraient fonctionner, puis il vous invite à modifier le format de données de la colonne. Le choix du texte le force au format texte, pour s'assurer qu'il n'est pas stocké sous forme de date.

Adam Miller
la source
4

Dans certains contextes, l'utilisation du caractère 'au préalable fonctionnera, mais si vous enregistrez au format CSV et chargez à nouveau, cela est impossible.

'01/01/2010 14:30:00
Nick Fortescue
la source
4

Impossible de faire fonctionner la formule TEXT ()

La solution la plus simple consistait à copier coller dans le Bloc-notes et à revenir dans Excel avec la colonne définie sur Texte avant de recoller

Ou vous pouvez faire la même chose avec une formule comme celle-ci

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

Shankar ARUL - jupyterdata.com
la source
1
Vote positif, car à ma connaissance, c'est la seule méthode de travail qui n'est pas soumise aux paramètres de langue. Si vous avez l'intention de partager votre travail, l'utilisation de TEXT () vous posera des problèmes. Même dans un pays (par exemple l'Allemagne), vous trouverez des personnes avec des configurations allemandes et anglaises.
Dr. V
1
un grand merci et un vote favorable! Cela fonctionne pour moi, car je ne peux pas utiliser = TEXT (formules de la bibliothèque python)
lestat_kim
1

Si vous n'utilisez pas de programmation, procédez comme suit (1) sélectionnez la colonne (2) cliquez avec le bouton droit et sélectionnez Formater les cellules (3) Sélectionnez "Personnalisé" (4) Juste sous "Type:" tapez jj / mm / aaaa hh: mm : ss

Harihara Iyer
la source
0

Dans Excel 2010, la réponse de marg n'a fonctionné que pour certaines des données que j'avais dans ma feuille de calcul (elle a été importée). La solution suivante a fonctionné sur toutes les données.

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
Archimarède
la source
0

Je n'ai aucune idée de l'année de publication de la question; il est peut-être vieux maintenant. Donc, je m'attends à ce que ma réponse soit plus une référence pour de futures questions similaires après mon message.

Je ne sais pas si quelqu'un a déjà donné une réponse similaire à celle que je suis sur le point de donner, ce qui pourrait - je pense - être la plus simple, la plus directe et la plus efficace: si quelqu'un l'a déjà donnée, je m'excuse , mais je ne l'ai pas vu. Ici, ma réponse en utilisant CStr au lieu de TEXT:

La cellule A1 en supposant contient une date et en utilisant le code VBA:

Dim strDate As String

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

Vous pouvez, par la suite, le manipuler comme n'importe quelle chaîne ordinaire en utilisant des fonctions de chaîne (MID, LEFT, RIGHT, LEN, CONCATENATE (&), etc.)

Prof. Juan Manuel Alonso D.
la source
-1

La réponse sélectionnée n'a pas fonctionné pour moi car Excel ne convertissait toujours pas le texte à ce jour. Voici ma solution.

Dites que dans la première colonne, A, vous avez des données de type 2016/03/25 21:20:00mais qui sont stockées sous forme de texte. Puis dans la colonne B écrivez =DATEVALUE(A1)et dans la colonne C écrivez=TIMEVALUE(A1) .

Ensuite, dans la colonne D, =B1+C1ajoutez les formats numériques de la date et de l'heure.

Enfin, copiez les valeurs de D dans la colonne E en faisant un clic droit dans la colonne E et sélectionnez Paste Special -> Paste as Values.

Mettez en surbrillance les valeurs numériques de la colonne E et modifiez le type de données à ce jour - je préfère utiliser une date personnalisée du formulaire YYYY-MM-DD HH:MM:SS.

puiu
la source