Impossible pour Excel de reconnaître la date dans la colonne

45

J'ai constamment des problèmes avec les dates dans Excel, je dois faire quelque chose de mal mais je ne comprends pas quoi.

J'ai une feuille de calcul, exportée de notre serveur Exchange, qui contient une colonne avec les dates. Ils sont sortis au format américain même si je suis au Royaume-Uni.

La colonne en question ressemble à ceci

04/08/2012
04/09/2009
04/01/2010
04/21/2011
04/05/2012
08/30/2009
08/29/2010
08/28/2011

Dans Excel, j'ai mis en évidence la colonne et sélectionné Format Cells.... Dans cette boîte de dialogue, j'ai sélectionné Date, sélectionné English (United States)comme paramètres régionaux et choisi le format de date correspondant dans la liste. Je clique sur OK et essaie de trier les données en fonction de cette colonne.

Dans le dialogue de tri que j'ai choisi dans cette colonne, sélectionnez de tri sur les valeurs, mais l'ordre ne me donne que des options pour A à Z, pas les plus anciennes aux plus récentes, comme je le pensais.

Cela trie à son tour les données de date par les deux premiers chiffres.

Je suis conscient que je pourrais reformater ces données au format ISO et que le tri de A à Z fonctionnerait, mais je n'aurais pas dû le faire aussi, il me manque évidemment quelque chose. Qu'Est-ce que c'est?

EDIT: Je me suis trompé la prime, mais cela aurait dû aller à @ r0berts answer, sa première suggestion de Text to Columns sans délimiteur et en choisissant «MDY» comme type de données. De plus, si vous avez une heure (c.-à-d. 04/21/2015 18:34:22), Vous devez d'abord vous débarrasser des données de l'heure. Cependant, après cela, la méthode suggérée par @ r0berts fonctionne bien.

Patrick
la source
J'imagine que le problème est qu'Excel ne sait pas comment procéder: vous pouvez tester. Lorsque vous essayez de mettre à jour le format de date, sélectionnez la colonne, cliquez dessus avec le bouton droit de la souris et choisissez le format de cellule (comme vous le faites déjà), mais choisissez l'option 2001-03-14 (au bas de la liste). Je suppose que seuls certains formats de date sont mis à jour correctement, ce qui indique qu'Excel le traite toujours comme une chaîne, pas une date!
Dave
Quel est le format des données exportées? Est-ce CSV ou XLSX?
Excellll

Réponses:

70

Le problème: Excel ne veut pas reconnaître les dates en tant que dates, même si vous essayez explicitement de lui indiquer qu'il s'agit de dates par " mm/dd/yyyy". Comme vous le savez; Quand Excel a reconnu quelque chose comme une date, il le stocke également sous forme de numéro - tel que " 41004" mais s'affiche sous forme de date en fonction du format que vous spécifiez. Pour ajouter à la confusion, Excel peut convertir uniquement une partie de vos dates, telle que 08/04/2009, mais en laisser d’autres, par exemple 07/28/2009 non converties.

Solution: étapes 1 et 2

1) Sélectionnez la colonne de date. Sous Données, cliquez sur le bouton Texte en colonnes. Sur le premier écran, laissez le bouton radio sur " délimité " et cliquez sur Suivant . Décochez l'une des cases du délimiteur (les cases vides ; pas de cases à cocher) et cliquez sur Suivant . Dans le format de données de colonne, choisissez Date , sélectionnez MDY dans la liste déroulante adjacente, puis cliquez sur Terminer . Maintenant, vous avez les valeurs de date (c’est-à-dire qu'Excel a reconnu vos valeurs en tant que Datetype de données), mais la mise en forme est probablement toujours la date locale, pas celle que mm/dd/yyyyvous souhaitez.

2) Pour que le format de date américain souhaité soit affiché correctement, vous devez d'abord sélectionner la colonne (si elle est désélectionnée), puis sous Cell Format - Number, choisissez Date AND et sélectionnez Locale: English (US) . Cela vous donnera un format comme " m/d/yy". Ensuite, vous pouvez sélectionner Personnalisé et vous pouvez taper " mm/dd/yyyy" ou choisir ceci dans la liste des chaînes personnalisées.

