Excel VBA: Trouver et supprimer les valeurs multiples à partir de chaînes dans une colonne
-
14-10-2019 - |
Question
Arrière-plan. Je dois nettoyer un fichier CSV de mon relevé bancaire pour une utilisation dans un outil de reporting financier en ligne
Les opérations sont dans les formats suivants (colonnes séparés par des virgules):
0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9
Le problème que j'ai est que les informations contenues dans la colonne thrid est tout unique en raison de l'inclusion du montant de la transaction et la date - « PAIEMENT PAR CARTE DE MICKEY MOUSE * 29,90 GBP 22-12-2010 * ». Par conséquent, je suis obligé de classer toutes les transactions individuellement 200+, ce qui est de mon bien-être propice mentale.
La meilleure solution que je peux penser est de supprimer tous les numéros de cette colonne et rechercher et remplacer toutes les conditions redondantes ( « GBP », « » « - ») avec une valeur nulle, mais je suis pas sûr de savoir comment s'y prendre pour mettre cela ensemble.
Toute aide serait grandement appréciée.
La solution
Ce qui suit peut vous aider. Je fais les hypothèses suivantes:
- Vous obtenez vos coordonnées bancaires en ligne dans un format .csv initialement
- Votre troisième colonne est toujours de la forme
TextDescription+Amount+Currency+Date
- Dans le fichier Csv, la troisième colonne est la colonne C dans le classeur
Procédez comme suit:
- fichier Open
- Ouvrir l'éditeur VBE en appuyant sur
ALT + F11
- Sélectionnez Insérer> Module de la barre d'outils
-
Dans le module collez le code suivant, placez le curseur n'importe où dans le code, puis appuyez sur F5' `
Sub CleanTransaction() Dim rng As Range, cl As Range Dim lastRow As Long, iChar As Long lastRow = Range("C1").End(xlDown).Row Set rng = Range("C1:C" & lastRow) For Each cl In rng For iChar = 1 To Len(cl) If IsNumeric((VBA.Mid$(cl, iChar, 1))) Then cl = VBA.Trim$(VBA.Left$(cl, iChar - 1)) End If Next iChar Next cl End Sub
Cela devrait faire ce qui suit pour chaque élément dans la colonne C:
CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010
... devient ...
CARD PAYMENT TO MICKEY MOUSE
Notez que les œuvres de code en recherchant la première occurence d'un numéro dans la description et le décapage à tout ce qui suit. Cela suppose que la première apparition d'un certain nombre toujours désigne le prix. Si le bénéficiaire du paiement avait un numéro dans le nom, puis le code échouerait par exemple PAIEMENT DE CARTE À Phones4u