Hmm, personally I'd recommend setting up calculations, rather than direct link to cells.
Ex:
B9 =SUMIF($A$28:$A$123,"Total *",B28:B123)
Copy across
F8 =IFERROR(INDEX($A$28:$A$123,AGGREGATE(15,6,(ROW($28:$123)-27)/($B$28:$B$123="Budget"),ROWS($A$1:A1))),"")
Copy Down.
G8 =IFERROR(INDEX(B$28:B$123,MATCH("Total " &$F8,$A$28:$A$123,0)),"")
Copy down and across.
Etc.
Additionally you can set up each of source ranges/rows as dynamic named range to accommodate for more items being added.
As well, chart series can also be made dynamic.