The reason this happens is because of your IF statement in P. If there is no data, the formula returns "". While it may look like a blank cell, Excel doesn't treat it the same and any formula that uses it as an operator will result in an error when it is blank.
There are a few ways to get around this. The easiest is to modify your equation as I mentioned above:
=iferror(((round(m28,0)-round(o28,0))*p28),"")
|