Basically, I have a costing IF statement basically it looks to 6 cells, M4:M9, to see what "cost types" were selected by the user then sums them if they were.

I KNOW that I can make dynamic ranges for many ranges in this formula (especially where I'm using an isnumber(match against and entire Column (ConstrainedReqs!$B:$B); but that's not really going to shorten it very significantly. Further, right now I only have 6 cost types in the formula, truth is that there might be 30 costs types before I'm done; exponentially increasing the length. Can it be written in a better way?

(Before you ask, I've thought about "packaging" costs instead of giving flexibility over each cost type/component, I like the flexibility that selecting each type/component offers)

=IF($M$4="Accident / Hazardous Incident",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$K$2:$K$301))),IF($M$4="Routine Maintenance / Inspections",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$L$2:$L$301))),IF($M$4="Modifications",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$M$2:$M$301))),IF($M$4="Paint and Refurbishment",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$N$2:$N$301))),IF($M$4="Corrosion",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$O$2:$O$301))),IF($M$4="Acquisiton",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$P$2:$P$301))),0))))))+IF($M$5="Accident / Hazardous Incident",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$K$2:$K$301))),IF($M$5="Routine Maintenance / Inspections",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$L$2:$L$301))),IF($M$5="Modifications",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$M$2:$M$301))),IF($M$5="Paint and Refurbishment",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$N$2:$N$301))),IF($M$5="Corrosion",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$O$2:$O$301))),IF($M$5="Acquisiton",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$P$2:$P$301))),0))))))+ IF($M$6="Accident / Hazardous Incident",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$K$2:$K$301))),IF($M$6="Routine Maintenance / Inspections",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(AircraftData!$L$2:$L$301))), IF($M$6="Modifications",SUMPRODUCT((AircraftData!$E$2:$E$301=AnalysisEngine!$B18)*(ISNUMBER(MATCH(AircraftData!$D$2:$D$301,ConstrainedReqs!$B:$B,0))*(Aircra

I KNOW that I can make dynamic ranges for many ranges in this formula (especially where I'm using an isnumber(match against and entire Column (ConstrainedReqs!$B:$B); but that's not really going to shorten it very significantly. Further, right now I only have 6 cost types in the formula, truth is that there might be 30 costs types before I'm done; exponentially increasing the length. Can it be written in a better way?

(Before you ask, I've thought about "packaging" costs instead of giving flexibility over each cost type/component, I like the flexibility that selecting each type/component offers)

=IF($M$4="Accident / Hazardous Incident",SUMPRODUCT((Airc