@wwest
I'd prefer the set up AhoyNC suggests. He used IFERROR for control. If you need more speed, this slow function can be replaced...
Since it's known where the data is located, define the following names in Formulas | Name Manager...
Projects as referring to Sheet1!$A$2:$A$18;
Numbers as referring to Sheet1!$B$2:$B$18; and very importantly:
Ivec as referring to:
=ROW(Peojects)-ROW(INDEX(Projects,1,1))+1
Sheet2
In A1 of Sheet2 just enter:
=COUNT(Sheet1!B2:B18)
In A2 of Sheet2 just enter: projectno.
In A3 of Sheet2 control+shift+enter, not just enter, and copy down:
=IF(ROWS($A$3:A3)>$A$1,"",INDEX(Projects,SMALL(IF(ISNUMBER(Numbers),Ivec),ROWS($A$3:A2))))
Note 1. Using rather ISNUMBER than anything else is appropriate here for we have to do with numbers and nothing else.
Note 2. The ROWS bit in front is faster than IFERROR.
Note 3. Ivec is a generalizable concept and probably computed just once in the name once, therefore fast.