You'd make a macro which can call several sub-functions that are meant to find what you're looking for. Since your values are hard-coded you need to tell those functions how to discover what you're looking for - via cell formats (bold, background-color, etc.) or perhaps by a constant textual identifier such as "Table Header 1".
Main Macro calls:
FindSumRow()
ChangeToFormulae()
FindNextTable()
"FindNextTable" could perhaps accept a range as an argument; based on how your tables are laid out you can move the range 'forward' after every time the function is called...so that next time the function is run it won't find the same table again. Think of it like this:
Each table starting from column B is 5 columns deep. Each table is separated by 1 column - so column A is empty, column B - F is a table, column G is empty, columns H - L is another table etc.
So, the 1st time the function is run, set the range to be within column B (the 1st cell of the 1st table). The function should then set the range to be 6 columns to the right (i.e., the 1st column of the 2nd table). Your main macro continues forward.
This is an example of what I mean - whether or not it directly corresponds to your table layout is not the point.