上司は、銀行取引を手動で分類することを望んでいます。今の私の仕事は、銀行取引を調べて、各アイテムが何であるかに基づいてそれらをカテゴリに分類することです。ランダムな支出(1回のみ)の場合は、それを調べてカテゴリを入力するのが理にかなっていますが、定期的なもの(同じ会社が毎回同じサービスを提供している)の場合は、特に多くの場合に自動化するのが理にかなっていますトランザクションの。
銀行取引は、日付、説明、金額、タイプ(デビットクレジットなど)でExcelにエクスポートされます。
私がやりたいのは、Excelに「説明列」を調べて、シンプルで読みやすいものに変換することです。例説明列に「Companyxyx4003ADP」が含まれているExcelに「payroll」を返したい次のセルに「#3k322PhilMarquLLC」が含まれている「Cafesuppliers」を返したい預金についても同じことをしたい例「預金WEBPMTS」は「オンライン販売」になります
このようにして、テーブルを作成し、カテゴリ別にsort、つまり「カフェ用品」と「オンライン販売」を作成して、入金と出金を示す簡単な月次レポートを作成できます。
私の理想的な状況には、2つの列を持つ別の参照テーブルを追加し続けることができます。列Aは一致する部分文字列であり、列Bは返されるものです。例列A「#3k322」を入力できます。これは、カフェ用品ベンダーには常に表示され、列Bは「カフェ用品」であり、将来、別のカフェ用品ベンダーを追加する場合は、別の行を追加できるためです。私の参照テーブルに。
私はインデックスと一致とvlookupについてオンラインで多くのことを読みましたが、私はExcelのプロではなく、これを理解するのに苦労しています。私はあなたが私に投げるどんな機能も学びます。私はこれをやる気になっています。
ありがとうございました。
1つの列にキーワードを記述し、同じ行の2番目の列に対応するカテゴリを記述するインデックス配列を作成できます。
#3k322 Café supplies
WEB Online sales
キーワードは常にあなたがすでに持っている説明に含まれているべきです
カテゴリの説明の近くに新しい空の列を作成し、最初の説明の前に次の式を記述します。
=OFFSET($I$2,SUMPRODUCT(--ISNUMBER(FIND($I$2:$I$4,B2,1))*ROW($I$2:$I$4))-2,1)
ここで、$ I $ 2:$ I $ 4は、I2で始まるキーワードの列です。
J2:J4は、対応するカテゴリの列です
B2が最初の説明です
Sumproductは、B2の説明に対応するキーワードを見つけて、その行番号を示します。
I2は原点であり、1は2番目の列であるため、オフセットは-2で見つかった行に対応するカテゴリを見つけます。
数式を下にドラッグして、数式に書き込んだ場所の$を保持し、データに対応するように参照を変更できます。
更新
数式を変更せずにカテゴリを追加するには、次を使用します
=OFFSET($I$2,SUMPRODUCT(--ISNUMBER(FIND(INDIRECT($L$1),B2,1))*ROW(INDIRECT($L$1)))-2,1)
ここで、L1はキーワード列の参照であり、カテゴリを変更(追加または削除)するたびに、L1に参照を書き込みます:$ I $ 2:$ I $ 4
キーワードは、説明に記載されているとおりに正確に記述するようにしてください(大文字または小文字の検索では大文字と小文字が区別されます)。
INDIRECTはL1を読み取り、それを$ I $ 2:$ I $ 4に変換します
同様のプロジェクトのマクロを作成し、基本的にカテゴリをエントリに割り当てました。
警告:それは非効率的です。通常、個人的な使用には大したことではありません。
要件:
2つのワークシート:
列1にトランザクション名があり、列2が空の場合
1列目に一意のトランザクション名があり、2列目にそれらのカテゴリがあるもの
空白行なし
for i = 1 - X
を変更して、処理中のトランザクションの数と等しくします
あなたが持っているカテゴリーの数のp行を変更してください
Sub AddDepartment()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim i As Long, j As Long, p As Long
Dim isMatch As Boolean
Set ws1 = ActiveWorkbook.Sheets("Sheet1") 'transactions sheet
Set ws2 = ActiveWorkbook.Sheets("Sheet2") 'categorized sheet
'Initial position of first element in sheet2
p = 1
For i = 1 To 100 'last row of transaction sheet necessary
isMatch = False
For j = 1 To 100 'last row of category sheet necessary
If ws1.Cells(i, 1).Value = ws2.Cells(j, 1).Value Then 'if transactions.transactions = category.transactions
ws2.Cells(j, 2).Copy ws1.Cells(p, 2) 'write category.category to transactions.category
isMatch = True
p = p + 1
End If
Next j
If isMatch = False Then
ws1.Cells(p, 2) = "OTHER" 'set anything that does not match to "other" category
p = p + 1
End If
Next i
End Sub