Lots of things one could have done here. For something a little more "off the wall" but a shorter formula so... one could use:
FILTER() being set up this way to return the desired letter in the first column of the resultant array (said array just used internally). So one would know precisely that the desired letter is "row 2, column 1" no matter what making the
INDEX() function easy to fill in.
"Larger than" or "equal to or larger than" is then handled in the way one is much more used to, to wit, using ">" or ">=" in the condition in
It does address the case of the lookup row being unsorted (as in out of order) because
FILTER() will sort its resultant array without being asked. So no matter the condition of the lookup row, the correct answer is returned.
If one does not have
FILTER() available, one could use the following as the array for
MATCH() to find and feed
INDEX() its value:
Almost completely old-school and one can substitute an
IF(ISERROR(... if one does not have
IFERROR() available. The values are being divided by the 1 or 0 from the ">=" test so the values in the lookup row are produced OR an error is, but in those cases,
MAX() fills in the highest value in the lookup row so it won't interfere with finding the desired value. If needed by circumstances, one could slip a "+1" into the
MAX() result so all the less than's exceed the "natural" entries.
Of course, nowadays
XLOOKUP() would do it very nicely:
Short, simple, clear. No tricks needed.
F Bert was happy. Just posting these for anyone researching who needs an answer not wedded to the problem's sole set of factors.)