How to Track Multiple Rental Properties in One Google Sheet
When you go from 1 property to 3, the spreadsheet question changes. It's not "how do I track rent?" anymore. It's "how do I track rent across multiple properties without losing my mind?"
I've tried both common approaches. Here's what works, what doesn't, and when it's time to move beyond spreadsheets entirely.
Approach 1: Separate Tabs Per Property (Common but Worse)
This is what most landlords do first. You create a tab for "123 Main St" and another for "456 Oak Ave." Each tab has the same column layout. It feels organized.
It works fine with 2 properties. Maybe even 3. But here's where it breaks down.
You can't easily see totals across all properties. Want to know your total outstanding rent? You need to go tab by tab and add them up manually. Or build a formula that references every single tab by name.
Adding a new property means creating a new tab AND updating every summary formula to include the new tab. Forget one formula and your numbers are wrong.
Searching is painful. "Which tenant is in Unit 4B?" You're clicking through tabs trying to find it.
I used this approach for about 6 months. It felt clean but it wasn't. It just looked clean.
Approach 2: One Flat Table with a Property Column (Better)
This is what I switched to and never looked back. One tab called "Rent Roll." Every unit from every property in the same table. You just add a "Property" column.
Your columns become: Property, Unit, Tenant, Rent Amount, Due Date, Date Paid, Days Late, Status, Notes.
So row 2 might be "123 Main St, Unit 1A, Johnson, $1,400, 01/01/2025..." and row 10 might be "456 Oak Ave, Unit 3, Smith, $950, 01/01/2025..."
Everything in one place. One scroll shows you everything. And the formulas get way more powerful.
Why the Flat Table Wins
SUMIF by property: Want total rent for 123 Main St?
=SUMIF(A:A,"123 Main St",D:D)
One formula. Works no matter how many properties you add.
COUNTIF for overdue by property:
=COUNTIFS(A:A,"123 Main St",H:H,"OVERDUE")
How many overdue units at Main St? One cell gives you the answer.
QUERY for custom views:
=QUERY(A1:I50,"SELECT B,C,D,G WHERE A='123 Main St' AND H='OVERDUE'")
This pulls just the overdue units at a specific property into a clean table. Put this on a dashboard tab and you've got a filtered view without filtering anything.
The flat table also means sorting and filtering work perfectly. Sort by Days Late descending, and your most overdue unit across all properties is at the top. Can't do that with separate tabs.
Building a Dashboard Tab
Once your data is in one flat table, create a "Dashboard" tab. This is your command center. Here's what I put on mine.
Property Summary Section: One row per property with columns for Total Units, Occupied Units, Vacant Units, Total Expected Rent, Total Collected, Total Outstanding.
Total units per property: =COUNTIF('Rent Roll'!A:A,"123 Main St")
Vacant units: =COUNTIFS('Rent Roll'!A:A,"123 Main St",'Rent Roll'!C:C,"VACANT")
Total collected: =SUMIFS('Rent Roll'!D:D,'Rent Roll'!A:A,"123 Main St",'Rent Roll'!F:F,"<>")
Overdue Section: Use QUERY to pull a live list of every overdue unit across all properties.
=QUERY('Rent Roll'!A1:I50,"SELECT A,B,C,D,G WHERE H='OVERDUE' ORDER BY G DESC")
This gives you a sorted list of every late payment. Property, unit, tenant, amount, and how many days late. The worst offender is always on top.
Portfolio Totals: Grand totals across everything. Total units owned. Total monthly rent. Overall vacancy rate. Overall collection rate.
Collection rate: =SUMIF(H:H,"Paid",D:D)/SUM(D:D)
These numbers on one screen tell you exactly where your portfolio stands.
Tips for Keeping It Clean
Use data validation for property names. Go to Data > Data Validation and create a dropdown list of your property names. This prevents typos like "123 Main" vs "123 Main St" that break your SUMIF formulas.
Use consistent naming. Pick a format and stick with it. "123 Main St" everywhere. Not "Main Street" in one place and "123 Main" in another.
Color-code by property. I give each property a subtle background color. Main St rows get a light blue background. Oak Ave gets light yellow. Makes visual scanning easier.
Sort by property, then unit. Keep your data organized. All Main St units together, all Oak Ave units together.
When This Approach Starts Breaking
The flat table works great up to about 15 units. Maybe 20 if you're disciplined. Beyond that, a few things start happening.
The sheet gets slow. Too many formulas recalculating on every edit. Conditional formatting across 100 rows starts lagging.
You start needing multiple sheets. One for rent roll, one for expenses, one for maintenance. Now you're cross-referencing between sheets and the formulas get complex.
The manual data entry takes longer. With 20 units, logging payments takes 10 minutes. With 40, it's 30 minutes. And one typo can throw off your totals.
If you're hitting this wall, you have two choices. Property management software (expensive, complex, migration headache). Or keep your spreadsheet and add monitoring on top. If you're curious about when it's time to bring in help, read how many units before you need a property manager.
For the full spreadsheet toolkit approach, check out our spreadsheet landlord toolkit guide.
Start with the flat table. Build a dashboard. Use SUMIF and QUERY to pull the numbers you need. It'll serve you well until you're big enough that a dedicated tool makes sense. And even then, your spreadsheet skills transfer. You'll always be the landlord who knows their numbers.
Stop missing late rent payments
RentGuard monitors your Google Sheet and alerts you when rent is overdue or maintenance is aging. No migration. 5 minute setup. 30 days free.
Start Free Monitoring →