You're on the right track. The problem is solved by a modified coin-change algorithm: rather than demanding an exact solution, you find the one that attains the highest total without exceeding the target amount. Of course, if you find a solution whose shortfall is less than any remaining set element, you stop and report that solution.
When you find a solution, remove the "used" weights and iterate until you have allocated them all. The number of iterations is the quantity of elevators you need.
If you sort the elements in descending order, this gives you a "greedy" beginning with backtracking. I suspect that this is reasonably close to optimal for many cases, especially if you memoize the results so that you don't repeat mistakes on the next iteration.
You might try some pathological cases, such as a limit of 100, and extreme weights like
[93, 91, ..., 5, 4, 4]
The "greedy" algorithm goes for 93+5 first, but later settles for 91+4+4 (closer solution). This is where the memoization comes in handy.
Does that move you toward a solution?