"Assuming there's only going to be one value returned"
And you've now added something that you omitted originally "I want to return values that do not match exactly, but they are within a tolerance of the reference value."
So this wont work for your problem.
"You put My lookup value as 1!"
This is an array formula as specified earlier.
If A1*95%<=B1:B20 and A1*105%>=B1:B20 then a TRUE(1) is returned
This is then MATCHed against the lookup value of 1 (which I why it has to be 1). This results in a 1 in the array against the row number.
An INDEX is then performed in column C to return a value on that row.
In a blank sheet put 100 in A1
in B1:B4 put the numbers 94, 95, 106, 107
in C1:C4 put the letters a, b, c, d
The only number that is within +-5% of A1 is 95 which is in row B2 so we want 2 returned, we can then INDEX() that on column C to return the value b.
If you put the formula
=MATCH(1,(A1*95%<=B1:B20)*(A1*105%>=B1:B20),0) as an array formula
in a blank cell
it returns 2 - the correct row number.
So you just need to INDEX () column C with that formula get the b
The formula works perfectly but is based on returning only one value
You never specified in your original formula that you wanted to return more than one value.
You added that later.
The formula will only work for one value being returned.
So you cannot use this formula due to the additional information you provided after.