Если утверждения с диапазонами - PullRequest
0 голосов
/ 12 января 2019

Мне нужно рассчитать некоторые взвешенные проценты по следующим критериям:

If X=70% then I multiply 80% of 30%
If X=75% then I multiply 100% of 30%
If X=80% then I add 10% to the 30%
Anything beyond 80% is at most 40%.

Как рассчитать, каким будет этот процент, если, например, X = 73%? Ожидается, что будет более 80%.

1. If X<70%
2. If 70%<=X<75%
3. If 75%<=X<80%

if X = 69% it will be less than 24% (less than 80% of 30%) 
if X = 73%, the percentage will be between 24%-30% (between 80% and 100% of 30%), how can I determine how this is scaled? 
if X = 81%, then it will be at most 40%

1 Ответ

0 голосов
/ 12 января 2019

Я рекомендую избегать выражения IF и заменять его на INDEX / MATCH из-за его большей гибкости. По сути, у вас есть два множителя. Один варьируется между 30% и 40%, другой между 80% и 100% результата первого. Используйте функцию MATCH для определения скобки, например, =MATCH($A$1*100,{0,65,70,72.5,75,77.5,80,82.5,85},1). Здесь ваш пример 73% находится в A1. Числа между фигурными скобками допускают 9 категорий: менее 65%, 65% до менее 70%, от 70% до менее 72,5% ... и 85% и более. В скобках может быть сколько угодно, используя любые числа, которые соответствуют вашим потребностям. Просто убедитесь, что они в порядке возрастания. Затем создайте индекс, например, =INDEX({30,30,31,32,33,35,38,40,42},5). Ключевым моментом здесь является то, что в индексе должно быть столько элементов, сколько скобок в функции MATCH. Мой пример INDEX вернет 33, потому что указан 5-й элемент индекса. В приведенной ниже формуле 5 заменяется функцией MATCH.

=INDEX({30,30,31,32,33,35,38,40,42},MATCH($A$1*100,{0,65,70,72.5,75,77.5,80,82.5,85},1))

Эта функция вернет 32 (%), если A1 = 72%. Отрегулируйте массивы Index и / или Match, чтобы получить нужный результат. Разделите результат на 100, чтобы преобразовать результат в проценты. Учитывая гибкость предлагаемого метода, я думаю, вам не нужно прибегать к двойным умножениям. Однако, если ваша система требует этого, просто создайте второй множитель так же, как первый. =INDEX({75,80,85,90,95,100},MATCH($A$1*100,{0,65,70,75,80,85},1)) Затем умножьте оба друг на друга.

=INDEX({75,80,85,90,95,100},MATCH($A$1*100,{0,65,70,75,80,85},1))*INDEX({30,30,31,32,33,35,38,40,42},MATCH($A$1*100,{0,65,70,72.5,75,77.5,80,82.5,85},1))/10^2

Обратите внимание на деление на 100 в конце, которое преобразует результат (здесь, на основе A1 = 73%) из 32 * 85 = 2720 в 27,2. Измените делитель на 10 ^ 4, чтобы получить 27,2%

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