Что такое формула IF THEN для определения различных уровней оплаты. Производить от 25 до 30 часов, получать $ 1,50 в час - PullRequest
0 голосов
/ 26 марта 2019

У меня есть система оплаты, которая увеличивает производство бонусов, поскольку технический специалист ASE производит больше часов.Я хотел бы иметь одну формулу, в которой я могу ввести один номер для ввода данных, но у меня будет 5 различных уровней повышения заработной платы.Моя таблица настроена следующим образом.Однако созданная мной формула неверна:

if(b9>=45,b9*o9,if(b9>=40,b9*n9,if(b9>=35,b9*m9,if(b9>=30,b9*l9,if(b9>=25,b9*k9)))))

Результатов пока нет.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Существует несколько вариантов достижения этой цели без использования вложенных функций IF. Решения, которые я представляю, с предположением, что отрицательных часов не существует. Я предложил 6 разных вариантов, основанных на разных способах просмотра отработанных часов за столом и возврата соответствующего бонуса.

Вариант 1 - VLOOKUP

Создайте свою таблицу бонусов с часами, в которых бонус включается в левом столбце, и какова ставка бонуса во втором столбце. В приведенном ниже примере он был помещен в K13: L17. VLOOKUP принимает форму:

VLOOKUP(Value to look for, table/range to look in, column to pull the result from, match type) 

Таким образом, исходя из вашей формулы, вы хотите найти значение B9. Исходя из таблицы в K13: L17, формула будет выглядеть так:

=VLOOKUP(B9,$K$13:$L$17,2,1)

При тестировании со значениями больше 45 он будет возвращать значение в ячейке L17. Если у вас меньше 25 часов, он выдаст ошибку, так как не может найти минимальное значение в таблице. Есть несколько способов справиться с этим.

Для этих опций я буду использовать функцию IFERROR. IFERROR вернет результат функции в нем, если нет ошибки, но предоставит альтернативный результат, если есть ошибка. Поскольку нет бонуса менее чем за 25 часов, альтернативный результат будет равен 1, поэтому при умножении часов на 1 изменений не будет. Формула тогда становится:

=B9*IFERROR(VLOOKUP(B9,$K$13:$L$17,2,1),1)

Вариант 2 - HLOOKUP

Этот параметр в основном аналогичен варианту 1, за исключением того, что справочная таблица горизонтальная, а не вертикальная. Он ищет ту же информацию в том же порядке. вместо столбца для просмотра будет отображаться строка.

Для этого варианта я выбрал альтернативный способ работы с часами меньше 25. Обратите внимание, что в приведенном ниже примере горизонтальной таблицы указан J8: O9. Стоит отметить, что эта таблица начинается с 0 часов. Это означает, что при выполнении HLOOKUP все часы меньше 25 и больше или равные 0 приведут к возвращению ячейки J9 со значением 1. То же задание, что и для IFERROR. Большой разницей является то, что IFERROR может обрабатывать отрицательные часы (что не должно происходить), а 0 при поиске - нет. Этот метод также может быть использован для VLOOKUP.

ПРИМЕЧАНИЕ. Любой из этих методов можно использовать для часов менее 25 часов.

Вариант 3 - ВЫБРАТЬ

По аналогии с методологией, использованной Скоттом Хольцманом, разработайте формулу, которая будет определять целое число от 1 до 6, чтобы охватить все возможные бонусные результаты (6, потому что ни один бонус не является результатом, не покрывающим ваш первоначальный вопрос).

Все ваши точки останова для бонусов кратны 5. Если вы разделите все точки останова на 5, вы получите последовательность:

5, 6, 7, 8, 9

Это хорошая отправная точка, однако вы хотите уменьшить последовательность до 1-5. Это довольно простой сдвиг, достигаемый путем вычитания 4. Итак, у нас есть строительные блоки формулы. Дело в том, что нам нужно применить это к значению в B9, которое может быть не очень хорошим числом, делимым равномерно на 5. Вы захотите иметь дело только с целым числом. Имея это в виду, формула будет выглядеть так:

=INT(B9/5)-4

or

ROUNDOWN(B9/5,0)-4

Я предпочитаю меньшее количество символов (не знаю об этом по длине этого ответа), поэтому я остановился на версии INT. Теперь, чтобы иметь дело со временем в B9, большим или равным 50, вы хотите ограничить свой результат не более чем 5. Это может быть достигнуто с помощью функции MIN, и ваша формула будет иметь вид:

