Excel VBA:从一列中的字符串中查找并删除多个值
-
14-10-2019 - |
题
背景:我需要清理银行对帐单的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年2月22日*”。因此,我被迫单独分别对所有200多个交易进行分类,这对我的心理福祉并非如此。
我能想到的最好的解决方案是从此列中删除所有数字,并找到并替换所有冗余项(“ GBP”,“”,“。”,“ - ”),但我不确定如何确定将其放在一起。
任何帮助将不胜感激。
解决方案
以下可能会对您有所帮助。我正在做以下假设:
- 您最初以.csv格式获得在线银行详细信息
- 您的第三列始终是形式
TextDescription+Amount+Currency+Date
- 在.csv文件中,第三列是工作簿中的C列
按着这些次序:
- 打开.csv文件
- 按下打开VBE编辑器
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
请注意,该代码是通过寻找描述中的第一个数字并在此之后删除所有内容来起作用的。这是假设第一次出现数字 总是 表示价格。如果付款收件人名称中有一个数字,则代码将使eg卡付款失败至phones4u
不隶属于 StackOverflow