If statement 确定不同薪酬水平的IF-THEN公式是什么。生产25至30小时,每小时增加1.50美元

If statement 确定不同薪酬水平的IF-THEN公式是什么。生产25至30小时,每小时增加1.50美元,if-statement,excel-formula,formula,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))))) 到目前为止还没有结果。考虑一下这个更容易管理的公式: =B9*OFFSET(K9,0,MIN(4,RO

我有一个薪酬体系,随着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)))))

到目前为止还没有结果。

考虑一下这个更容易管理的公式:

=B9*OFFSET(K9,0,MIN(4,ROUNDDOWN((B9-25)/5,0)))
=B9*INDEX($J$9:$O$9,MAX(0,MIN(5,INT(B9/5)-4))+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) 
MATCH(value to look for, where to look, match type)
LOOKUP(what to look for, range to look in, range to return result from)
因此,根据您的公式,您要查找的值是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)
=B9*LOOKUP(B9,$J$8:$O$8,$J$9:$O$9)
为了处理小于25小时的时间,我将使用MAX函数将另一个方向的上限设为0,现在的公式如下所示:

=MAX(0,MIN(5,INT(B9/5)-4))
现在您有了一个运行的序列:

0, 1, 2, 3, 4, 5
我们现在有了6个可能的奖金类别的顺序整数。我们可以使用CHOOSE函数返回第n个选项,该选项是从1开始的列表。所以我们需要通过添加一个来改变序列。根据嵌套IF函数的结果生成的choose公式为:

=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…(索引…)的操作来指定范围。。。。索引基本上是根据一维范围(如列或行)的序列号查找单元格在某个范围内的位置。对于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列开始,二维范围从A1开始,然后工作表列/行号将匹配

对于本例,所选范围为水平参考J9:O9。它也可能是K13:K17的垂直范围。这两个都是1D范围,因此范围中的位置以相同的方式确定。使用选项3中的公式生成位置1到6。这将导致公式:

=B9*OFFSET(K9,0,MIN(4,ROUNDDOWN((B9-25)/5,0)))
=B9*INDEX($J$9:$O$9,MAX(0,MIN(5,INT(B9/5)-4))+1)
注意:如果您无法以某种方式将范围分解为连续整数,则此选项将不起作用

选项5-索引/匹配 与VLOOKUP/HLOOKUP相比,索引/匹配是本网站的首选方法,因为它在数据布局方面更通用。选项4解释了索引的工作原理。剩下的就是如何使用MATCH。匹配将用于查找B9大致所在的行/列。与其他查找类似,它返回B9等于或大于的最后一行/列。比赛形式如下:

VLOOKUP(Value to look for, table/range to look in, column to pull the result from, match type) 
MATCH(value to look for, where to look, match type)
LOOKUP(what to look for, range to look in, range to return result from)
对于我们的情况,我们将在索引函数中嵌入MATCH,并获得:

=B9*INDEX($J$9:$O$9,MATCH(B9,$J$8:$O$8,1))
选项6-查找 查找与VLOOKUP/HLOOKUP类似,只是搜索范围和结果范围不必相邻。使其更像索引/匹配组合。我还注意到,虽然预期的输入类似于VLOOKUP/HLOOKUP,但实际上没有查找类型的选项。查找的形式为:

VLOOKUP(Value to look for, table/range to look in, column to pull the result from, match type) 
MATCH(value to look for, where to look, match type)
LOOKUP(what to look for, range to look in, range to return result from)
基于此,再次使用水平表J8:O9,公式变为:

=MIN(5,INT(B9/5)-4)
=B9*LOOKUP(B9,$J$8:$O$8,$J$9:$O$9)

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

单元格b9中的值似乎小于25,在这种情况下,您使用的公式不会产生任何结果。尝试更改为ifb9>=45,b9*o9,ifb9>=40,b9*n9,ifb9>=35,b9*m9,ifb9>=30,b9*l9,ifb9>=25,b9*k9,b9,至少有一个与b9中的值相同的默认值,我认为这不会有任何额外的奖励。正确。我做了复制粘贴,这个公式没有计算。其他小变化?在B9中,如果工作时间少于25小时,该如何工作。ie B9=10?@它没有。用户发布的原始公式也没有处理这种情况。但是如果需要的话,它可以很容易地调整以处理这种情况。斯科特,答案是,如果生产时间少于25小时,就没有奖金。他们的固定时薪为每小时15.5美元。以下公式适用于a.=B9*CHOOSEMAX0、MIN5、INTB9/5-4+1,1、$L$9、$M$9、$N$9、$O$9、$P$9。唯一的例外是产生0-24.99小时。我可以设置一个值为0.00美元的列吗?如果是这样,您的上述公式将如何使用单元格K9值$0.00进行计算?0-24小时条目应产生一个值1,如果您希望它是一个值0,请将L9之前的1更改为0,或更改为一个包含0的参考单元格。相反,对于在表中进行查找的其他选项,请将包含1的单元格更改为0。在上图中,将J9更改为0。对于IFERROR方法,将最后一个括号前的最后一个1更改为0。向前,你是个天才。非常感谢您确定我的这个问题。我知道你认为这可能很简单。但这不在我的驾驶室里。我知道我的目标是什么。然而,我不知道如何实现的确切公式。再次感谢。上帝保佑你。