Is there a way to have this constantly update?
Yes. This may need some modification to suit your particular sheet but try this as a starting point.
In the VBA code window, double-click on the particular sheet in the Project pane on the left. Then on the right side of the screen choose 'Worksheet' from the left drop-down and 'Change' from the right drop-down. Place the code between the two lines created from the above process. Any time the sheet changes, the code will be run. This will get you the 'constant update', but can sometimes cause nuisance (waiting for it to run when you don't want to etc).
As well, I need to keep the first two rows.
OK, in the code change the relevant line to;
For Row = LastRow To 3 Step -1
So, with both of the above steps completed, the code would look like this:
<font face=Courier New><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> Worksheet_Change(<SPAN style="color:#00007F">ByVal</SPAN> Target <SPAN style="color:#00007F">As</SPAN> Range)
<SPAN style="color:#00007F">Dim</SPAN> LastRow <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>
<SPAN style="color:#00007F">Dim</SPAN> Row <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>
<SPAN style="color:#00007F">Dim</SPAN> Column <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>
Application.ScreenUpdating = <SPAN style="color:#00007F">False</SPAN>
Application.EnableEvents = <SPAN style="color:#00007F">False</SPAN>
<SPAN style="color:#00007F">For</SPAN> Column = 2 <SPAN style="color:#00007F">To</SPAN> 20 <SPAN style="color:#00007F">Step</SPAN> 3
LastRow = Cells(65536, Column).End(xlUp).Row
<SPAN style="color:#00007F">For</SPAN> Row = LastRow <SPAN style="color:#00007F">To</SPAN> 3 <SPAN style="color:#00007F">Step</SPAN> -1
<SPAN style="color:#00007F">If</SPAN> Cells(Row, Column).Value = 0 <SPAN style="color:#00007F">Then</SPAN>
Range(Cells(Row, Column - 1), Cells(Row, Column + 1)).Delete Shift:=xlUp
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
<SPAN style="color:#00007F">Next</SPAN> Row
<SPAN style="color:#00007F">Next</SPAN> Column
Application.ScreenUpdating = <SPAN style="color:#00007F">True</SPAN>
Application.EnableEvents = <SPAN style="color:#00007F">True</SPAN>
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN></FONT>
I'm also thinking that I probably want it to just hide instead of deleting. If a cell goes from 0 to 1, I would need it to display.
This is more of a problem because you can only hide whole rows or whole columns. One option might be to change the font colour to match the background colour or to custom format the cell in some other way so that the three cells appear empty when the middle value is 0. However, the cells themselves will still be visible and your table will just look like it has blanks in where the 0 values occur.
Somebody else on the board might have some other thoughts on how you might approach this.
If you need help with the 'blanking out' of the cells as I have suggested, post back and I (or somebody else) will give it a go.