如何使用Excel将银行交易分类为易于理解的类别,以查看我的资金流向何处?


0

我的老板希望手动分类我们的银行交易。现在我的任务是完成银行交易,并根据每个项目的内容将它们分类。对于随机支出(仅一次),有意义的是查找并输入它所属的类别,但对于重复出现的事物(同一家公司每次都提供相同的服务),有意义的是自动化,特别是当有很多时候交易。

银行交易按日期,描述,金额,类型(借方贷方等)出口到Excel。

我想要做的是有一个excel浏览“描述列”并将其转换为简单易读的东西。示例说明列包含“公司xyx 4003 ADP”我希望excel返回“工资单”下一个单元格包含“#3k322 Phil Marqu LLC”,我希望它返回“咖啡馆用品”。我想对存款示例做同样的事“存款WEB PMTS”应该成为“在线销售”

这样我就可以创建一个表格并按类别排序,即“咖啡馆用品”和“在线销售”,以创建一个简单的月度报告,显示进来的钱和资金。

我理想的情况涉及一个单独的参考表,我可以继续添加到那将有2列。列A将是要匹配的子字符串,而列B将是要返回的内容。示例我可以在A列中添加“#3k322”,因为我知道它将始终显示给咖啡馆用品供应商,而B列将是“咖啡馆用品”,如果将来我们添加另一家咖啡馆供应商我可以添加另一行到我的参考表。

我在网上阅读了很多关于索引和匹配以及vlookup的内容,但我不是一个excel专业人士,我很难搞清楚这一点。我将学习你向我投掷的任何功能。我很有动力去做这件事。

谢谢。

Answers:


2

您可以创建一个索引数组,在该列中,您可以在列中编写关键字,并在第二列的相同行中编写相应的类别:

#3k322Café提供
WEB在线销售

关键字应始终包含在您已有
的描述中在类别描述附近创建一个新的空列,并在第一个描述的前面写下此公式:

=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中的描述对应的关键字并给出它的行号
偏移会找到对应于该行的类别中发现的-2,因为I2是第二列的起源和1
,您可以拖动公式向下保持在那里我写的公式中的$,并更改引用符合您的数据
更新
在为了在不更改公式的情况下附加类别,请使用以下内容

=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

在此输入图像描述


这看起来比其他答案中建议的宏更简单。将报告结果。谢谢
脉冲

@yass - 哦!我喜欢这个。我会选择索引匹配解决方案,但你的是关键字,而不是整个字符串!
JSmart523 2017年

它似乎工作但我必须每次添加一个新的类别更改功能有没有办法自动化?此外,我开始怀疑是否有一种方法可以进一步对类别进行排序,例如费用类别,费用>固定,费用>变量。因此,如果我可以根据查询费用进行排序,但如果我想,我只能查看可变费用?
脉冲

对于类别(费用,固定,变量......)你可以决定你需要什么,没有问题,只需要在描述或任何对应的关键字写入
yass

我更新了公式以匹配任何新类别只需要一个简单的修改
yass

0

我为类似的项目创建了一个宏,基本上是为一个条目分配一个类别。

警告:它效率低下。通常不是个人使用的大问题。

要求:

两个工作表:

第一列中的事务名称,空列2

第一列中具有唯一事务名称的一个,以及第2列中的类别

没有空行

将其更改for i = 1 - X为等于正在处理的事务数

将p行更改为您拥有的类别数

请参阅:https//stackoverflow.com/questions/23025031/excel-compare-two-columns-from-one-sheet-copy-entire-row-on-match-to-new-sheet

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

感谢您抽出宝贵时间作出回应。我如何在我的情况下实现这一点?我想我需要更多的指导,因为我之前只使用过一次宏,而且它要简单得多。
脉冲

在visual basic窗口中创建一个新模块,然后粘贴代码。确保您的交易表名为“Sheet1”,并且您的类别表名为“Sheet2”并运行宏。在一个新的测试工作簿中尝试
user19702 2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.