Alternative : utilisez LibreOffice Calc. Après avoir collé les données de l'article de Patrick, choisissez Coller spécial ( Ctrl+Shift+V) et choisissez Texte non formaté. Cela ouvrira la boîte de dialogue "Importer du texte". Le jeu de caractères reste Unicode, mais pour la langue, choisissez Anglais (États-Unis). vous devez également cocher la case "Détecter les numéros spéciaux". Vos dates apparaissent immédiatement au format américain par défaut et peuvent être triées par date. Si vous souhaitez utiliser le format spécial américain MM / JJ / AAAA, vous devez le spécifier une fois par le biais du "formatage des cellules" - avant ou après le collage.

On pourrait dire - Excel aurait dû reconnaître les dates dès que je l’ai dit via "Format cellule" et je ne pouvais pas être plus d’accord . Malheureusement, ce n’est que par l’étape 1 ci-dessus que j’ai pu faire en sorte que Excel reconnaisse ces chaînes de texte comme des dates. Évidemment, si vous faites cela souvent, vous aurez mal à la nuque et vous pourriez mettre sur pied une routine visuelle de base qui le ferait pour vous en appuyant simplement sur un bouton.

Les données | Texte en colonnes

Mise à jour sur l' apostrophe principale après le collage: vous pouvez voir dans la barre de formule que dans la cellule où la date n'est pas reconnue, il y a une apostrophe principale. Cela signifie que dans la cellule formatée sous forme de nombre (ou date), il y a une chaîne de texte. Vous pourriez dire que l’apostrophe principale empêche la feuille de calcul de reconnaître le nombre. Vous devez savoir qu'il faut regarder dans la barre de formule pour cela, car la feuille de calcul affiche simplement ce qui ressemble à un nombre aligné à gauche. Pour traiter ce problème, sélectionnez la colonne que vous souhaitez corriger, choisissez dans le menuData | Text to Columnset cliquez sur OK. Parfois, vous pourrez spécifier le type de données, mais si vous avez précédemment défini le format de la colonne comme type de données, vous n'en aurez pas besoin. La commande est vraiment destinée à diviser une colonne de texte en deux ou plus en utilisant un délimiteur, mais elle fonctionne aussi comme un charme pour ce problème. Je l'ai testé dans LibreOffice , mais il existe également le même élément de menu dans Excel .

r0berts
la source
Je réponds à vos deux points dans mon OP. Fractionner les valeurs de date en colonnes (puis réintégrer au format ISO) est bien sûr une possibilité, mais étant donné qu'Excel a de nombreuses fonctions de date intégrées, j'aimerais pouvoir les exploiter avec les données de date valides que j'ai. Votre deuxième option est exactement comme je décris ce qui ne fonctionne pas pour moi.
Patrick
Cher Patrick, veuillez lire attentivement. Ou vous pouvez utiliser Libre Office Calc - avec vos données, cela fonctionne tout de suite - vous pré-formez simplement la colonne Date - Anglais (USA) et après avoir collé, faites "Collage spécial" "Texte non formaté" - indiquez simplement à la boîte de dialogue que sa langue est Anglais (États-Unis) et n'oubliez pas de cocher la case pour reconnaître les numéros spéciaux. Dans ma réponse, j'ai essayé d'indiquer aussi fort que je pouvais qu'Excel était incompatible avec cela (buggy) et vous devez recourir à ces étapes 1, puis 2 pour obtenir le résultat souhaité.
r0berts
J'aurais en effet dû lire votre question correctement. Votre première suggestion fonctionne effectivement. Vous auriez dû avoir la prime. Merci pour votre aide.
Patrick
La suggestion 1 fonctionne comme un charme. Merci.
Adam
Vraiment bonne réponse !!!
Adders
8

Sélectionnez toutes les colonnes et allez à Rechercher et remplacer et remplacez simplement "/"par /.

