This is somewhat of a known issue. Not sure why it hasn’t been addressed, but I often advise users to avoid using BLANK() all together. By just referencing the field name, Airtable inherently evaluates whether or not there is a value in the field.
For example, writing something like…
IF({Acres}, "Acres Exist")
Is the same thing as…
IF({Acres} != BLANK(), "Acres Exist")
Additionally, to force Airtable to recognize a value of “0.0” as NOT blank, you can use ARRAYJOIN() to evaluate the 0 as a text value.
I would rewrite the formula to something like this:
IF(ARRAYJOIN({Acres}),
IF(Acres >= 20.1, "Large",
IF(Acres >= 5.1, "Medium",
IF(Acres >= 0.1, "Small",
IF(Acres >= 0.0, "Landless")))),
"Unknown")
This is a really neat trick. Thank you for pointing this out.
I found this problem intriguing and my mind kept coming back to it. I realize that this point was why my previous formula failed. (Even though I totally know that numbers with 0 evaluate to false, and I still got tripped up. I should have tested the formula before posting it, but sometimes I’m posting away from a computer.)
I’m glad that the original poster got a formula that works for him.
I’m posting this alternate version here so that if I revisit this thread, I can see where my thoughts led me. This formula uses the same trick of turning the number into a string, but uses concatenation instead of ARRAYJOIN.
IF(Acres >= 20.1, "Large",
IF(Acres >= 5.1, "Medium",
IF(Acres >= 0.1, "Small",
IF({Acres} & "", "Landless",
"Unknown"
) ) ) )