IF结果出错

时间:2013-02-14 04:52:08

标签: excel-formula

我想帮助if公式,如果我们有45岁或以上的人,他们的服务年限是2年或更长时间,我必须能够做2年的vlookup并给出一个终止雇员通知期的结果。

  • 年龄在H24是45
  • 服务年份在C61是1
  • R73中的年份2表和V73中的通知期周数。

我放了in =IF(H24>=45,C61>=2,VLOOKUP(2,R73:V73,5,)),这导致FALSE而不是0的结果。

如果我将服务年限改为2,我会 - 我放了in =IF(H24>=45,C61>=2,VLOOKUP(2,R73:V73,5,)),这导致FALSE而不是0的结果。

如果我将服务年限改为1或2,之前改为43,我会 - 我放了in =IF(H24>=45,C61>=2,VLOOKUP(2,R73:V73,5,)),这导致FALSE而不是1的结果。

帮助!!

2 个答案:

答案 0 :(得分:2)

听起来你的IF语句的结构应该是这样的:

=IF(AND(H24>=45, C61>=2), Value-If-True, Value-If-False)

因为您希望员工年满45岁,服务年限为2岁或以上。

此外,您需要通过在IF块之外进行测试来仔细检查VLOOKUP的行为,如下所示:

=VLOOKUP(2,R73:V73,5)

检查结果是否符合预期。

答案 1 :(得分:0)

在这个问题中,将它分开可能具有一定的教育价值是不太对的。

下图中的上方块表示您使用的语法以及为什么您的三个测试的结果是您找到的(除了我认为第二个测试将返回TRUE而不是FALSE):

SO14868030 example

IF函数语法的第一个元素是 logical_test 。如果是H24>=45且H24是45,则评估 value_if_true (勾选,上部分支)(对于前两个测试)。对于第一个测试,C61为1,因此=C61>=2返回FALSE,如您所述。对于第二次测试,我相信它会返回TRUE(虽然你想要一个数字)。

对于第三次测试, logical_test 失败,第二次测试(带有交叉,低分支)。这发生了VLOOKUP功能的不幸事件。

下面的部分是@ Samuel建筑的代表。这里的 logical_test 是复合的 - 两个元素(AND)都必须通过'进入上部分支,图像中的 value_if_false 设置为0

然而,VLOOKUP也存在一两个问题。 V用于垂直,提供的范围是水平的。因此,无论使用哪个搜索词(上层块中的 lookup_value - 2),结果总是会出现在V73中的任何内容,从您的测试中看起来似乎是{{1}或者返回FALSE的东西。该链接提到 table_array "两列或更多列数据"是必需的。

返回V73中的值,部分原因是由于假定FALSETRUE时尚未输入查找函数中的第四个参数( range_lookup )。在这种情况下"返回精确或近似匹配"。如果未找到完全匹配"则返回小于lookup_value的下一个最大值" - 如果范围按升序排序,否则" VLOOKUP可能无法给出正确的值"。

因此,对于查找功能,您需要根据数据布局决定VLOOKUP或HLOOKUP,扩展到至少两列或者行,并且可能添加FALSE作为第四行( range_lookup )参数。