Jair Bressani
la source
Pouvez-vous expliquer ce que cela fait pour résoudre le problème?
fixer1234
Cela a vraiment fonctionné et était facile. Le remplacement remplace les zéros de tête
PedroGabriel
2
Tout d'abord, cela fonctionne. Meilleure solution. Loin mieux que la solution vérifiée :). Pour fixer1234 et @PedroGabriel: Ce n'est pas que ça supprime les zéros. Lors du remplacement du contenu de la cellule, Excel détermine si la cellule résultante contient une formule, un texte ou un nombre. Après avoir effectué le remplacement "/", la cellule est interprétée comme contenant un numéro (dont la date correspond techniquement à Excel), de sorte qu’elle peut maintenant être triée correctement. (Les utilisateurs intelligents peuvent reconnaître la technique consistant à rechercher / remplacer par un caractère "=" dans un scénario similaire avec une réinterprétation de contenu par Excel.) Quoi qu'il en soit, Jair a la solution idéale :)
MicrosoftShouldBeKickedInNuts
@MicrosoftShouldBeKickedInNuts aujourd'hui, je ne sais pas pourquoi j'ai dit cela à propos des zéros, cela n'avait vraiment rien à voir avec les zéros ... C'est la meilleure réponse, toujours celle-ci. À la vôtre
PedroGabriel
3

J'ai eu exactement le même problème avec les dates dans Excel. Le format correspond aux conditions requises pour une date dans Excel, mais si vous ne modifiez pas chaque cellule, il ne reconnaît pas la date. Lorsque vous traitez avec des milliers de lignes, il n'est pas pratique de modifier manuellement chaque cellule. La solution consiste à exécuter une recherche et à remplacer sur la rangée de dates où j'ai remplacé le cavalier par un trait d'union. Excel parcourt la colonne en remplaçant des éléments similaires, mais le facteur qui en résulte est qu’il reconnaît désormais les dates! FIXÉ!

Warren Rocchi
la source
3

Je m'occupais d'un problème similaire avec des milliers de lignes extraites d'une base de données SAP et, inexplicablement, deux formats de date différents dans la même colonne de date (la plupart étant notre norme "AAAA-MM-JJ" mais environ 10%, "MM- JJ-AAAA "). La modification manuelle de 650 lignes une fois par mois n’était pas une option.

Aucune (zéro ... 0 ... rien) des options ci-dessus n'a fonctionné. Oui, je les ai tous essayés. Copier dans un fichier texte ou exporter explicitement au format txt n’a, en quelque sorte, pas d’effet sur le format (ou son absence) des dates à 10% qui se tenaient tout simplement dans leur coin et refusaient de se comporter.

La seule façon de résoudre ce problème a été d'insérer une colonne vide à droite de la colonne de date qui se comportait mal et d'utiliser la formule simpliste suivante:

(en supposant que vos données se comportent mal Column D)

=IF(MID(D2,3,1)="-",DATEVALUE(TEXT(CONCATENATE(RIGHT(D2,4),"-",LEFT(D2,5)),"YYYY-MM-DD")),DATEVALUE(TEXT(D2,"YYYY-MM-DD")))

Je pouvais ensuite copier les résultats dans ma nouvelle colonne calculée au-dessus des dates qui se comportaient mal en collant "Valeurs" uniquement, après quoi je pouvais supprimer ma colonne calculée.

Lucster
la source
3

Cela peut ne pas être pertinent pour le questionneur initial, mais cela peut aider quelqu'un d'autre qui est incapable de trier une colonne de dates.

J'ai découvert qu'Excel ne reconnaîtrait pas une colonne de dates antérieures à 1900, en insistant sur le fait qu'il s'agissait d'une colonne de texte (puisque 1/1/1900 a l'équivalent numérique 1 et que les nombres négatifs ne sont apparemment pas autorisés). J'ai donc fait un remplacement général de toutes mes dates (qui étaient au XIXe siècle) pour les mettre dans les années 1900, par exemple 180 -> 190, 181 -> 191, etc. Le processus de tri a ensuite bien fonctionné. Finalement, j'ai fait un remplacement dans l'autre sens, par exemple 190 -> 180.

J'espère que cela aidera un autre historien.

Laurie Allen
la source
2

Il semble qu'Excel ne reconnaisse pas vos dates en tant que dates, mais leur texte. Par conséquent, vous obtenez les options de tri de A à Z. Si vous le faites correctement, vous devriez obtenir quelque chose comme ceci:

http://i.stack.imgur.com/Qb4Pj.png

Il est donc important de s’assurer que Excel reconnaît la date. Le moyen le plus simple de le faire est d'utiliser le raccourci CTRL+SHIFT+3.

