1

背景:我需要清理我的银行对账单的 CSV 文件,以便在在线财务报告工具中使用。

交易均采用以下格式(以逗号分隔的列):

0901XX 892XXXXX, 24/12/2010, CARD PAYMENT TO MICKEY MOUSE29.90 GBP ON 22-12-2010, -29.9

我遇到的问题是第三列中的信息都是唯一的,因为包含了交易金额和日期 - “2010 年 12 月 22 日向米老鼠支付29.90 英镑*”。因此,我不得不将所有 200 多笔交易单独分类,这不利于我的心理健康。

我能想到的最佳解决方案是从该列中删除所有数字,并找到所有冗余项(“GBP ON”、“.”、“-”)并将其替换为空值,但我不确定如何去把它放在一起。

任何帮助将不胜感激。

4

1 回答 1

1

以下内容可能对您有所帮助。我做出以下假设:

  1. 您最初以 .csv 格式获取您的网上银行详细信息
  2. 您的第三列始终采用以下形式TextDescription+Amount+Currency+Date
  3. 在 .csv 文件中,第三列是工作簿中的 C 列

跟着这些步骤:

  1. 打开 .csv 文件
  2. 按打开 VBE 编辑器ALT + F11
  3. 从工具栏中选择插入 > 模块
  4. 在模块中粘贴以下代码,将光标放在代码中的任意位置,然后按“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 卡付款

于 2010-12-30T18:04:39.720 回答