Excel VBA: Finden und löschen Sie mehrere Werte aus Zeichenfolgen in einer Spalte
-
14-10-2019 - |
Frage
Hintergrund: Ich muss eine CSV -Datei meines Bankergebnisses für die Verwendung in einem Online -Finanzberichterstattungstool aufräumen.
Die Transaktionen befinden sich alle in den folgenden Formaten (Spalten, die von Commas getrennt sind):
0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9
Das Problem, das ich habe, ist, dass die Informationen in der Thrid -Spalte aufgrund der Einbeziehung des Transaktionsbetrags und des Datums "Kartenzahlung an Mickey Mouse* einzigartig sind29,90 GBP am 22.12.2010*". Infolgedessen bin ich gezwungen, alle 200+ Transaktionen einzeln zu kategorisieren, was mit meinem geistigen Wohlbefinden nicht notwendig ist.
Die beste Lösung, die ich mir vorstellen kann, ist, alle Zahlen aus dieser Spalte zu entfernen und alle redundanten Begriffe ("GBP on", ",", "-") durch einen Nullwert zu finden und zu ersetzen, aber ich bin mir nicht sicher, wie das zusammenstellen.
Jede Hilfe wäre sehr geschätzt.
Lösung
Das Folgende kann Ihnen helfen. Ich mache die folgenden Annahmen:
- Sie erhalten Ihre Online -Bankdetails anfangs in einem .csv -Format
- Ihre dritte Spalte ist immer von der Form
TextDescription+Amount+Currency+Date
- In der .csv -Datei befindet sich die dritte Spalte Spalte C im Arbeitsbuch
Folge diesen Schritten:
- Öffnen Sie die .csv -Datei
- Öffnen Sie den VBE -Editor, indem Sie drücken
ALT + F11
- Auswählen Einfügen> Modul aus der Symbolleiste
Fügen Sie im Modul den folgenden Code ein, platzieren Sie Cursor überall in Code und drücken Sie dann auf "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
Dies sollte für jedes Element in Spalte C Folgendes erfolgen:
CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010
...wird...
CARD PAYMENT TO MICKEY MOUSE
Beachten Sie, dass der Code nach dem ersten Ereignis einer Zahl in der Beschreibung und dem Ausdruck alles danach sucht. Dies setzt voraus, dass das erste Mal eine Zahl vorliegt stets bezeichnet den Preis. Wenn der Zahlungsempfänger eine Nummer im Namen hätte, würde der Code die z.