First, there is nothing wrong with using a single-cell reference in the second parameter. I do it "all the time".
So, MATCH(1.4, B18, 0) is just fine syntax-wise.
The reason why that MATCH failed initially, but worked after merely pressing Enter in the Formula Bar, is because 1.4 was text initially. When you pressed Enter, it was changed to numeric, which is the type of 1.4 in the MATCH expression.
Note that I am talking about data type, not cell format. The format of the cell does not matter; and looks can be deceiving. If you want to confirm the __type__ of the data in B18 initially, use a formula of the form =ISTEXT(B18) .
To fix it moving forward, you have two choices:
- Change the expression to MATCH("1.4", B18, 0) .
If the first parameter is actually a cell reference, too, you can write something like MATCH(X1 & "", B18, 0) , or ensure that X1 is also __type__ text.
or
- Change the VBA code so that when it stores 1.4, it is stored as a number, not text.
We probably cannot help you with #2 (except with a lucky guess) unless and until you show us the VBA code -- or enough context for us to understand how 1.4 was stored as text, in the first place.
Wild guess.... Set the cell format to General before you store 1.4 into B18.