For what it's worth:
In the attached, the blue table is the source data with the following constraints:
It must be a table proper, called (as it is) Table1
There should be headers named exactly Proj, Budget Category and Desc
The 3rd and 4th columns can be any name (or not named) because they'll be ignored by dint of their position.
All other column headers will be taken as years (if those columns have no header or can't be converted to a year, you'll just get blanks in the Date Start/End columns. Freedoms:
The table can be wherever you want on the sheet, even on another sheet.
Any number of year columns.
Anything in the Budgetary Category; new columns will be created/removed in the result table as necessary to accommodate the range of categories.
The columns can be in any order you want except for the 3rd and 4th (junk) columns which will be ignored, regardless of what they're called.
Any empty/blank/missing values in the Budget Category column will appear as a (blank) headed column.
All you have to do is right-click the green table (which can also be moved anywhere within the workbook) and choose Refresh.
Courtesy of Power Query (aka Get & Transform Data). No macros.
p45cal Everyone: If I've helped and you can't be bothered to acknowledge it, I can't be bothered to look at further posts from you.