Table structure for keeping track of multiple similar accounts
A separate table for each account will be difficult to work with.  For example, if you need aggregate values spanning all 30 accounts, you would need to look in all 30 tables.  And if you need aggregate values for only a subset, say 5, of those accounts you would need to look in just 5 tables but then you must specify the names of those 5.  It gets too darn fiddly fast.

You should consolidate those account tables into a single Accounts table which includes a field to identify which account each row is associated with. And when you want to see all the information for any one account, instead of an actual table, you can dynamically create a virtual table with an appropriate SELECT query.

SELECT [field expression list]
FROM Accounts
WHERE acct_num = 32;


Also think about happens when/if you need to modify the table structures.  You really don't want to have to make the same change to 30 tables.  BTW, I'm also uneasy about needing to add a new column each year.  Aim for a design which doesn't require that type of change.  Store information for different years by row rather than by column.  A rule of thumb is "columns are expensive; rows are cheap".  Try to work cheap!  :-)