|Your example shows a list of numbers sorted in ascending order.|
Will that always be the case?
If so, VLOOKUP with a Range_lookup value of 1 will return an exact match if one exists or the largest value that is less than the lookup_value if an exact match isn't found.
Again, in order for this to work, the list must be sorted in ascending order.
=VLOOKUP(B1, $A$1:$A$6, 1, 1)
Does that help?