背景:我需要清理银行对帐单的CSV文件,以便在在线财务报告工具中使用。
交易全部采用以下格式(以逗号分隔的列):
0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9
我遇到的问题是thrid列中的信息都是唯一的,因为包含了交易金额和日期 - “卡片支付给MICKEY MOUSE * 29.90英镑于2010年12月22日 *”。因此,我不得不单独对所有200多笔交易进行分类,这不符合我的心理健康。
我能想到的最佳解决方案是删除此列中的所有数字,并使用空值查找并替换所有冗余术语(“GBP ON”,“。”,“ - ”),但我是不知道怎么把它放在一起。
非常感谢任何帮助。
答案 0 :(得分:1)
以下内容对您有所帮助。我做了以下假设:
TextDescription+Amount+Currency+Date
请按照以下步骤操作:
ALT + F11
在模块中粘贴以下代码,将光标放在代码中的任意位置,然后点击“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
这应该对C列中的每个项目执行以下操作:
CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010
... ...变为
CARD PAYMENT TO MICKEY MOUSE
请注意,代码的工作原理是在描述中查找数字的第一次出现并在此之后删除所有内容。这假设首次出现的数字总是表示价格。如果付款接收方在名称中有号码,则代码将失败,例如卡片支付给PHONES4U