Excel VBA: Trovare e cancellare Valori multipli stringhe in una colonna
-
14-10-2019 - |
Domanda
Sfondo:. Ho bisogno di ripulire un file CSV del mio estratto conto bancario per l'uso in uno strumento di rendicontazione finanziaria on-line
Le operazioni sono tutti nei seguenti formati (colonne separati da virgole):
0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9
Il problema che ho è che le informazioni nella colonna thrid è tutto unica causa dell'inclusione dell'importo della transazione e la data - "carta di pagamento per MICKEY MOUSE * 29.90 GBP ON 22-12-2010 *". Di conseguenza, sono costretto a catalogare tutte le oltre 200 transazioni singolarmente, che non è adatto con il mio benessere mentale.
La soluzione migliore che viene in mente è quello di eliminare tutti i numeri da questa colonna e trovare e sostituire tutti i termini ridondanti ( "GBP ON", "" '-') con un valore nullo, ma sono non sono sicuro di come fare per mettere insieme quella.
Qualsiasi aiuto sarebbe molto apprezzato.
Soluzione
Di seguito può aiutare. Sto facendo le seguenti ipotesi:
- Hai trovato i tuoi dati bancari online in un formato .csv inizialmente
- Il tuo terza colonna è sempre della forma
TextDescription+Amount+Currency+Date
- Nel file .csv, la terza colonna è la colonna C nella cartella di lavoro
le seguenti operazioni:
- Apri file .csv
- Apri VBE Editor premendo
ALT + F11
- Seleziona Inserisci> Modulo dalla barra degli strumenti
-
Nel modulo incolla il seguente codice, posto cursore in qualsiasi punto nel codice, e poi ha colpito `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
Questo dovrebbe effettuare le seguenti operazioni per ogni voce nella colonna C:
CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010
... diventa ...
CARD PAYMENT TO MICKEY MOUSE
Si noti che il codice funziona, cercando per la prima occorrenza di un numero nella descrizione e stripping fuori tutto quello dopo. Ciò presuppone che prima occorrenza di un numero sempre indica il prezzo. Se il destinatario del pagamento aveva un numero nel nome, allora il codice fallirebbe esempio PAGAMENTO CON CARTA DI Phones4U