Voici ce que j'ai fait à vos données. Je l'ai simplement copié à partir de votre message ci-dessus et collé dans Excel. Ensuite, j'ai appliqué le raccourci ci-dessus et j'ai obtenu l'option de tri requise. Vérifiez l'image.

http://i.stack.imgur.com/yAa6a.png

Tronçonneuse
la source
2
Malheureusement, ce raccourci ne fonctionne pas pour moi.
Patrick
Que fait le raccourci dans votre système Patrick.
Firee
3
Le raccourci ne semble rien faire du tout. Plusieurs systèmes sous Office 2007, 2010 et 2013 sont à ma disposition et aucun d’entre eux ne réagit au raccourci CTRL SHIFT 3. CTRL 1 ouvre correctement la boîte de dialogue 'Format cell'.
Patrick
Le raccourci clavier Ctrl + Maj + 3, référencé de manière un peu approximative par «Ctrl + Maj + #» , signifie ici «Applique le format de date avec le jour, le mois et l'année.» Dans Excel 2007, 2010, 2013 et 2016. (Spécifiquement , sur mon Excel 2013, il s’agit de “d-mmm-yy”.) Le document Microsoft n’explique pas que les cellules doivent déjà contenir… (suite)
Scott
(Suite) ... valeurs Excel reconnaît que les données de date / heure, et il semble que personne ici a clairement expliqué que, puisque Patrick est en Angleterre, sa version d'Excel reconnaît des chaînes comme 04/08/2012, 04/09/2009et 04/01/2010que 4 août 2012 , 4-Sep-2009 et 4-Jan-2010, respectivement, et traite 04/21/2011comme une chaîne de texte (car il n'y a pas de 21ème mois). Étant donné que certaines des valeurs sont du texte (et que certaines d'entre elles ont vraisemblablement été mal interprétées), le formatage (comme par le raccourci clavier Ctrl + Maj + 3) ne produira aucun résultat.
Scott
2

Je soupçonne que le problème est que Excel ne parvient pas à comprendre le format ... Même si vous sélectionnez le format Date, il reste sous forme de texte.

Vous pouvez le tester facilement: lorsque vous essayez de mettre à jour le format de date, sélectionnez la colonne, cliquez dessus avec le bouton droit de la souris et choisissez le format de cellule (comme vous le faites déjà), mais choisissez l’option 2001-03-14 (au bas de la liste). Puis examinez le format de vos cellules.

Je suppose que seuls certains formats de date sont mis à jour correctement, ce qui indique qu'Excel le traite toujours comme une chaîne, et non comme une date (notez les différents formats présentés dans la capture d'écran ci-dessous)!

entrez la description de l'image ici

Il existe des solutions pour cela, mais aucune d'entre elles ne sera automatisée simplement parce que vous exportez à chaque fois. Je suggérerais d'utiliser VBA, où vous pouvez simplement exécuter une macro qui convertit du format de date américain au format de date britannique, mais cela signifierait copier et coller le VBA dans votre feuille à chaque fois.

Vous pouvez également créer un fichier Excel qui lit les feuilles Excel exportées nouvellement créées (à partir d’échange), puis exécutez la VBA pour mettre à jour le format de date pour vous. Je supposerai que le fichier Excel exporté aura toujours le même nom de fichier / répertoire et fournira un exemple de travail:

Donc, créez une nouvelle feuille Excel, appelée ImportedData.xlsm (excel activé). C'est le fichier dans lequel nous allons importer le fichier Excel exporté!

Ajouter ce VBA au fichier ImportedData.xlsm

Sub DoTheCopyBit()

Dim dateCol As String
dateCol = "A"        'UPDATE ME TO THE COLUMN OF THE DATE COLUMN

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False

directory = "C:\Users\Dave\Desktop\"                   'UPDATE ME
fileName = Dir(directory & "ExportedExcel.xlsx")       'UPDATE ME (this is the Exchange exported file location)

Do While fileName <> ""

'MAKE SURE THE EXPORTED FILE IS OPEN
Workbooks.Open (directory & fileName)

Workbooks(fileName).Worksheets("Sheet1").Copy _

Workbooks(fileName).Close

fileName = Dir()

Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True

