Review code's steps:
- Convert data to Excel Table
- Remove extra spaces
- Conditionally extract the year portion checking if its a Number or not
- 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
- Remove other columns
- Rename remaining column
- 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

Let me know if it works