If you'll look at the formula in the formula bar when you get the error,
you will see that the zero show in bold below is also shown in bold in
the formula bar.
Excel is trying to tell you where it thinks the problem is (and don't
argue with Excel!)
=(if(iserror(HLOOKUP($B7,mm!$2:$23,22, 0),*0*,HLOOKUP($B7,mm!$2:$23,22,
0))
Specifically, the iserror function takes one argument and you are
missing a parenthesis to close off the iserror() format:
=(if(iserror(HLOOKUP($B7,mm!$2:$23,22,
0)*)*,0,HLOOKUP($B7,mm!$2:$23,22, 0))
But once you make that change, Excel will count parentheses and tell
you that the ones in your formula don't balance, so the final version
will be
=(if(iserror(HLOOKUP($B7,mm!$2:$23,22, 0)),0,HLOOKUP($B7,mm!$2:$23,22,
0))*)*
In cases like this, it's always good to test out the components of the
formula individually - ie, the iserror part, the lookup part in a cell
formula of their own to find what the problem might be.