Comment faire pour modifier mm/jj/aaaa au jj/mm/aaaa à l'aide de VBA
J'ai un problème de conversion mm/jj/aaaa au jj/mm/aaaa format de date à l'aide de VBA.
J'ai un tableau comme ceci:
pour info, le tableau est généré automatiquement à partir d'un outil de reporting.
Peut "la manipulation de la chaîne", ou de toute excel à l'aide d'une fonction? Espérons que quelqu'un qui sais comment résoudre ce problème peut me donner une idée.
- Je suppose que la date paires sont dans une seule cellule. Sont les paires séparées par un tiret ou {l'espace tiret espace}??
Vous devez vous connecter pour publier un commentaire.
Bien, de la façon dont vous avez formulé votre question, je ne suis pas convaincu que vous voulez vraiment ou besoin de VBA.
En regardant l'image que vous avez posté, il semble que la première cellule contient la chaîne de caractères
05/06/2013 - 05/10/2013
pas la date05/06/2013
. Donc, la première chose que vous devez faire est de diviser les parties de sorte que la fonction dans Excel ou VBA fonctions peuvent convertir.Par Les Formules Excel
Afin que nous puissions utiliser la RECHERCHE ou de TROUVER de trouver le "-" et de faire les choses de façon dynamique. Mais je me sens paresseux donc je vais juste prendre les 10 premiers caractères de la chaîne sont la date de la première et de la dernière 10 caractères sont la deuxième date. Une fonction TRIM sur la chaîne source devrait rendre cela un peu plus en sécurité dans des espaces avant ou après.
Donc, si notre chaîne
05/06/2013 - 05/10/2013
est dans la cellule A2, nous pouvons mettre=LEFT(TRIM(A2),10)
en B2 et=RIGHT(TRIM(A2),10)
en C2.Maintenant ce sont toujours des chaînes de caractères. Normalement, je voudrais utiliser DATEVAL pour convertir les chaînes de caractères pour les dates, mais mon exemplaire de Excel n'est pas comme ces fous non-sens* les formats de date. Nous allons donc analyser les dates en fonction de la DATE. Mettre
=DATE(RIGHT(B2,4),LEFT(B2,2),MID(B2,4,2))
et=DATE(RIGHT(C2,4),LEFT(C2,2),MID(C2,4,2))
dans les cellules C2 et D2 respectivement.De là, on peut se recombiner entre eux à l'aide de la fonction TEXTE (un peu comme le format de fonction en VBA) et certains de concaténation de chaîne dans l'original de votre seule cellule de la plage de date format. En supposant que c'est le résultat souhaité.
Donc notre dernière cellule, F2, serait
=TEXT(D2,"dd/MM/yyyy") & " - " & TEXT(E2,"dd/MM/yyyy")
. On peut bien entendu combiner toutes ces formules dans un grand désordre de la sorte:Par Visual Basic pour Applications
C'est le même processus ici, juste à l'aide de VBA fonctions et syntaxe des formules Excel.
Maintenant, pour quelque raison que ce soit le VBA version de Dateval acceptera ces dates dans ma copie d'Excel. Donc je vais l'utiliser.
Cela peut être testé en exécutant le Test fourni sous, ou ChangeDateFormat peut être utilisé comme une fonction définie par l'utilisateur dans une formule excel
=ChangeDateFormat(A2)
.Remarque, dans les formats de date passé pour le Format, j'ai échappé à la date séparateur
\/
au lieu de simplement mettre/
dans. C'est parce que la fonction de formatage de les remplacer automatiquement/
avec le séparateur de date à partir de vos paramètres Windows. Et depuis que j'utilise un ordinateur moderne amical format de la date, mon séparateurs sont des tirets...Note de bas de page
* La vie serait tellement plus facile si les gens ont l'utilisation ISO 8601. Il existe pour une raison, une bonne raison.
format(varDate, "dd/MM/yyyy")
http://www.techonthenet.com/excel/formulas/format_date.php