Subtotal does not take blanks or non-numeric characters into account. Quite logically it does take zeros into account. So maybe you could Edit,Replace your zeros with blanks or (say) a dash?
If you do not want to do this with your source column you could use a helper column with a formula such as
=(if(AND(C5<>"",C5<>0),C5,"")
(As written this should also take any text entries in column C into your helper column though this may not be a requirement.)
Gavin