For the dates and consistency it would be simplest to use a formula, eg:
For the column references - yes you would remove the $ preceding the reference to G however you would also want to adjust such that the col_index_num incremented also... so:
F3:
=IF(COUNTIF(Sheet2!$A$1:$A$30,$A3)=0,"",VLOOKUP($A3,Sheet2!$A$1:G$30,COLUMNS(Sheet2!$A$1:G$1),FALSE))
copied down
though you could just as easily use an INDEX/MATCH construct
However, what I would suggest [based on the example file] is that given you're returning numerics a SUMIF would be far more straightforward:
F3:
=SUMIF(Sheet2!$A$1:$A$30,$A3,Sheet2!G$1:G$30)
copied down
note in all of the above the hardwired reference to "cat", "dog" etc is replaced by a simple relative cell reference such that you can apply the same formula to all rows without need for modification.
Bookmarks