I had a similar problem to you with things taking to long. First off I had 2520 Sumproduct formulas that were referencing whole columns. I nearly died of old age waiting for them to calculate every time I did something. I changed all of them to Countifs & while still referencing whole columns, improved things a lot, but still not fast enough for me. I put the formula below in a spare cell ie. Z1, to find the last used row.
Then used Indirect to reference to the resulting number in that cell. This restricted the Countifs arrays to the used range on the worksheet & stopped 2520 formulas from referencing a million rows with each formula array reference.
Something like the below maybe
I did try VBA as well & for that to have a chance of being comparable to using worksheet formulas in speed, will have to be Array VBA. I used 3 simultaneous arrays to get what I wanted & found that the formulas were just that little bit quicker
Hope thats of some help
Bookmarks