I’ve found similar questions, but they’re all at least slightly different from my question, and have been unable to successfully adapt them, so here’s a simplified version of my sheet:

```
A B C D E
1 4 4 17
2 6 10
3 2 12
4 7 19
5 4 23
```

Column A is full of the integers 1-X. Column B is number of occurrences of Column A, and C is the sum of the values to the left and above. D is a random value between 1 and C5. So far so good. The problem comes with E1. I want it to give the value of A that is to the left of the C value that is the closest to D without going over.

Example: D comes up with the value 17. The closest value to 17 without going over is 12 (C3). Therefore, E equals 3. How would I go about achieving this? I can get the closest value using `=INDEX(A$1:A$5,MATCH(MIN(ABS(F1-C$1:C$5)),ABS(F1-C$1:C$5),0))`

, but it comes to 4, instead of 3. How would I get the closest SMALL value? I’m guessing I have to replace ABS with SMALL, but I’m not sure how to go about doing that.

You can use the “vector form” of `LOOKUP`

for this (see help for `LOOKUP`

function). If you lookup `D1`

in `C1:C5`

you’ll get exactly the match you want (the largest value that’s smaller than or equal to `D1`

) and then you can define the return vector as `A1:A5`

to get the corresponding value from there

`=LOOKUP(D1,C$1:C$5,A$1:A$5)`

Note: You’ll get an error for D1 values < 4 because in that case there’s no value “without going over”.

For this to work `C1:C5`

must be sorted ascending, but that will always be the case in this scenario

Edit: I believe this answers your question, as stated, but if you were looking for the 17th occurrence, in order then shouldn’t the result be 4? If that was the case then I think you could still use `LOOKUP`

but column C would have to be set up differently

### Answer：

In E1: `=if(C1<=D$1,A1,"")`

and fill down.

In F1: `=max(E1:E5)`

. This is your desired result.

Tags: excelexcel