web-dev-qa-db-fra.com

Conversion de date en chaîne Excel

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 que le texte ressemble exactement à la date. Ainsi, une valeur de Date de 01/01/2010 14:30:00 devrait ressembler à 01/01/2010 14:30:00 mais, en interne, il devrait s'agir de Texte.

Comment puis-je faire cela dans Excel?

118
Chaitanya MSV
=TEXT(A1,"DD/MM/YYYY hh:mm:ss")

(heure sur 24 heures)

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

(heure normale)

233
Kirill

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 le superutilisateur.

8
marg

Voici une autre option. Utilisez l'assistant "Texte en colonnes" 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 le système vous invite à modifier le format de données de la colonne. Le choix du texte force le formatage du texte pour s'assurer qu'il n'est pas stocké sous forme de date.

5
Adam Miller

Dans certains contextes, utiliser un 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
4
Nick Fortescue

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

1
Harihara Iyer

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

Je ne sais pas si quelqu'un a déjà donné une réponse semblable à celle que je m'apprête à donner, ce qui pourrait avoir pour résultat -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:

Une cellule A1 contient une date et utilise le code VBA:

Dim strDate As String

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

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

Dans Excel 2010, la réponse de marg ne fonctionnait que pour certaines des données contenues dans ma feuille de calcul (elles étaient importées). 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
0
Archimaredes