VLOOKUP will only return the first instance of a restaurant visit. You can use an array formula with INDEX and SMALL to return the other instances--but it would be much simpler to use a PivotTable as suggested by reb73.
If you don't want to go with a PivotTable, then consider using either a SUMIF or SUMPRODUCT formula like:
=SUMIF(A$2:A$1000,"Restaurant and Dining",C$2:C$1000) item is classified in column A with amount in column C
=SUMPRODUCT(--(A$2:A$1000="Restaurant and Dining"),C$2:C$1000)
The unary operator (looks like a double negative) is not a typo in the SUMPRODUCT formula. It is there to convert the TRUE/FALSE results of the Boolean expression into 1 or 0. If you have two or more Boolean expressions in the SUMPRODUCT, then you would not need the unary operator. Having multiple Boolean expressions is the big advantage of the SUMPRODUCT formula. For example, you could capture Restaurant trips for a given week with:
=SUMPRODUCT((A$2:A$1000="Restaurant and Dining")*(B$2:B$1000>=--"1/26/09")*(B$2:B$1000<(--"1/26/09"+7)),C$2:C$1000)
The unary operator in the last SUMPRODUCT converts the text that looks like a date into a date/time serial number.
Brad