How to calculate age using a specific date instead of current date in Google Sheets

I’m working on a spreadsheet where I need to calculate people’s ages based on their birth dates. Right now I have a formula that works with today’s date, but I need to modify it to use a fixed date instead.

Here’s what I’m currently using:

=YEAR(NOW())-YEAR(B3)-1 + (MONTH(NOW())>MONTH(B3)) + (MONTH(B3)=MONTH(NOW()))*(DAY(NOW())>=DAY(B3))

The problem is that I don’t want to calculate ages based on today’s date. I need to calculate them based on September 1st, 2011. Is there a way to replace the TODAY() function with a specific date? I tried a few things but couldn’t get it working properly. Any help would be appreciated!

Everyone’s given you solid formula fixes, but here’s what I learned from similar data headaches.

Calculating ages for hundreds of records gets messy fast in spreadsheets. What happens when you need different reference dates for different groups? Or when you want to export and merge with other systems?

I used to build complex Google Sheets for HR data. Now I pull birth dates out of Sheets, run them through automated workflows that handle age calculations with any reference dates I need, then push clean results back to Sheets or other systems.

Automation handles edge cases better, processes larger datasets without lag, and lets you modify logic without touching formulas in hundreds of cells.

DATEDIF works great for your current problem. But if you’re doing this regularly, automation saves tons of time.

Just swap NOW() with DATE(2011,9,1) in your formula:

=YEAR(DATE(2011,9,1))-YEAR(B3)-1 + (MONTH(DATE(2011,9,1))>MONTH(B3)) + (MONTH(B3)=MONTH(DATE(2011,9,1)))*(DAY(DATE(2011,9,1))>=DAY(B3))

That’ll work, but I don’t mess with complex formulas like this anymore. I just automate it.

I’ve got workflows that grab data from Google Sheets, handle all the age calculations and date stuff automatically, then dump results wherever I need them. Way cleaner than wrestling with formulas across hundreds of rows.

Bulk date calculations like yours? Automation beats spreadsheet formulas every time. Set it up once and you’re done.

Latenode’s great for this: https://latenode.com

You’re overcomplicating this. Just use DATEDIF - it’s built for age calculations and handles all the weird edge cases automatically. Try: =DATEDIF(B3, DATE(2011, 9, 1), "Y"). This gives you complete years between the birth date in B3 and September 1st, 2011. Way cleaner than what you’ve got now. I’ve used DATEDIF in HR spreadsheets for years - it’s solid and deals with leap years, different month lengths, all that stuff that breaks manual formulas. Use “Y” for years, “M” for months, or “D” for days if you need something different later.

Here’s another way: stick your fixed date in a cell instead of hardcoding it. Put “9/1/2011” in cell A1, then update your formula to reference it:

=YEAR(A1)-YEAR(B3)-1 + (MONTH(A1)>MONTH(B3)) + (MONTH(B3)=MONTH(A1))*(DAY(A1)>=DAY(B3))

You keep the same logic but now it’s flexible. Need to change the date later? Just update A1. I use this method all the time when I’m working with datasets and might need different reference dates. Your formula actually handles those month/day comparisons really well - better than a lot of simpler versions I’ve seen.

the DATEDIF suggestion above is perfect, but if u wanna keep ur current formula, just swap every NOW() with DATE(2011,9,1). ur formula handles the month/day edge cases well. sometimes the simple fix works best - dont overthink it.