I need to clarify something in @teylyn 's answer. The array formula should be copy-pasted into B1 in the above example (or the first cell of your desired data location for the output of the formula)... then hit C+S+E, then take that cell and drag it down the desired number of output cells - eg - 4 in the above example. This is a bit confusing above, and Microsoft's own help site doesn't help any users with this because it directs users to highlight output cells for any array formula, then type in your formula to the first cell, then hit C+S+E. I spent awhile trying to figure this out, and it was making my quite angry until I realized my very first step was wrong.
It won't work if you highlight, paste formula, C+S+E. It will only work if you paste, C+S+E, then drag the formula down or across your destination cells.
so something like this will work also:
=IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(A:A),ROW(A:A)),ROW(A1))),"")
or like this if your data is in column D:
=IFERROR(INDEX($D:$D,SMALL(IF(ISNUMBER($D:$D),ROW($D:$D)),ROW(D1))),"")
...but the final "row" reference must remain a relative reference, because as you drag it down your destination cells, it will populate the formula with D2, D3, D4, etc.
So, again, specifically:
- highlight one destination cell
- paste into it =IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(A:A),ROW(A:A)),ROW(A1))),"")
- control+shift+enter
- highlight that cell again
- drag the corner box down the desired number of rows/columns for your output cells
2Why not use autofilter and filter for "does not equal: #N/A"? the excel autofilter does know errors like #N/A, #DIV/0 or #NAME. – nixda – 2013-02-11T18:42:05.857