|re: Can it be 'faked out' as far as the MONTH goes?|
Just change the date on your system to any month you like then force a calculation in the worksheet so that the TODAY() function updates. Once you are confident it works, change the system date back to the current month.
Another option is to put a date in a cell, e.g. A5. Then (for testing purposes only) replace MONTH(TODAY()) with MONTH(A5). As you change the date in A5, the formula will evaluate to use the column associated with the month of that date.
re: they start in column B
One of the fun things about Excel is the ability to combine functions and operations to get it to do the things we want. Using functions to determine arguments for other functions is very powerful.
Follow this logic:
ADDRESS(2, 2) evaluates to Row 2, Column 2, or $B$2
ADDRESS(2, 2+1) evaluates to Row 2, Column 3, or $B$3
ADDRESS(2,MONTH(TODAY())) evaluates to Row 2, Column 2, or $B$2 in February
ADDRESS(2,MONTH(TODAY())+1) evaluates to Row 2, Column 3, or $C$3 in February.
In other words, by letting Today's date determine part of the address, you can perform an operation on that result to adjust for whatever Column (or Row) you want the formula to refer to.
So if your table starts in B1, instead of A1, let's shift everything by one column:
=SUM(INDIRECT("B2:" &ADDRESS(2,MONTH(TODAY()) + 1))) - SUM(B3:M3)
That said, I don't see how the CHOSE function (as written) works if the table starts in Column B. Since it is choosing the Column letter based on the Month, wouldn't it be off by one Column also?
Don't we have to drop the "A" choice since you have any data in Column A?
"F","G","H","I","J","K","L","M")&"2")) - SUM(B3:M3)