It is my understanding that the OP is asking for a non VBA solution to selective recalculation i.e. pause recalculating a whole sheet or range of cells until the results become relevant. While this would be nice a feature I can see why it would be problematic. The coherency of the spreadsheet is as risk, mixing old and new data and possibly triggering endless circular calculations when unpausing. The existing feature of manual calculation (which is known to the OP) is the safest way to offer such a feature. This way all the data contains either old values or everything has new values (no grey areas allowed).
Bar this, the OP has three options:
Tentatively disable cells by inducing an error i.e. delete a named range called selectivecalc (with value true) and change functions like this =if(selectivecalc, original cell function)
Move the "paused" data to another workbook and link back to the original. While this workbook is open changes should be automatic. While it is closed, it should be paused. I think! I am not sure what happens when two workbooks are linked to each other, or when you hit refresh all with only one workbook open.
Try to optimise the calculation of the exisitng functions, taking into account how Excel's automatic recalculation works and when it is triggered. The rest of the post is dedicated to this optimisation.
Some of the comments by @Scott hints to this. Excel builds a dependency tree for each and every cell, and only recalculates a cell if its parent node changed/recalculates. As an example, say A1 = 1, B1 = A1*100 and C1 = LOG(SQRT(SIN(-4)*PI()^3)). While C1 is CPU intensive, it is only dependent on itself and will only ever recalc if edited by the user. B1 is dependent on A1, and will auto calc if A1 changes. Now if C1 = LOG(SQRT(SIN(-4)*PI()^3))*RAND(), it becomes problematic, as C1 will recalc on each and every other cell change, as RAND() is volatile. In such a case it would be wise to rather keep C1 the way it was, and define D1 = C1 * RAND(). CPU intensive C1 will not recalc, but supply its constant value to D1 for volatile recalculation.
Now specific to your case, your IF function is not too slow in itself, contains a text comparison and is dependent only on two other cells (call them IND cells). A change in any of those two cells would trigger a recalc of this local IF with text comparison. The output is TEXT which isn't great, looking forward.
The countif formula I assume is counting the number of TRUE cases of the first IF formulas. It has to do 40 text wildcard comparisons - even if only one of those 40 cells has had their IND cells trigger a local recalc. You can already make this faster by only comparing the first character of this string:
=SUM((LEFT(A11574:AN11574)="!")+0) ...type in cell, press CTRL+SHIFT+ENTER (array formula)
There is probably a few of those COUNTIFs thats being trigger at once by a single cell change. If you can think of a way to reduce that to a binary compare and sum (not text), you will be flying.
Also, "Save as" > "Save as type" > "Excel Binary Workbook *.xlsb" might help, at least in reducing saving and loading times.