Clean up dates using POWER QUERY?

Viewed 225

I have a column that has no data validation to give people more freedom of input, so it's quite messy, i want to make it more neat.

Original

Target Date
Q2 2021
Jan 2022
Dec 2023
06-2017
Q3-2018
Q3 - 2019
*7 Jan

Is there any way to clean it up to the best you could to become like this using Power Query (or other functions in Excel if needed)?

Target Date
Jun 2021
Jan 2022
Dec 2023
Jun 2017
Sep 2018
Sep 2019
*7 Jan 2021

*i know this is difficult xd

1 Answers

Review code's steps:

  1. Convert data to Excel Table
  2. Remove extra spaces
  3. Conditionally extract the year portion checking if its a Number or not
  4. Extract the quarter portion If you can build a date from year and quarter portions, then do it, otherwise analize the Target Date column and see if it returns a date
  5. Remove other columns
  6. Rename remaining column
  7. Add formatted date column

M Code:

let
    Origen = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    TrimText = Table.TransformColumns(Origen,{{"Target Date", Text.Trim, type text}}),
    ExtractConditionalYear = Table.AddColumn(TrimText, "Year", each try Number.From(Text.End([Target Date], 4)) otherwise Date.Year(DateTime.LocalNow()), Int64.Type),
    ExtractQuarter = Table.AddColumn(ExtractConditionalYear, "Quarter", each Number.From(Text.Middle(Text.AfterDelimiter([Target Date], "Q"),0,1)), Int64.Type),
    CalcDateFromQuarterOrAnalize = Table.AddColumn(ExtractQuarter, "Date", each try Date.AddDays(Date.AddQuarters(#date([Year], 1, 1), [Quarter]), -1) otherwise Date.From(DateTimeZone.From([Target Date])), type date),
    RemoveOtherCols = Table.SelectColumns(CalcDateFromQuarterOrAnalize,{"Date"}),
    RenameCol = Table.RenameColumns(RemoveOtherCols,{{"Date", "Target Date"}}),
    AddFormatDateCol = Table.AddColumn(RenameCol, "Format Target Date", each Date.ToText([Target Date], "MMM yyyy", "en-US"), type text)
in
    AddFormatDateCol

Result

enter image description here

Let me know if it works

Related