2009-09-16 11 views
0

Je travaille actuellement sur un projet vba dans lequel l'utilisateur final copie/colle de longues chaînes de texte dans une feuille de calcul et le code pour analyser les données de la poubelle dans ces chaînes et l'organiser à partir d'eux.expression régulière dans vba excel recherche de groupes dans une chaîne

Les chaînes auront toujours des longueurs différentes et un nombre d'espaces différent entre les données. Cependant, ils seront toujours groupés de la même manière (c'est-à-dire que le prix vient en premier, un espace blanc, un prix unitaire, un espace blanc et le numéro d'identification). Y a-t-il une expression régulière qui va juste tirer les groupes (les lettres et les nombres) hors des espaces?

Répondre

2

Si vous souhaitez simplement supprimer des délimiteurs d'espace consécutifs, vous pouvez utiliser le texte pour les colonnes.

 MyRange.TextToColumns Destination:=MyRange.Cells(1), _ 
     DataType:=xlDelimited, _ 
     ConsecutiveDelimiter:=True, _ 
     Space:=True

Ensuite, vous pouvez lire vos valeurs hors des cellules de la plage de destination, MyRange.Cells (1) .CurrentRegion

2

En VBA:

Split(inputstring) 

Vous pouvez également définir un délimiteur différent, mais il utilise l'espace par défaut.

Ce dupe a un peu plus d'informations.

1

Je ne sais pas comment re syntaxe fonctionne dans Excel VBA, mais en python (qui est PERL-like), la plus simple expression régulière serait:

\S+ 

Cela correspondrait à une séquence de non -les caractères de whitespace, et en python j'utiliserais sa méthode findall pour récupérer toutes les correspondances du document.

Si excel VBA n'est pas un moyen simple de le faire, je recommande chaudement d'abandonner excel pour python (mais j'avoue que Excel est excellent et facile pour l'analyse syntaxique).

Questions connexes