=MIN(5,INT(B9/5)-4)

И чтобы справиться со временем менее 25 часов, я ограничу в другом направлении значение 0, используя функцию MAX, и ваша формула теперь выглядит следующим образом:

=MAX(0,MIN(5,INT(B9/5)-4))

Итак, теперь у вас есть последовательность, которая выполняется:

0, 1, 2, 3, 4, 5

Теперь у нас есть последовательное целое число для 6 возможных категорий бонусов. Мы можем использовать функцию CHOOSE, которая будет возвращать n-ную опцию - список, начинающийся с 1. Поэтому нам нужно сместить ряд, добавив один. Результирующая формула выбора, основанная на результатах вашей вложенной функции ЕСЛИ, будет:

=B9*CHOOSE(MAX(0,MIN(5,INT(B9/5-4)))+1,1,$K$9,$L$9,$M$9,$N$9,$O$9)

Примечание: эта опция не будет работать, если вы не можете каким-то образом разбить диапазоны на последовательные целые числа.

Опция 4 - INDEX

Функция INDEX интересна тем, что фактически возвращает адрес ячейки вместозначение из ячейки напрямую.Кроме того, это означает, что вы можете указать диапазон, выполнив что-то вроде INDEX(...):INDEX(...).INDEX в основном ищет положение ячейки в диапазоне на основе порядкового номера для одномерного диапазона, такого как столбец или строка.Для 2D-диапазона INDEX будет искать адрес ячейки на основе позиции строки и столбца в диапазоне.Для 2D-диапазона, если вы укажете 0 для столбца или строки, будет возвращен весь столбец / строка.ИНДЕКС принимает следующую форму:

1D range
INDEX(Range to look in, Row/Col within the range)

2D range
INDEX(Range to look in, Row within the range, column within the range)

Обратите внимание, что если выбранный диапазон начинается со строки 1 / столбца A для диапазона 1 D или A1 для диапазона 2D, то номер столбца / строки таблицы будет совпадать.

Для этого примера выбранным диапазоном будет горизонтальное задание J9: O9.С таким же успехом это мог быть и вертикальный диапазон в K13: K17.Оба диапазона являются одномерными, поэтому положение в диапазоне определяется одинаково.Используйте формулу из опции 3 для генерации позиций с 1 по 6. Это приводит к формуле:

=B9*INDEX($J$9:$O$9,MAX(0,MIN(5,INT(B9/5)-4))+1)

Примечание: эта опция не будет работать, если вы не можете каким-то образом разбить диапазоны на последовательные целые числа.

Вариант 5 - INDEX / MATCH

INDEX / MATCH является предпочтительным методом на этом сайте по сравнению с VLOOKUP / HLOOKUP, поскольку он более универсален с точки зрения размещения данных.Вариант 4 объясняет, как работает INDEX.Это просто оставляет, как использовать MATCH.MATCH будет использоваться для поиска строки / столбца, где B9 находится приблизительно.Подобно другим поискам, он возвращает последнюю строку / столбец, который B9 был равен или больше, чем.MATCH принимает форму:

MATCH(value to look for, where to look, match type)

В нашем случае мы встроим MATCH в функцию INDEX и получим:

=B9*INDEX($J$9:$O$9,MATCH(B9,$J$8:$O$8,1))

Опция 6 - LOOKUP

LOOKUP isаналогично VLOOKUP / HLOOKUP, за исключением того, что диапазон поиска и диапазон результатов не обязательно должны быть смежными.Делает это больше похоже на комбинацию INDEX / MATCH.Я также отметил, что, хотя ожидаемые входные данные похожи на VLOOKUP / HLOOKUP, на самом деле нет опции для типа поиска.LOOKUP принимает форму:

LOOKUP(what to look for, range to look in, range to return result from)

Исходя из этого и снова используя горизонтальную таблицу J8: O9, формула принимает вид:

=B9*LOOKUP(B9,$J$8:$O$8,$J$9:$O$9)

POC

ПРИМЕЧАНИЕ. Для соответствия и поиска для правильной работы диапазон поиска должен быть отсортирован в порядке возрастания (от наименьшего к наибольшему).Если вы делаете обратное совпадение, то их нужно отсортировать в порядке убывания.

0 голосов
/ 27 марта 2019

Рассмотрим эту формулу проще в управлении:

=B9*OFFSET(K9,0,MIN(4,ROUNDDOWN((B9-25)/5,0)))

enter image description here

...