Chasing 161 for victory against the team they beat in the final of the 2012 tournament, West Indies were 80 for four in 13.5 overs when the players were forced off by a hailstorm and a wet outfield prevented any further action in the semi-final.
Sri Lanka now face the winners of Friday's game between India and South Africa in Sunday's final.
Earlier, cameos from Lahiru Thirimanne (44), Angelo Mathews (40) and Tillakaratne Dilshan (39) led Sri Lanka to 160 for six at the Sher-e-Bangla National Stadium.
After opting to bat first, Lasith Malinga's team cruised to 40 for nought inside four overs before Kusal Perera (26) dragged a Krishmar Santokie delivery on to his stumps to trigger a collapse to 49 for three.
Dilshan then added 42 with Thirimanne to steady the innings before the opener was run out.
Thirimanne fell in the 17th over after a 35-ball knock that included two sixes and three fours before Mathews scored some brisk runs to take Sri Lanka past the 150-mark.
Leading the side in place of regular Twenty20 skipper Dinesh Chandimal, fast bowler Malinga removed the dangerous Chris Gayle for three with the first ball of his second over and fellow opener Dwayne Smith for 17 with the fifth delivery.
West Indies also lost Lendl Simmons for four before Dwayne Bravo (30) shared a 43-run stand for the fourth wicket with Marlon Samuels (18 not out).
Paceman Nuwan Kulasekara dismissed Bravo in the 14th over and then the weather intervened.