Using AVERAGEIF() gives you the control that you are in need of; ability to average the cells, coupled with the ability to selectively add cells that meet your criteria.
[b][u]The Function Explained[/u][/b]:
AVERAGEIF( [b]cell_range[/b], [b]criteria[/b], [b]average_cell_range[/b] )
[b][u]cell_range[/u][/b] - Simply put, which cells do you want to measure( INCLUDING the ones with zeros! ))? This includes letters, numbers, etc, etc...
[b][u]criteria[/u][/b] - Here is where you specifically 'ween-out' the values of zero.
[b][u]average_cell_range[/u][/b] - This is the actual set of cells to use. If left out, range is used.
Now for your situation( from the vague information you have provided ), you could simply use the following:
[b]AVERAGEIF( A2:A50, ">0" )[/b]
This would return the average, between cells A2 and A50, that are greater than zero( 1 or more ).
Unless I missed something, that would be the easiest way.