Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Below is a table filled with example data. The column on the very right "Expense/Income" shows my desired end-state and what I'm asking help with figuring out. Using the column "Property", I want to create the column "Expense/Income" by marking every row between the values "1150 - Bank Operating #1743" and "1160 - Bank - Escrow #1768" as "Expense". Conversly, for every value between "1160 - Bank - Escrow #1768" and "Total", I want labeled as "Income". You can see that these values are based on monthly files that are named in the first column "Source.Name", and maybe the solution will take that into consideration.
The fun thing is the row counts between those values is almost never the same, so I can't just use static indexing. A massive thank you in advance for taking a look at this problem.
| Source.Name | Property | Debit | Credit | Expenses/Income |
| general_ledger-20220701.csv | 1150 - Bank - Operating #1743 | null | null | Expense |
| general_ledger-20220701.csv | Address 1 | null | 71.1 | Expense |
| general_ledger-20220701.csv | Property 2 | null | 32.34 | Expense |
| general_ledger-20220701.csv | Property 2 | null | 736.94 | Expense |
| general_ledger-20220701.csv | Property 3 | null | 846.54 | Expense |
| general_ledger-20220701.csv | 1160 - Bank - Escrow #1768 | 800 | null | Income |
| general_ledger-20220701.csv | 2100 - Management Held Security Deposits | 500 | null | Income |
| general_ledger-20220701.csv | 2300 - Unearned Revenue | 300 | null | Income |
| general_ledger-20220701.csv | Total | 7408.78 | 7408.78 | Income |
| general_ledger-20220801.csv | 1150 - Bank - Operating #1743 | null | null | Expense |
| general_ledger-20220801.csv | Address 1 | 35 | null | Expense |
| general_ledger-20220801.csv | Property 2 | null | 736.94 | Expense |
| general_ledger-20220801.csv | Property 3 | null | 687.94 | Expense |
| general_ledger-20220801.csv | Address 1 | null | 797.55 | Expense |
| general_ledger-20220801.csv | 1160 - Bank - Escrow #1768 | null | null | Income |
| general_ledger-20220801.csv | 2100 - Management Held Security Deposits | null | null | Income |
| general_ledger-20220801.csv | Property 2 | 736.94 | null | Income |
| general_ledger-20220801.csv | Total | 7392.64 | 7392.64 | Income |
| general_ledger-20220901.csv | 1150 - Bank - Operating #1743 | null | null | Expense |
| general_ledger-20220901.csv | Property 2 | null | 170.75 | Expense |
| general_ledger-20220901.csv | Property 2 | null | 25 | Expense |
| general_ledger-20220901.csv | Property 3 | null | 8.64 | Expense |
| general_ledger-20220901.csv | Property 2 | null | 573.99 | Expense |
| general_ledger-20220901.csv | Property 3 | null | 839.97 | Expense |
| general_ledger-20220901.csv | Address 1 | null | 816.39 | Expense |
| general_ledger-20220901.csv | 1160 - Bank - Escrow #1768 | null | null | Income |
| general_ledger-20220901.csv | 2100 - Management Held Security Deposits | null | null | Income |
| general_ledger-20220901.csv | Property 2 | 573.99 | null | Income |
| general_ledger-20220901.csv | Property 3 | 839.97 | null | Income |
| general_ledger-20220901.csv | Address 1 | 816.39 | null | Income |
| general_ledger-20220901.csv | Total | 6665.28 | 6665.28 | Income |
Solved! Go to Solution.
=Table.Combine(Table.Group(PreviousStepName,"Property",{"n",each let a=if Text.StartsWith([Property]{0},"1150") then "Expense" else "Income" in Table.AddColumn(_,"Expense/Income",each a)},0,(x,y)=>Byte.From(Text.StartsWith(y,"1150") or Text.StartsWith(y,"1160")))[n])
=Table.Combine(Table.Group(PreviousStepName,"Property",{"n",each let a=if Text.StartsWith([Property]{0},"1150") then "Expense" else "Income" in Table.AddColumn(_,"Expense/Income",each a)},0,(x,y)=>Byte.From(Text.StartsWith(y,"1150") or Text.StartsWith(y,"1160")))[n])
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
| User | Count |
|---|---|
| 11 | |
| 7 | |
| 5 | |
| 5 | |
| 3 |