The problem is that the table calculation looks at the value before it. Note that there is a difference between a 0,null, and the datapoint just never existing. If no data exist what you need to do is pad your data aka put values in your raw data that is either 0 or null for all measures you plan on comparing for all dates. That way when you do the calculation it will give you the 100% you are looking for since it can compare the change from 0 to $2,691.
Your problem is related to the filter .
When you use table calculation you should consider that the table calculation are applied after the filter is applied to your data.
So when you apply Table calculation to check the % difference to previous year but your data not contained any previous year as it is filtered by you.
To get the desired result you should modify your year calculation and make a calculated field which is a table calculation as the filter of a table calculation field is applied after your calculation field is computed.In simple words a table calculation field filter just hide the data not filtered it out and you get your desired result.
Make a calculation field like something: Str(Lookup(Max(year([Statement Month Year])),0))
Please check the spelling of field as i dont have the data .
Hope it will help you.