I started by joining the the sets together then sorting into SKU order, then by the highest demand on each order.
I then used a couple of multi-row formulae, the first to determine if there was a greater supply than required on the fulfilled amount on the previous order and the demand of the current order combined, therefore determining if the max fulfilled amount had been reached, and the second to determine if that meant the current order had been completed or not.
Then it was simply a matter of calculating the remaining amount on each row and removing those that were not fulfilled.