let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
totalscol.Remove = Table.RemoveColumns(Source,{"Totals"}),
headings = Table.ColumnNames(totalscol.Remove),
dateheadings = List.LastN(headings, List.Count(headings)-3),
absent.ToNull = Table.ReplaceValue(totalscol.Remove,"Absent",null,Replacer.ReplaceValue, dateheadings),
space.ToNull = Table.ReplaceValue(absent.ToNull," ",null,Replacer.ReplaceValue, dateheadings),
data.Cleansed = space.ToNull,
hoursindex.Add = Table.AddIndexColumn(data.Cleansed, "Index", 0, 1),
hoursrows.Keep = Table.SelectRows(hoursindex.Add, each Number.IsEven([Index])),
hours.Unpivot = Table.UnpivotOtherColumns(hoursrows.Keep, {"Pay Code", "Emp ID", "Name", "Index"}, "Date", "Hours"),
hours.Finalised = Table.AddIndexColumn(Table.RemoveColumns(hours.Unpivot, "Index"), "Index", 0, 1),
totals = data.Cleansed,
personal.Filldown = Table.FillDown(totals,{"Name", "Emp ID", "Pay Code"}),
totalsindex.Add = Table.AddIndexColumn(personal.Filldown, "Index", 0, 1),
totalsrows.Keep = Table.SelectRows(totalsindex.Add, each Number.IsOdd([Index])),
totals.Unpivot = Table.UnpivotOtherColumns(totalsrows.Keep, {"Name", "Emp ID", "Pay Code", "Index"}, "Date", "Total Hours"),
totals.Finalised = Table.AddIndexColumn(Table.RemoveColumns(totals.Unpivot, "Index"), "Index", 0, 1),
hourstotals.Merge = Table.NestedJoin(hours.Finalised, {"Index"}, totals.Finalised, {"Index"}, "totals.Finalised", JoinKind.LeftOuter),
totalhours.Extract = Table.ExpandTableColumn(hourstotals.Merge, "totals.Finalised", {"Total Hours"}, {"Total Hours"}),
report.Finalise = Table.RemoveColumns(totalhours.Extract,{"Index"})
in
report.Finalise