Excel VBA - Convertir du Texte en Date?
J'ai une colonne de dates (colonne A) stockés en tant que texte dans le format aaaa-mm-jj qui je suis en train de convertir les dates, en fin de compte, de sorte que je peux faire des recherches contre eux.
J'ai lu quelques sujets sur ici et essayé quelques-uns des suggestions, mais je ne peux pas trouver quelque chose à travailler. A été en utilisant:
Columns("A").Select
Selection.NumberFormat = "date"
Cela a changé le format des cellules à jour, mais n'a pas fait de changer le format de la valeur de ce qui était encore stockés en tant que texte.
Ma compréhension est que j'ai besoin d'utiliser CDate() pour modifier le format de la valeur de texte à ce jour. J'ai essayé quelque chose comme ceci:
Dim c As Range
For Each c In ActiveSheet.UsedRange.columns("A").Cells
c.Value = CDate(c.Value)
Next c
Ce qui me donne une erreur d'incompatibilité de type. Je me demandais si c'était parce que j'étais en essayant de sauver les valeurs de date de retour dans un non-date mise en forme des cellules, donc j'ai essayé de le combiner avec la .NumberFormat = "date" ci-dessus, qui ne fonctionne pas non plus.
Toutes les suggestions seraient appréciées.
Erreur d'incompatibilité de Type signifie généralement la date invalide comme
"1900-13-12"
, "1900-02-29"
, "10000-01-01"
, etc. Dates avant "1899-12-30"
résultat dans le générique "erreur d'Exécution '1004': définie par l'Application ou par l'objet défini erreur"OriginalL'auteur user1300244 | 2013-12-04
Vous devez vous connecter pour publier un commentaire.
Vous permet de convertir rapidement une colonne de texte qui ressemble à de dates en dates réelles avec le VBA équivalent de la feuille de calcul des Données ► Texte en Colonnes de commande.
Les opérations en bloc sont généralement beaucoup plus rapide qu'en parcourant les cellules et le VBA Gamme.TextToColumns méthode est très rapide. Il permet également la liberté de fixer un MDY vs DMY ou YMD conversion masque qui empoisonne beaucoup de texte importations lorsque le format de la date ne correspond pas au système de paramètres régionaux. Voir TextFileColumnDataTypes propriété pour une liste complète des formats de date disponibles.
OriginalL'auteur
Vous pouvez utiliser
DateValue
pour convertir votre chaîne à une date dans cette instanceIl peut convertir
yyyy-mm-dd
chaîne de format directement dans une native d'Excel date de valeur.dd-mmm-yyyy
format tropOriginalL'auteur
En plus d'autres options, je confirme que l'utilisation de
fonctionne (testé avec la description de votre cas, avec Excel 2010). Que pour les raisons pour vous d'obtenir une erreur d'incompatibilité de type, vous pouvez vérifier (par exemple) cette.
Il pourrait être un jeu de paramètres régionaux question.
OriginalL'auteur
Peut-être:
Cela suppose que la colonne Un contient les valeurs de texte comme 2013-12-25 avec aucune cellule d'en-tête.
OriginalL'auteur
Ce code fonctionne pour moi
Essayer de changer les colonnes en fonction de votre feuille de
OriginalL'auteur
Pour l'OP...
J'ai aussi eu une erreur d'incompatibilité de type la première fois que j'ai essayé de lancer votre sous-routine. Dans mon cas, il a été cause par la non-date-comme les données dans la première cellule (c'est à dire un en-tête).
Quand j'ai changé le contenu de la cellule d'en-tête de date-style txt pour les tests, il a fonctionné très bien...
Espère que cette aide.
OriginalL'auteur
Souffle du passé, mais je crois que j'ai trouvé une réponse facile à cela. La suite travaillé pour moi. Je pense que c'est l'équivalent de la sélection de la cellule en appuyant sur la touche F2, puis appuyer sur la touche enter, ce qui rend Excel reconnaître le texte comme une date.
OriginalL'auteur
Je l'ai débarrassé de l'incompatibilité de type par code suivant:
Mais dans mon cas particulier, j'ai les données dans le format "jj.mm.yy"
OriginalL'auteur
Pour DD-MM-AAAA ici est une solution simple pour gérer la chaîne et les dates:
insérer la date dans la chaîne via DD-MMM-AAAA
par exemple 01-11-2017 -> 01-Nov-2017
U pouvez utiliser le FORMAT(date, "dd-mmm-yyyy") à l'entrée des dates dans une chaîne de caractères à partir de la feuille de calcul.
Plus tard, lors de la sortie à partir d'une chaîne de caractères, il ne sera pas confondre les jours et les mois.
OriginalL'auteur
J'ai eu un problème similaire plus tôt. Malheureusement, j'ai regardé ce fil et ne trouvez pas la réponse dont j'ai été heureux avec. J'espère que cela va aider les autres.
À l'aide de
VBA.DateSerial(year,month,day)
vous pouvez surmonter Excel intrinsèque de biais, pour NOUS, le format de date. Cela signifie également que vous avez le plein contrôle sur les données, ce qui est quelque chose personnellement, je préfère:OriginalL'auteur