Проверьте, находится ли значение ячейки между двумя значениями, используя Vlookup - PullRequest
0 голосов
/ 29 апреля 2020

В Excel у меня есть следующая таблица, которая показывает цены в зависимости от объема.

Если вы покупаете до 4 предметов в месяц, цена за единицу составляет 100 долларов, с 5 до 8 - 90 долларов, с 9 до 20 - это 80 долларов, все, что выше 20 - 50 долларов.

A |   B   | C 
----------------
1 |   4   | 100
5 |   8   | 90
9 |   20  | 80
21|  1000 | 50

У меня есть месячные объемы покупок в другой колонке, скажем d:

D
--
3
6
2
4
3
10
7
7
10
2

Мне нужно найти цены за единицу (C значения столбца) на основе этого ряда, попадающего между значениями столбцов A и B. Я знаю, что могу использовать составное выражение if, например =IF(AND(D$1>=A1,B1>=D$1),C1,0) ..., но поскольку моя таблица цен на самом деле намного больше моего примера, этот подход становится запутанным. Как я могу сделать это с Vlookup элегантным способом?

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

Я бы go со следующим в E1:

=INDEX(C$1:C$4,MATCH(D1,A$1:A$4))

, который в худшем случае должен быть таким же быстрым, как VLOOKUP, но в лучшем случае намного быстрее.

0 голосов
/ 30 апреля 2020

Вот подход с использованием SUMIFS:

=SUMIFS($C$1:$C$4,$A$1:$A$4,"<="&E1,$B$1:$B$4,">="&E1)

enter image description here

0 голосов
/ 29 апреля 2020

Это можно сделать, перетащив следующую формулу вниз, чтобы охватить весь столбец D:

=LOOKUP(2,1/($A$2:$A$5<=D2)/($B$2:$B$5>=D2),$C$2:$C$5)

Это будет принимать каждое значение D, сравнивать с A и B, определять, в какое ведро оно попадает, и потяните значение C. Если не найден, вернет N / A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...