2014-01-03 6 views
0

Какую формулу (без VBA) можно использовать, если я хочу найти значение, которое я не знаю точного значения в пределах диапазона? Так что скажем, я хочу найти значение, самое близкое к «2», начиная с конца диапазона.Соответствие (ближайшее) значение, начиная с конца диапазона

A B 
1 1.45 
2 2.03 
3 3.40 
4 3.01 
5 1.94 
6 0.99 

Ответ будет «5» в этом случае.

Редактировать 1: Я заметил, что мой вопрос требует больше объяснений. Итак, вот оно. Меня интересует не только ближайшее совпадающее значение на конец диапазона, но и тот, который находится на стартует диапазона. Другими словами, я хочу получить как «2», так и «5» из приведенного выше примера. Поскольку в начале диапазона было не сложно получить значение, мне нужна была помощь только в том, чтобы получить тот, который находится в конце диапазона. Но любое предложение получить одно или оба из этих значений оценивается.

Я не могу сортировать данные, потому что данные также используются для других целей.

Edit2: Я думаю, что нашел способ, исправьте меня, если я ошибаюсь. Формула стала немного длинной, поэтому я сломал ее кусочками.

MAX(
    INDEX(A, 
      MATCH(
       SMALL(ABS(B-$C$1),1), 
       ABS(B-$C$1), 
       0 
       ) 
     ) 
    INDEX(A, 
      MATCH(
       SMALL(ABS(B-$C$1),2), 
       ABS(B-$C$1), 
       0 
       ) 
     ) 
    ) 

Функция MAX выложит максимальное значение А, вызвав 2 почти равные функции которых первая будет найти наиболее близкое значение к значению поиска, а второй будет найти второе наиболее близкое значение к значению поиска ,

+0

Как-то вам нужно выполнить (массив). BinarySearch – Odrai

+0

См. Http://stackoverflow.com/help/on-topic. – pnuts

+0

Обратите внимание, что 2.05 и 1.95 одинаково близки к 2 – Bathsheba

ответ

-1

Вы можете использовать ВПР:

ВПР является одним из самых популярных искать функции в Excel. Когда вам нужно извлечь данные из таблицы на основе определенного значения, вы можете использовать Vlookup для этого. .

http://www.spreadsheetsmadeeasy.com/how-use-vlookup-excel/

* Посмотрите на примере «ВПР при поиске чисел»

enter image description here

Давайте посмотрим на некоторые из возвращаемых значений, играя вокруг с формулой ВПР. Я сделаю ВПР на температуре 0,03, используя следующую формулу:

= ВПР (0,03, $ A $ 2: $ B $ 8,2, TRUE)

Результат: "Смехотворно Cold"

этапы способа Excel через эту формулу аналогично последней мы рассмотрели:

Она начинается, глядя на первой колонке таблицы для значения 0,03 или что-то близкое (приблизительно). Начинается с 0.01. Поскольку 0.01 менее 0,03, он переходит к следующему. Затем он выглядит 32. Поскольку 32 больше 0,03, он возвращается к 0,01 как самое близкое совпадение. Теперь он переходит к столбцу 2 и возвращает соответствующее значение рядом с значением 0,01, что является «смехотворно холодным».»

+2

Не боюсь. Для неточных совпадений список должен быть отсортирован. – pnuts

+0

Вот и у вас есть точка ... Я буду искать другое решение. – Odrai

+1

BTW это потому, что LOOKUP и MATCH используют двоичный поиск, который для неточных совпадений список должен быть отсортирован (для значимых результатов). PS -1 был не мной, хотя я согласен с этим! – pnuts

3

[Этот ответ подразумевает, что данные в столбце А, монотонно возрастает]

Поместите свой номер теста (в вашем случае, 2) в $ C $ 1. (Я предполагал ввод таблица выровнена в A1: B6)

Затем в другой ячейке, написать:

=MAX(IF(ABS(ABS(B1:B6-$C$1)-MIN(ABS(B1:B6-$C$1)) < 0.00000000000001), A1:A6, 0)) 

Это массив формула; вам нужно нажать Ctrl + Shift + Return после редактирования.

(Он использует трюк с IF заявления распространяется на массивы, испуская только минимальное значение (я) и MAX выбирает больший индекс в соответствии с вопросом спецификации. Небольшое число есть как обходной путь к неточностям в в Excel тип с плавающей точкой.)

Формула массива в Excel: чрезвычайно мощный.

+0

Большое спасибо за это предложение. он отлично работает с примером, который я вам дал, но я заметил, что мой пример был испорчен. Как вы указали, 2.05 и 1.95 одинаково близки к 2. В случае, если я меняю 1,95 на 1,94, формула внезапно возвращает 2, чего я не хочу. Я хотел бы получить значение, самое близкое к запрашиваемому значению, на обоих концах восхождения и спуска. – Jos

+0

Вступление против 2 теперь 2.03, так что я верен. – Bathsheba

+0

Ваша формула находит значение 2.03, так как оно ближе всего к поисковому значению. Я ищу значение, самое близкое к значению поиска с другой стороны кривой. Я обновил свой вопрос, где обсужу решение, которое работает до сих пор. Как вы думаете? – Jos

0

Я думаю, что нашел способ, исправьте меня, если я ошибаюсь. Формула стала немного длинной, поэтому я сломал ее кусочками.

MAX(
    INDEX(A, 
      MATCH(
       SMALL(ABS(B-$C$1),1), 
       ABS(B-$C$1), 
       0 
       ) 
     ) 
    INDEX(A, 
      MATCH(
       SMALL(ABS(B-$C$1),2), 
       ABS(B-$C$1), 
       0 
       ) 
     ) 
    ) 

Функция MAX выложит максимальное значение А, вызвав 2 почти равные функции которых первая будет найти наиболее близкое значение к значению поиска, а второй будет найти второе наиболее близкое значение к значению поиска ,

Смежные вопросы