I suggest making the second table, the dependent one, out of a PivotTable.
This will grow and shrink with the first sheet every time you refresh the data, which can be set to automatically refresh when you open the file. Here's how:
Use "Insert > Table" to format the first list. Then use "Summarize with PivotTable" or "Insert > PivotTable" (2 names for the same feature) to put your PivotTable on the next sheet.
Put all the columns you want in the second sheet under "Row Labels" on the PivotTable wizard thingy that appears.
Under PivotTable Tools > Design > Layout > Subtotals, choose "Do not show subtotals."
Under PivotTable Tools > Design > Layout > Grand Totals, choose "Off for Rows and Columns."
Under PivotTable Tools > Design > Layout > Report Layout, choose "Show in Tabular Form."
Note that if you don't have something unique at the top of the list in Row Labels, similar to "ID" in my example ( =ROW() ), the PivotTable will do intelligent things with the data that you may not want.
Here's how to get the thing to refresh automatically when the file opens. Alternately, you right-click on the table and choose "refresh".
If you wanted to refresh the PivotTable every time the data changes, put
Sheets("Sheet2").PivotTables(1).PivotCache.Refresh
(substituting "Sheet2" with the name of the sheet where the table appears; activating the data sheet on the left side; select Worksheet on the first pull-down, and select Change on the second pull-down to access the Sub Worksheet_Change code area)
...here:
Cheers!