Disons que j'ai une longue ficelle sur une cellule
A: 1/2/15 School Dog 20/09/19
B: (3 espaces) 1/8/16 School Cat 10/10/10
Je veux capturer les 1/2/15 et 1/8/16
Le problème est que la première chaîne est séparée par 1 espace la deuxième chaîne est séparée par 3 espaces
Donc pour moi
myStringArr = Split(myString,” “)
MsgBox myStringArr(1)
myStringArr(1) = 1/2/15
Ne fonctionne que pour la première chaîne, pas la deuxième
Que pourrais-je utiliser à la place de la condition «single space» pour analyser la chaîne et capturer la 1ère date à chaque fois
microsoft-excel
vba
Geai
la source
la source
Réponses:
Ceci est simple comme bonjour, seulement si la structure de la chaîne est comme ça.
la source
Voici une solution VBA utilisant Regex. La fonction définie par l'utilisateur prend deux paramètres: la référence de cellule et le numéro de correspondance. La méthode regex Execute renvoie tous les modèles correspondants et la fonction correspondante (comme vous le souhaitez) (si vous souhaitez renvoyer la deuxième date dans la chaîne d'entrée). La date correspondante est renvoyée sous forme de valeur de date, mais elle peut être modifiée pour renvoyer sous forme de chaîne en supprimant la fonction CDate ().
Exemple d'utilisation:
=ExtractDate(A1,2)
Cela renverra la deuxième date trouvée dans la chaîne dans la cellule A1
la source