Many thanks for this solution, makes sense. One question:
I would prefer the Shipping table was simply split into 9 zones (creating 9 rows of base rates, increments etc) rather than having to add 250 countries' base rates and increments.
I've added the zone values to my countries list. When I add the filter to the lookup recordset will the "shippingRateCountry equal the Form Variable 'shipping_country' work or is there something to add?