Once you've converted your bank statement PDF to CSV or Excel, the next step is categorization โ assigning each transaction to a meaningful category like "Office Supplies," "Payroll," "Meals," or "Revenue." Without categorization, a spreadsheet of transactions is just data. With it, you have a cash flow picture, a tax deduction ledger, and a budget tracking system.
This guide builds a complete categorization system in Excel โ from the initial workbook setup to a VLOOKUP formula that automatically categorizes known merchants, to a pivot table that shows spending by category instantly.
Step 1: Set Up Your Workbook Structure
A well-organized workbook makes categorization and reporting significantly easier. Use this two-sheet structure:
- Sheet 1: "Transactions" โ Your converted bank statement data. Columns: A=Date, B=Description, C=Amount, D=Category (new column you'll add), E=Notes (optional)
- Sheet 2: "Categories" โ Your lookup table. Column A=Keyword, Column B=Category name. This is what your auto-categorization formula references.
After importing your CSV, add "Category" as a header in cell D1. Leave the column blank for now โ you'll populate it with a formula in Step 4.
Step 2: Build Your Category List
On Sheet 2 ("Categories"), build two tables: a keyword table for auto-matching and a master category list for your dropdown.
Keyword Table (Columns A and B)
Column A contains keywords that appear in bank transaction descriptions. Column B contains the category those keywords should map to. Examples:
| Column A: Keyword | Column B: Category |
|---|---|
| AMAZON | Office Supplies |
| AMZN | Office Supplies |
| PAYROLL | Revenue - Payroll |
| DIRECT DEP | Revenue - Payroll |
| STRIPE | Revenue - Sales |
| PAYPAL | Revenue - Sales |
| STARBUCKS | Meals & Entertainment |
| UBER EATS | Meals & Entertainment |
| AT&T | Utilities - Phone |
| VERIZON | Utilities - Phone |
| GOOGLE ADS | Marketing |
| Marketing | |
| GUSTO | Payroll Expense |
| ADP | Payroll Expense |
| INTUIT | Software - Accounting |
| DROPBOX | Software - Storage |
| USPS | Shipping |
| FED EX | Shipping |
| RENT | Rent |
| NSF FEE | Bank Fees |
Add as many keyword rows as you need. The more keywords you define, the higher the auto-categorization rate. Name this range: select all data in columns A and B, then use the Name Box (top-left) to name it KeywordTable.
Step 3: Add Dropdown Validation to the Category Column
Before writing the formula, set up dropdown validation on column D so that manually entered or formula-assigned categories are always consistent spelling โ inconsistent names ("Office supplies" vs "Office Supplies") break pivot table totals.
- In Sheet 2, create your master category list in column D, starting at D1. List every category name you want to use โ one per row.
- Name this list. Select all category names in column D, then type
CategoryListin the Name Box and press Enter. - Go back to Sheet 1. Select the entire Category column (D2:D5000 or however far your data goes).
- Go to Data โ Data Validation. Under Allow, choose "List." In the Source field, enter
=CategoryList. Click OK.
Now every cell in column D has a dropdown. Manually entered categories will be validated against your list, preventing typos.
Step 4: Auto-Categorize Transactions with SEARCH + INDEX/MATCH
The key formula uses SEARCH() (partial text match) rather than VLOOKUP() with exact match, because bank transaction descriptions contain merchant names alongside reference codes and timestamps. You need to find "AMAZON" within "AMAZON.COM*AB12345 SEATTLE WA."
The Formula
=IFERROR( INDEX(Categories!$B$2:$B$100, MATCH(TRUE, ISNUMBER(SEARCH(Categories!$A$2:$A$100, B2)), 0)), "Uncategorized")
How it works: SEARCH(Categories!$A:$A, B2) checks whether each keyword in your keyword table appears anywhere in the transaction description. ISNUMBER() converts the result to TRUE/FALSE. MATCH(TRUE, ..., 0) finds the first TRUE (first matching keyword). INDEX() returns the corresponding category from column B. IFERROR() returns "Uncategorized" if no keyword matches.
Simpler Alternative: IF + SEARCH Chain
If you have fewer than 10 keywords, a nested IF approach is easier to read:
=IF(ISNUMBER(SEARCH("PAYROLL",B2)), "Revenue - Payroll", IF(ISNUMBER(SEARCH("AMAZON",B2)), "Office Supplies", IF(ISNUMBER(SEARCH("STRIPE",B2)), "Revenue - Sales", "Uncategorized")))
Step 5: Highlight Uncategorized Transactions
Use conditional formatting to make uncategorized rows visually obvious so you don't miss them:
- Select your entire data range (A2 through E1000).
- Go to Home โ Conditional Formatting โ New Rule.
- Choose "Use a formula to determine which cells to format."
- Enter the formula:
=$D2="Uncategorized"โ note the $ before D but not before 2, so it applies the condition per row. - Set the format to a light orange or yellow fill. Click OK. Uncategorized rows now stand out immediately.
Step 6: Build a Category Summary Pivot Table
Once your transactions are categorized, a pivot table turns the data into an actionable summary in seconds:
- Click anywhere in your transaction data.
- Go to Insert โ PivotTable. Choose "New Worksheet."
- In the PivotTable Fields panel: Drag "Category" to Rows. Drag "Amount" to Values (it will default to Sum). Drag "Date" to Filters (optional โ lets you filter by month).
- Format the Amount column as Currency: right-click on any value in the pivot > Number Format > Currency.
- Sort by sum descending to see your largest expense categories at the top: right-click on any amount > Sort > Largest to Smallest.
You now have a live spending-by-category summary. When you update your transaction data, right-click the pivot table and choose "Refresh" to update the totals.
IRS Business Expense Categories to Use
If you're categorizing for tax purposes, align your categories with IRS Schedule C line items so your accountant can use your spreadsheet directly:
๐ฐ Income Categories
- Revenue - Sales
- Revenue - Payroll
- Revenue - Refund Received
- Revenue - Interest Income
- Owner Contribution
- Loan Proceeds (non-taxable)
๐ Deductible Expenses
- Advertising & Marketing
- Office Supplies
- Software & Subscriptions
- Meals & Entertainment (50%)
- Travel
- Professional Services
- Payroll Expense
- Rent
- Utilities
- Insurance
- Bank Fees
- Shipping & Postage
๐ซ Non-Deductible / Pass-Through
- Owner Draw
- Loan Repayment - Principal
- Personal - Non-Deductible
- Inter-Account Transfer
- Tax Payment
โ Needs Review
- Uncategorized
- Unknown Vendor
- Large Transaction - Review
- Possible Duplicate
Get Your Bank Statement Into Excel First
Convert your PDF bank statement to a clean CSV or Excel file โ then use this categorization system. Free, no sign-up, done in 30 seconds.
Convert to Excel Free โFrequently Asked Questions
What are the standard categories for business bank transactions?
IRS Schedule C business categories: Advertising, Office Expenses, Supplies, Legal & Professional Services, Payroll, Rent or Lease, Repairs & Maintenance, Travel, Meals (50% deductible), Utilities, Wages, Insurance, Interest, Taxes & Licenses, Contract Labor, Employee Benefits. Add Revenue and Owner Draw to complete your chart of accounts.
How do I auto-categorize bank transactions in Excel?
Build a keyword table (merchant name โ category) on a separate sheet. Then use this array formula in your Category column: =IFERROR(INDEX(Categories!$B:$B,MATCH(TRUE,ISNUMBER(SEARCH(Categories!$A:$A,B2)),0)),"Uncategorized"). Press Ctrl+Shift+Enter to confirm. This searches each transaction description for keywords and returns the matching category.
Why does VLOOKUP not work well for bank transaction descriptions?
VLOOKUP requires an exact match. Bank transaction descriptions are never exact โ they contain the merchant name plus reference codes, location codes, and timestamps. "AMAZON.COM*AB12345" will never exactly match "AMAZON." The SEARCH() function finds substrings within text, so it correctly matches "AMAZON" inside any Amazon transaction description.
How do I export categorized transactions to QuickBooks?
Save your Excel file as CSV. Import into QuickBooks Online via Banking > Upload from file. Note: QuickBooks CSV import doesn't accept a Category column โ categories are assigned inside QuickBooks after import using Bank Rules. The better workflow is: set up Bank Rules in QuickBooks with the same keywords you use in your Excel keyword table โ they'll auto-categorize on import.
Should I separate personal and business transactions before categorizing?
Yes โ always. If you have a dedicated business bank account, all transactions should be business-related (any personal expenses paid through the business account should be categorized as "Owner Draw"). If you use a personal account for business, add a column to flag each transaction as "Business" or "Personal" before categorizing, and only include business transactions in your tax analysis.