Array formula in D4:

=INDEX(\$A\$1:\$A\$7, SMALL(IF(EXACT(\$A\$1:\$A\$7, \$E\$1), ROW(\$A\$1:\$A\$7), ""), ROW(A1))) + CTRL + SHIFT + ENTER.

Copy cell D4 and paste it down as far as needed.

Array formula in E4:

=INDEX(\$B\$1:\$B\$7, SMALL(IF(EXACT(\$A\$1:\$A\$7, \$E\$1), ROW(\$A\$1:\$A\$7), ""), ROW(A1))) + CTRL + SHIFT + ENTER. Copy cell E4 and paste it down as far as needed.

Case sensitive vlookup and returning multiple values.xls
(Excel 97-2003 Workbook *.xls)

EXACT(text1, text2)
Checks whether two text strings are exactly the same and returns TRUE or FALSE. EXACT is case sensitive.

IF(logical_test;[value_if:true];[value_if_false])
Checks whether a condition is met, and returns one value if TRUE, and another value if FALSE

SMALL(array,k) returns the k-th smallest row number in this data set.

INDEX(array,row_num,[column_num])
Returns a value or reference of the cell at the intersection of a particular row and column, in a given range

MIN(number1,[number2])
Returns the smallest number in a set of values. Ignores logical values and text

ROW(reference) returns the rownumber of a reference