If you're using a func_door you...let me see if I get this right...set the angle to the opposite of the direction you want it to go (from where it starts, i.e. where you map it) and set a lip value of the distance you want it to travel + the height of the func door.
You could then just use trigger_multiples to make it move, if you place one at the bottom and check it to be "usable" and one at the top that triggers as you walk into it, target them both at a target_relay (with a wait value of the time it takes the door to complete a complete down/up motion) which is then targeted at the func_door...
2xtrigger_multiple--->target_relay(with wait value)--->func_door
That way both triggers can make the door move without causing it to "skip" if both triggers are hit simultaneously. You'd have to run the map once and hit a trigger to time how long the door takes to move down and then back up again....or work it out with the fact that 2*distance_door_moves_down / speed_of_door + wait_delay_on_door = total_time_of_movement
So if the door moves 100 squares down at a speed of 50 and you've told it to wait 3 seconds at the bottom before it comes back up: 2*100/50+3=7 seconds
. It is easy when you think about it