Maybe one formulas play which might work here
Implemented in this sample:
http://www.freefilehosting.net/download/3bjd3
Tables_dami.xls
In Sheet2,
In A2:
=IF(OFFSET(Sheet1!$A$1,ROWS($1:1),)="","",
IF(ISNUMBER(MATCH(OFFSET(Sheet1!$A$1,ROWS($1:1),),
{"Metal parts";"Fabric";"Other"},0)),"",ROW()))
Leave A1 empty
In B2:
=IF(ROWS($1:1)>COUNT(A:A),"",
INDEX(Sheet1!A:A,SMALL(A:A,ROWS($1:1))))
Select A2:B2, copy down to cover the max expected extent of source data.
Minimize/hide col A. Col B returns the required results, all neatly bunched at the top.
Bookmarks