This formula never worked.
- The duty on a purchase of 126,000 should be 2% of the 1,000 over the 125,000 limit which is 20. Your formula yields 0.
- The duty on a purchase of 251,000 should be 2% of 125,000 (250,000-125,000) + 5% of the remaining 1,000 over 250,000. This is 2,550. Your formula yields 50.
Each percentage applies only to that portion of the price that falls within its limits as described in the second example above. The formula for calculating this portion is
MAX(0,MIN(upper_limit-lower_limit,price-lower_limit))
Therefore, the formula you would like to use is
=SUMPRODUCT(--(B12>{125000;250000;925000;1500000}),
{MAX(0,MIN(250000-125000,B12-125000));
MAX(0,MIN(925000-250000,B12-250000));
MAX(0,MIN(1500000-925000,B12-925000));
MAX(0,B12-1500000)},
{0.02;0.05;0.10;0.12})
Each of the three arguments of SUMPRODUCT contains an array literal. Unfortunately, an array literal cannot contain function references. Thus the second argument results in a syntax error. The next best option appears to a sequence of IF expressions:
=IF(B12>125000,0.02*MIN(250000-125000,B12-125000),0)+
IF(B12>250000,0.05*MIN(925000-250000,B12-250000),0)+
IF(B12>925000,0.10*MIN(1500000-925000,B12-925000),0)+
IF(B12>1500000,0.12*(B12-1500000),0)
If you are willing to use cells to hold the limits and percentages, there are LOOKUP formulas tat are easier on the eyes.