-1

如果我们有 45 岁或以上的人并且他们的服务年限为 2 年或以上,我想要一个公式的帮助if我必须能够进行 2 年的 vlookup 并给出终止员工通知期的结果.

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

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

如果我将 Years of service 更改为 2 我得到 - 我已经 put in =IF(H24>=45,C61>=2,VLOOKUP(2,R73:V73,5,)),这将导致 FALSE 而不是 0 的结果。

如果我将 Years of service 更改为 1 或 2 并且之前更改为 43 我得到 - 我已经输入in =IF(H24>=45,C61>=2,VLOOKUP(2,R73:V73,5,)),这将导致 FALSE 而不是 1 的结果。

帮助!!

4

2 回答 2

2

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

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

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

此外,您还需要通过在 IF 块之外对其进行测试来仔细检查您的 VLOOKUP 行为是否符合预期,如下所示:

=VLOOKUP(2,R73:V73,5)

检查该结果是否是您所期望的。

于 2013-02-14T05:15:23.487 回答
0

这个问题有很多不完全正确的地方,因此将其分开可能具有一定的教育价值。

下图中的上半部分表示您使用的语法以及为什么您的三个测试的结果是您发现的(除了我认为第二个测试会返回 TRUE 而不是 FALSE):

SO14868030 示例

IF函数语法的第一个元素是logical_test。在哪里H24>=45H24 是 45 的value_if_true(勾选,上分支)被评估(对于你的前两个测试)。正如您所指出的,对于第一个测试,C611如此=C61>=2返回 FALSE。对于第二个测试,我相信它会返回 TRUE(尽管你想要一个数字)。

对于您的第三次测试,logical_test失败,第二次(带有交叉的较低分支)被采用。这与 VLOOKUP 函数发生了意外。

在较低的块中是@Samuel 的构造的表示。这里logical_test是复合的——两个元素(AND)必须“通过”才能进入上层分支,图像中的value_if_false设置为0

但是VLOOKUP也有一两个问题。这V是垂直的,提供的范围是水平的。因此,无论使用什么搜索词(lookup_value -2在上面的块中),结果总是会是 V73 中的任何内容,从您的测试来看,这似乎是FALSE返回 FALSE 的内容。该链接提到table_array需要“两列或多列数据”。

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

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

于 2014-11-14T00:13:40.077 回答