質問

背景:オンライン財務報告ツールで使用するために、銀行声明のCSVファイルをクリーンアップする必要があります。

トランザクションはすべて次の形式です(コンマによって分離された列):

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

私が抱えている問題は、トランザクションの量と日付が含まれているため、スルー列の情報はすべて一意であるということです。「ミッキーマウスへのカード支払い*2010年22日12月22日の29.90 GBP*"。その結果、私は200以上のトランザクションすべてを個別に分類することを余儀なくされていますが、これは私の精神的幸福とは容認されていません。

私が考えることができる最良の解決策は、この列からすべての数値を削除し、すべての冗長な用語( "gbp on"、 "、"、 " - ")をnull値で見つけて置き換えることですが、どのようにしてもわかりませんそれをまとめるために。

どんな助けも大歓迎です。

役に立ちましたか?

解決

以下はあなたを助けるかもしれません。私は次の仮定を行っています:

  1. 最初に.CSV形式でオンラインバンキングの詳細を取得しています
  2. 3番目の列は常にフォームです TextDescription+Amount+Currency+Date
  3. .csvファイルでは、3番目の列はワークブックの列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

コードは、説明の数の最初の発生を探し、その後すべてを取り除くことで機能することに注意してください。これは、数の最初の発生を前提としています いつも 価格を示します。支払いの受信者が名前に番号を持っていた場合、コードは電話4Uへのカードの支払いなどに失敗します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top