Power Query: Age from Birthdate on Action date

SOQLee

Board Regular
Joined
Mar 18, 2015
Messages
58
Office Version
  1. 365
Platform
  1. Windows
In Power Query, is it possible to determine the AGE from the BIRTH DATE at a specific ACTION date? I have the the following columns:

[TABLE="width: 500"]
<tbody>[TR]
[TD]Birthdate[/TD]
[TD]ActionDate[/TD]
[/TR]
[TR]
[TD]1980-01-01[/TD]
[TD]2017-01-26[/TD]
[/TR]
[TR]
[TD][/TD]
[TD][/TD]
[/TR]
</tbody>[/TABLE]
 
Last edited:

Excel Facts

Do you hate GETPIVOTDATA?
Prevent GETPIVOTDATA. Select inside a PivotTable. In the Analyze tab of the ribbon, open the dropown next to Options and turn it off
Further to my question. In PowerPivot I use the following DAX formula to create a column. I'm wondering if it can be done in PowerQuery.

=DIVIDE([ActionDate]-[Birthdate],365)
 
Upvote 0
The correct way to calculate the age is to take the difference between the year parts and subtract 1 if the ActionDate is prior to the birthday in that year.

Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Birthdate", type date}, {"ActionDate", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Age", each Date.Year([ActionDate]) - Date.Year([Birthdate]) - 
                            (if Date.Month([ActionDate]) < Date.Month([Birthdate]) then 1 else 
                             if Date.Month([ActionDate]) = Date.Month([Birthdate]) and Date.Day([ActionDate]) < Date.Day([Birthdate]) then 1 else 0))
in
    #"Added Custom"

Remark: if you choose "From table" when creating the query in Excel, then the data types are by default changed to datetime; I adjusted this to date.
 
Last edited:
Upvote 0
Is it possible to adjust this custom column formula below to prevent error value on refresh when there is no value to calculate from in the [Birthdate] column?

=Date.Year([Appl Dt]) - Date.Year([Birthdate]) -
(if Date.Month([Appl Dt]) < Date.Month([Birthdate]) then 1 else
if Date.Month([Appl Dt]) = Date.Month([Birthdate]) and Date.Day([Appl Dt]) < Date.Day([Birthdate]) then 1 else 0)
 
Upvote 0
Code:
#"Added Custom" = Table.AddColumn(#"Changed Type", "Age", each 
                                         if [Birthdate] = null 
                                         then 
                                              null 
                                          else 
                                              Date.Year([Appl Dt]) - Date.Year([Birthdate]) - Number.From(Date.ToText([Birthdate], "MMdd") > Date.ToText([Appl Dt], "MMdd")))
 
Last edited:
Upvote 0

Forum statistics

Threads
1,224,885
Messages
6,181,588
Members
453,055
Latest member
cope7895

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top