用于确定不同薪酬水平的IF THEN公式是什么?产生25到30小时,每小时收益增加$ 1.50

时间:2019-03-26 19:03:19

标签: if-statement excel-formula formula

我有一个薪酬系统,随着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 个答案:

答案 0 :(得分:1)

在不使用嵌套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-选择

类似于斯科特·霍尔茨曼(Scott Holtzman)所使用的方法,请开发一个公式,该公式将得出一个从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小时的时间,我将使用MAX函数将方向限制为0,现在您的公式如下:

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

所以现在您可以运行一个序列:

0, 1, 2, 3, 4, 5

我们现在为6个可能的奖励类别提供了一个连续整数。我们可以使用CHOOSE函数,该函数将返回从第1个开始的列表中的第n个选项。因此,我们需要通过添加一个来移动序列。根据嵌套IF函数的结果得出的选择公式为:

=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基本上根据一维范围(如列或行)的序列号在一个范围内查找单元格的位置。对于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)

请注意,如果所选范围从1D范围的行1 /列A或2D范围的A1开始,则工作表的列/行号将匹配。

在此示例中,所选范围将为水平参考J9:O9。它很容易成为K13:K17中的垂直范围。这些都是一维范围,因此以相同的方式确定范围内的位置。使用选项3中的公式生成位置1至6。这将得出公式:

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

注意:如果您无法以某种方式将范围分成连续整数,则此选项将不起作用。

选项5-索引/匹配

与VLOOKUP / HLOOKUP相比,INDEX / MATCH是此站点上的首选方法,因为它在数据布局方面更加通用。选项4说明了INDEX的工作方式。这就剩下如何使用MATCH了。 MATCH将用于查找B9大约位于的行/列。与其他查找类似,它返回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与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

注意:为了匹配和查找正常工作,查找范围需要按升序排列(从最小到最大)。如果您要进行反向匹配,则需要按降序对它们进行排序。

答案 1 :(得分:0)

考虑此易于管理的公式:

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

enter image description here