当(如果)该表的 Y 列低于 Z 值时,我需要用 VLOOKUP 查找表中的 X 值。
编写此公式将返回表的第一个值而不是我需要的值:
=IF(PI_UWF!S:S < Search!$L$19 ; VLOOKUP(O18;PI_UWF!$C:$Q;15;FALSE) ; "boh")
- 值 X =
VLOOKUP(O18;PI_UWF!$C:$Q;15;FALSE)
- Y 列 =
PI_UWF!S:S
- 值 Z =
Search!$L$19
我该怎么做?
答案1
你遵循了错误的逻辑,检查外部的标准是VLOOKUP
行不通的。
不要VLOOKUP
使用 INDEX 和 MATCH,这样您就可以创建更灵活的公式:
=INDEX(PI_UWF!Q:Q;MATCH(O18,IF(PI_UWF!S:S<Search!L19,PI_UWF!C:C,""),0))
这是一个数组公式,因此插入后按 CTRL+SHIFT+ENTER。
怎么运行的:
IF(PI_UWF!S:S<Search!L19,PI_UWF!C:C,"")
- 仅当 S:S 低于 Search!L19 时才从 C:C 中选择值MATCH(O18,IF(...),0)
- 与过滤列表中的值匹配=INDEX(PI_UWF!Q:Q;MATCH(...))
- 从 Q:Q 中选择正确的值
(由于我没有样本数据,我无法检查解决方案,它可能存在小问题,但概念是正确的)。
答案2
使用起来不可靠。=IF(PI_UWF!S:S < Search!$L$19;;)
它不知道您是否想将其与列的总和或单个值进行比较。而且相当不可靠。
您可以使用很多函数,具体取决于您想要做什么。
如果您想Z
与和您Y
可以使用SUM()
用这个你可以替换PI_UWF!S:S
它,SUM(PI_UWF!S:S)
这样你会得到:
=IF(SUM(PI_UWF!S:S) < Search!$L$19 ; VLOOKUP(O18;PI_UWF!$C:$Q;15;FALSE) ; "boh")
你更可能想比较Z
一下每一个单元格Y
。为此,您可以使用类似 的内容COUNTIF(range, criteria)
。
=COUNTIF(PI_UWF!S:S;">="&Search!$L$19)
Y
将计算 中值等于或大于 的单元格数Z
。
如果此值为 0,则表示 中的每个单元格Y
都小于Z
。这意味着:
=IF(COUNTIF(PI_UWF!S:S;">="&Search!$L$19)>0;"Not inferior";"Inferior")
或者你的情况
=IF(COUNTIF(PI_UWF!S:S;">="&Search!$L$19)>0;"boh";VLOOKUP(O18;PI_UWF!$C:$Q;15;FALSE))
祝你好运!