Dim row As Integer
row = 1
Dim i As Integer
Do While (Range(dateCol & row).Value <> "")

     Dim splitty() As String
     splitty = Split(Range(dateCol & row).Value, "/")
     Range(dateCol & row).NumberFormat = "@"
     Range(dateCol & row).Value = splitty(2) + "/" + splitty(0) + "/" + splitty(1)
     Range(dateCol & row).NumberFormat = "yyyy-mm-dd"
     row = row + 1
Loop


End Sub

Ce que j’ai également fait, c’est de mettre à jour le format de date en aaaa-mm-jj, car même si Excel vous donne le filtre de tri AZ au lieu des valeurs les plus récentes, cela fonctionne toujours!

Je suis sûr que le code ci-dessus contient des bogues, mais je n'ai évidemment aucune idée du type de données que vous avez mais je l'ai testé avec une seule colonne de dates (comme vous l'avez) et cela fonctionne très bien pour moi!

Comment ajouter VBA dans MS Office?

Dave
la source
eh bien ... je vais laisser ça quelques jours pour lui donner un peu plus de visibilité, mais ça a l'air d'une réponse solide. Ceci est absolument fou, je ne peux pas croire que c'est nécessaire. Comme j'ai corrigé les données à la source avec une petite fonction dans powershell pour les retourner au format ISO, je me moque de savoir si Excel les reconnaît comme une date: /
Patrick
1

Je l'ai compris!

Il y a un espace au début et à la fin de la date.

  1. Si vous utilisez rechercher et remplacer et appuyez sur la barre d'espace, cela ne fonctionnera pas.
  2. Vous devez cliquer juste avant le numéro du mois, appuyer sur Maj et sur la flèche gauche pour sélectionner et copier. Parfois, vous devez utiliser la souris pour sélectionner l'espace.
  3. Collez ensuite ceci comme espace dans rechercher et remplacer et toutes vos dates deviendront des dates.
  4. S'il y a un espace et une date Sélectionnez Données> Aller à Données> Texte en colonnes> Délimité> Espace en tant que séparateur puis terminez.
  5. Tous les espaces seront supprimés.
JailDoctor
la source
La raison pour laquelle la recherche et le remplacement ne fonctionnent pas avec la barre d'espace est que l'écart est très probablement un onglet.
Patrick
0

Si Excel refuse obstinément de reconnaître votre colonne comme date, remplacez-la par une autre:

  • Ajouter une nouvelle colonne à droite de l'ancienne colonne
  • Cliquez avec le bouton droit sur la nouvelle colonne et sélectionnez Format
  • Définissez le format sur date
  • Mettez en surbrillance l'ancienne colonne entière et copiez-la
  • Mettez en surbrillance la cellule supérieure de la nouvelle colonne, sélectionnez Paste Specialet collez uniquementvalues
  • Vous pouvez maintenant supprimer l'ancienne colonne.
harrymc
la source
J'ai essayé ceci, il se comporte de la même manière avec la nouvelle colonne. Voir la réponse de Dave, le bouchon d'écran en haut correspond à ce que je reçois, peu importe le nombre de fois que je le déplace entre des colonnes.
Patrick
Essayez de forcer le problème en utilisant la fonction DATEVALUE (ancienne colonne) dans la formule de la nouvelle colonne, puis utilisez la liste déroulante Formatage numérique du ruban Accueil pour choisir Date courte / longue.
harrymc
0

Je viens tout simplement de copier le nombre 1 (un) et de le multiplier dans la colonne de date (données) à l'aide de la fonction PASTE SPECIAL. Il passe ensuite à la mise en forme générale, c’est- à- dire 42102. Ensuite, appliquez la date sur la mise en forme et la reconnaît maintenant comme une date.

J'espère que cela t'aides

Mpho Sehlako
la source
0

Toutes les solutions ci-dessus - y compris les r0berts - ont échoué, mais ont trouvé cette solution bizarre qui s'est révélée être la solution la plus rapide.

J'essayais de trier les "dates" sur une feuille de calcul des transactions de compte téléchargée.

Cela avait été téléchargé via le navigateur CHROME. Aucune manipulation des "dates" ne les ferait reconnaître comme pouvant être triées de l’ancien au nouveau.

Mais ensuite, j'ai téléchargé via le navigateur INTERNET EXPLORER - incroyable - je pouvais trier instantanément sans toucher à une colonne.

Je ne peux pas expliquer pourquoi différents navigateurs affectent le formatage des données, à l'exception du fait que c'était clairement et était une solution très rapide.

Ros
la source
0

Ma solution au Royaume-Uni - J'avais mes dates avec des points comme ceux-ci:

03.01.17

J'ai résolu ceci avec ce qui suit:

  1. Mettez en surbrillance toute la colonne.
  2. Aller à trouver et sélectionner / remplacer.
  3. J'ai remplacé tous les arrêts complets avec le tiret du milieu, par exemple 03.01.17 03-01-17.
  4. Gardez la colonne en surbrillance.
  5. Formater les cellules, onglet numéro sélectionner la date.
  6. Utilisez le type 14-03-12 (essentiel pour le mien d'avoir le tiret du milieu)
  7. Locale English (Royaume Uni)

Lors du tri de la colonne, toutes les dates de l'année sont triées.

Charlie
la source
0

J'ai essayé les différentes suggestions, mais j'ai trouvé la solution la plus simple:

Voir les images 1 et 2 pour l'exemple ... (remarque - certains champs ont été masqués intentionnellement car ils ne contribuent pas à l'exemple). J'espère que ça aide...

  1. Field C - un format mixte qui m'a rendu absolument fou. C'est ainsi que les données provenaient directement de la base de données et ne comportaient pas d'espaces supplémentaires ni de caractères fous. Lors de l'affichage sous forme de texte par exemple, le 01/01/2016 s'affiche sous la forme d'une valeur de type '42504', mélangée au 15/04/2006 qui s'affiche telle quelle.

  2. Champ F - où j'ai obtenu la longueur du champ C (la formule LEN serait une longueur de 5 sur 10 en fonction du format de la date). Le champ est Format général pour plus de simplicité.

  3. Champ G - obtenir le composant mois de la date mixte - en fonction du résultat de longueur dans le champ F (5 ou 10), j'obtiens le mois à partir de la valeur de date du champ C ou les caractères de mois dans la chaîne.

  4. Champ H - obtention du composant jour de la date mixte - en fonction du résultat de longueur dans le champ F (5 ou 10), j'obtiens le jour à partir de la valeur de date du champ C ou les caractères du jour dans la chaîne.

Je peux le faire aussi pour l’année, puis créer une date cohérente à partir des trois composantes. Sinon, je peux utiliser les valeurs individuelles des jours, mois et années dans mon analyse.

Image 1: feuille de calcul de base indiquant les valeurs et les noms de champs

Image 2: feuille de calcul montrant les formules correspondant à l'explication ci-dessus

J'espère que ça aide.

Eran
la source
(1) Bien qu'il soit agréable de poster une image d'écran pour montrer que votre réponse fonctionne réellement, nous préférons que les formules de votre solution soient affichées sous forme de texte dans le corps de votre réponse, afin que les personnes puissent les copier-coller. (2) Vous semblez comprendre le problème - les dates numériques 04/08sont ambiguës. 04/08sera interprété comme le 8 avril dans certains endroits (comme les États-Unis) et le 4 août dans d’autres (comme l’Angleterre). Mais ceux-ci sont ambigus précisément parce que le nombre de mois et le jour du mois sont différents. … (Suite)
Scott
(Suite)… Alors pourquoi voudriez-vous utiliser une  date ambiguë comme 01/01dans votre réponse? (3) En fait, je ne suis pas sûr que vous compreniez le problème, ou que votre réponse fonctionne réellement, dans la mesure où votre feuille comporte des lignes où le numéro du mois est 15; cela semble être une erreur évidente. Et, étant donné que cela 04/15est sans ambiguïté - cela doit signifier le 15 avril - cela n'a pas de sens que votre méthode soit analysée 01/11comme le 1 er jour du 11 e mois. … (Suite)
Scott
(Suite)… (4) Il convient de souligner que, dans le meilleur des cas, votre réponse ne gérera que les dates qui ressemblent à nn / nn / nnnn . Il échouera à des dates comme 5/8, 5/08, 5/28, 05/8et 11/8. Aussi - fait amusant - votre réponse échouera aux dates ≤ 17 mai 1927 et ≥ 17 octobre 2173. Peu importe le problème Y10K; nous pouvons commencer à avoir des problèmes dès 154 ans! (5) Vous dites: "Je peux le faire aussi pour l'année, puis créez une date cohérente à partir des trois composants." Alors pourquoi ne pas le montrer , et le montrer ? … (Suite)
Scott
(Suite)… Il est particulièrement difficile de vérifier que votre méthode fonctionne lorsque vous en présentez une version incomplète. un qui ne montre pas le mois, le jour et l'année étant rassemblés dans une date. (6) Comme je l'ai dit à Patsaeed , il aurait été bien que vous utilisiez les données du PO, tirées de la question, plutôt que de créer les vôtres. À défaut d'utiliser les données du PO, cela aurait peut-être été bien si vous aviez utilisé celles de Patsaeed. Au moins, nous serions donc en mesure de comparer des pommes avec des pommes. … (Suite)
Scott
(Suite)… Et que vous utilisiez les données du PO ou celles de quelqu'un d'autre, cela aurait été bien si vous aviez montré l'entrée originale dans votre scénario. (Par exemple, pour la ligne 7, est-ce 01/11/2016ou  11/01/2016?) Et, si vous utilisiez vos propres données, il aurait été bien si vous aviez inclus des dates du même mois qui montrent (par exemple) comment 1/11et 1/21sont traitées différemment. Et pourquoi avoir des données en double? Vous avez gaspillé 19 lignes en utilisant les mêmes quatre valeurs plusieurs fois, réparties sur 23 lignes.
Scott
0

PARTAGE D'UNE SOLUTION UNIQUE LONGUE MAIS TELLEMENT PLUS FACILE À SUJET ..... Pas besoin d'exécuter des macros ou des trucs geek ... .... simples formules MS Excel et l'édition.

dates mixtes excellent instantané:

entrez la description de l'image ici

  • La date est au format mixte.
  • Par conséquent, pour créer un format de date symétrique, des colonnes supplémentaires ont été créées, convertissant cette colonne de date de format mixte en texte.
  • À partir de ce texte, nous avons identifié les positions de "/" et le texte du milieu a été extrait en déterminant la date, le mois et l'année à l'aide de la formule MID.
  • Ceux qui étaient à l’origine des dates, la formule s’est terminée par ERROR / #VALUEresult. - Enfin, à partir de la chaîne que nous avons créée - nous avons converti celles-ci en dates par la formule DATE.
  • #VALUE ont été choisis tels quels par IFERROR ajouté à la formule DATE et la colonne a été formatée comme il convient (ici, jj / mmm / aa)

* CONSULTEZ L'INSTANTANÉ DE LA FEUILLE EXCEL AU-DESSUS (= dates mixtes, excellent cliché) *

Patsaeed
la source
(1) Bien qu'il soit agréable de poster une image d'écran pour démontrer que votre réponse fonctionne réellement, nous préférons que les formules de votre solution soient affichées sous forme de texte dans le corps de votre réponse, afin que les personnes puissent les copier-coller. (2) Vos formules comme indiqué dans l' image sont faux, dans la mesure où ils se réfèrent à des colonnes  V, Wet  Xquand ils doivent se référer à colonnes  B, C, et  D. … (Suite)
Scott
(Suite)… (3) Cela aurait été bien si vous aviez utilisé les données du PO, tirées de la question, plutôt que de créer les vôtres. Et, que vous utilisiez les données de l'OP ou les vôtres, il aurait été intéressant de montrer l'entrée originale de votre scénario (par exemple, pour la ligne 9, c'est 5/8/2014ou  5/08/2014). De plus, si vous utilisiez vos propres données, il aurait été bien que vous ayez inclus des dates du même mois pour montrer (par exemple) comment 5/8et 5/28sont traitées différemment. Et pourquoi avoir des données en double? Vous avez perdu six lignes en utilisant plusieurs fois les mêmes valeurs.
Scott
0

Cela se produit tout le temps lors de l'échange de données de date entre des paramètres régionaux dans Excel. Si vous avez le contrôle sur le programme VBA qui exporte les données, je suggère d’exporter le nombre représentant la date au lieu de la date elle-même. Le nombre correspond de manière unique à une date unique, quels que soient le formatage et les paramètres régionaux. Par exemple, au lieu du fichier CSV du 24/09/2010, il indiquera 40445.

Dans la boucle d'exportation lorsque vous tenez chaque cellule, s'il s'agit d'une date, convertissez-la en nombre à l'aide de CLng (myDateValue). Voici un exemple de ma boucle parcourant toutes les lignes d'un tableau et exportée au format CSV (remarque: je remplace également les virgules dans les chaînes par une balise que je déshabille lors de l'importation, mais vous n'en avez peut-être pas besoin):

arr = Worksheets(strSheetName).Range(strTableName & "[#Data]").Value

    For i = LBound(arr, 1) To UBound(arr, 1)
        strLine = ""
        For j = LBound(arr, 2) To UBound(arr, 2) - 1
            varCurrentValue = arr(i, j)
            If VarType(varCurrentValue) = vbString Then
                varCurrentValue = Replace(varCurrentValue, ",", "<comma>")
            End If
            If VarType(varCurrentValue) = vbDate Then
                varCurrentValue = CLng(varCurrentValue)
            End If
            strLine = strLine & varCurrentValue & ","
        Next j
        'Last column - not adding comma
        varCurrentValue = arr(i, j)
            If VarType(varCurrentValue) = vbString Then
                varCurrentValue = Replace(varCurrentValue, ",", "<comma>")
            End If
            If VarType(varCurrentValue) = vbDate Then
                varCurrentValue = CLng(varCurrentValue)
            End If
        strLine = strLine & varCurrentValue

        strLine = Replace(strLine, vbCrLf, "<vbCrLf>") 'replace all vbCrLf with tag - to avoid new line in output file
        strLine = Replace(strLine, vbLf, "<vbLf>") 'replace all vbLf with tag - to avoid new line in output file
        Print #intFileHandle, strLine
    Next i
Mor Sagmon
la source
0

Je n'avais aucune chance avec toutes les suggestions ci-dessus - j'ai proposé une solution très simple qui fonctionne à merveille. Collez les données dans Google Sheets, mettez en surbrillance la colonne de date, cliquez sur format, puis sur numéro et numéro à nouveau pour le changer en format numérique. Je copie et colle ensuite les données dans la feuille de calcul Excel, clique sur les dates, puis formate les cellules à ce jour. Très rapide. J'espère que cela t'aides.

Mike
la source
0

Ce problème me rendait fou, puis je suis tombé sur une solution facile. Au moins cela a fonctionné pour mes données. C'est facile à faire et à retenir. Mais je ne sais pas pourquoi cela fonctionne, mais changer de type comme indiqué ci-dessus ne fonctionne pas. 1. Sélectionnez la ou les colonne (s) avec les dates. 2. Recherchez une année parmi vos dates, par exemple 2015. Sélectionnez Remplacer tout avec la même année, 2015. 3. Répétez cette opération pour chaque année. Cela change les types en dates réelles, année par année.
Cela reste lourd si vous avez plusieurs années dans vos données. Plus rapide consiste à rechercher et à remplacer 201 par 201 (pour remplacer 2010 à 2019); remplacer 200 par 200 (pour remplacer 2000 à 2009); et ainsi de suite.

Wally
la source
0

Sélectionnez les dates et exécutez ce code dessus.

On Error Resume Next
    For Each xcell In Selection            
        xcell.Value = CDate(xcell.Value)     
    Next xcell                              
End Sub
Kathryn
la source
-1

J'utilise un mac.

Allez dans les préférences Excel> Édition> Options de date> Convertir automatiquement le système de date

Également,

Accédez à Tableaux et filtres> Groupe de dates lors du filtrage.

Le problème a probablement commencé lorsque vous avez reçu un fichier avec un système de date différent, ce qui a gâché votre fonction de date Excel.

Stephenie
la source
-2

En général, je crée simplement une colonne supplémentaire à des fins de tri ou de totalisation, alors utilisez year(a1)&if len(month(a1))=1,),"")&month(a1)&day(a1) .

Cela fournira un yyyymmddrésultat qui peut être trié. L'utilisation de cette len(a1)option permet d'ajouter un zéro supplémentaire pour les mois 1 à 9.

Paul
la source
2
Cela ne va pas aider puisque les dates ne sont pas reconnues comme des dates. De plus, il est rarement nécessaire d'utiliser des colonnes supplémentaires à des fins de tri
CallumDA le