Pretty simple really. I have done a ton of elevators. If you are in hl2 then it's a snap. Just use a brush-based func_movelinear and set the distance. Instead of using the open/close commands use the setposition from your trigger. Set the override with the "floor number". Position 0 is your start and then 1,2,3,etc. All it's doing is taking the distance times your number input and setting the movelinear at that distance. You can manipulate this many many ways with the logic_relays and triggers. Just remember the math.
So.... Brush-based func_movelinear
Set distance and speed
Distance=Height between floors
Parameter Override=Floor Number or Multiplier
This is a great elevator set-up but doesn't allow you to use the on-fully open or on-fully closed commands which are useful for things like opening the doors when it stops. I use a trigger with the func_movelinear on each floor to open the doors. Others might have other opinions or a better solution for you on this. Elevators are fun!