OFFSET could be the main culprit. OFFSET is a volatile function, which means EVERY formula calling it recalculates whenever ANYTHING triggers recalculation. For example, if cell B2 contained the formula =A2+1, Excel would only recalculate the B2 formula when the value in cell A2 changed; however, if C2 contained the formula =OFFSET(B2,0,-1)+1, Excel would recalculate the C2 formula whenever any cell's value changed, not just cell A2's. If OFFSET calls are arguments in XLOOKUP or SUMIFS calls, that's certainly slowing down recalculation.
In general, OFFSET(a!b,c,d,e,f) can be rewritten using 2 nonvolatile INDEX calls as INDEX(a!$1:$1048576,CELL("row",a!b)+c,CELL("col",a!b)+d):INDEX(a!$1:$1048576,CELL("row",a!b)+c+e-SIGN(e),CELL("col",a!b)+d+f-SIGN(f)). This could be improved by replacing entire worksheet references $1:$1048576 with smaller ranges which would include all the cells you'd want to reference. For example, if OFFSET's 2nd through 5th arguments would only ever reference columns D to Z and rows 5 to 1004, use a!$D$5:$Z$1004. Excel will recalculate formulas with INDEX(..):INDEX(..) calls whenever any cell in either INDEX call's 1st argument changes, but that's an improvement over recalculation when cells in OTHER WORKSHEETS change.
Next, if you're using A LOT of XLOOKUP calls, sort your ranges so you could use binary search. Even if you want EXACT matches, if you're using Office 365, you could use LET, as in
Bookmarks