Apologies if the title question is unclear, please feel free to suggest any better wordings of it.
I'd like to know if there is any sort of system in place where I can "freeze" the value in a cell after a certain period of time, when the cell references variables in another cell/sheet that may change. If A1 is supposed to be half of A2, and A2 is 100, then A1 should be 50. Say, for whatever reason, I now desire A1 to remain 50, even if I change A2 to 200. (I.E. after activating this cell "freeze", no matter what I change A2 to, A1 will always stay 50, even though the formula in A1 was once =A2/2.)
A practical example:
To further clarify my question, I can provide a practical example that is similar(ish) to what I am trying to achieve.
Say I have a budgeting spreadsheet that is broken up into months. The sheets are January, February, and so on. The first sheet, however, is a "Master" sheet that contains variables that each of the monthly sheets reference. This master sheet contains things like rent, insurance, the percent of each paycheck I wish to save, etc. The spreadsheets are balanced often such that they reflect my current finances, and I can refer to the spreadsheet when I need to see how I'm doing financially.
So, let's say in January, I log my expenses like so:
I log my beginning balance and my expenses. I write in H2 that I begin January with $5000, and in A2:D that I pay rent, various assorted expenses, and get a paycheck. The sheet sums my total income and expenses, and calculates my ending balance with this information. The sheet also informs me that I should put away $100 into savings. Some of these cells are influenced by the Master sheet:
In January, cell C2 is simply =Master!B3. Furthermore, all of Column E contains cells with the formula =IF($D2="","",$D2*Master!$B$2) (reference D2 changes with each row), where column E is populated with a value if D has a value; if so, then it populates it with the value in D times Master!B2, otherwise, it remains "blank" (The empty character ""). Note that my ending balance in January is $3900.
Then, in February, I do the same:
This time, though, cell H2 is not a value I input, but simply =January!H6, as I expect the ending balance of January to be the beginning balance of February. This now creates a problem: If my rent increases, or if my financial situation changes such that I decide to save more per paycheck, this would retroactively change the values in January, and would no longer truthfully reflect my history:
You can see that increasing my rent to $2200 and increasing my savings amount to 20% correctly changes the values in February, but now incorrectly displays my starting balance from January: As noted above, it should have been $3900, but because January also refers to the Master Sheet, values in January were retroactively changed, thus now incorrectly displaying what I did back then, and rippling into February. Also, not displayed, the January sheet indicates that I saved more than I actually did.
This is a very crude example, and not precisely how my spreadsheet operates, but this toy example should be enough to paint a picture of what I'm trying to achieve. I suppose my question is multifaceted:
Is there a methodology to prevent retroactive changes in cells when the cells they reference change? (As in, the moment a cell has a certain value, lock that value in, or overwrite the formula in the cell to the value literal.)
If not, is there a system in Google Sheets to prevent cells from changing their value? (Similar to the "Protect Sheets and Ranges" functionality, but instead of protecting them from edits, protecting them from changing their value.)
If not, could there be an automated script that, at the end of every month, replaces every cell in that month's sheet with the values in the cell?
Please let me know if I can further clarify anything. Thank you in advance!


