我正在处理一个Excel电子表格,其中使用VLOOKUP从另一个工作表中获取数据。我有它的工作,但它给我令人讨厌的“ 0”的空白结果。我想合并ISBLANK来解决这个问题。
我的问题是语法。如果返回FALSE,我真的不想重新输入整个VLOOKUP函数的结果。
换句话说,我要避免这样做的是:
=IF(ISNULL(VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2)),"",VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2))
理想情况下,我想做的是这样的事情:
=IF(ISNULL(VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2)),"",[some variable that stores the result of the VLOOKUP])
想法,有人吗?谢谢...
答案 0 :(得分:0)
答案 1 :(得分:0)
这取决于您要查找文本还是数字。
如果您希望表达式的结果是您要查找的文本,就像用功能VLOOKUP
包装T()
一样简单。
因此,对于文本,将VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2,FALSE)
替换为T(VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2,FALSE))
如果表达式的结果是一个数字,并且您的VLOOKUP
表达式太复杂而无法重复,那么可以避免使用IFERROR
偷偷写两次。诀窍在于做到这一点,以便在VLOOKUP
返回0
时产生错误,但否则返回VLOOKUP
返回的内容。您可以利用一些数学方法来做到这一点:在x<>0
,然后在1/(1/x) = x
处。当x=0
时,Excel返回#DIV/0!
。如果我们使用IFERROR
,则可以将其替换为空字符串(""
)
因此,对于数字,将VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2,FALSE)
替换为IFERROR(1/(1/VLOOKUP($A2,Sheet!$B$1:Sheet!$C$200,2,FALSE)),"")
答案 2 :(得分:-1)
从外观上看,您要求的公式是:
=IF(VLOOKUP($A2,Sheet!$B$1:$C$200,2,FALSE)="","",VLOOKUP($A2,Sheet!$B$1:$C$200,2,FALSE))
编辑:函数结尾处的FALSE
是这样,因此只能找到完全匹配的内容。忽略它或将其设置为True
,将返回一个精确的或小于查找值的下一个最大值-您的列表必须按升序排序。 / p>
请注意,对名为Sheet
的工作表的范围引用是Sheet!$B$1:$C$200
,而不是Sheet!$B$1:Sheet!$C$200
。
话虽如此,一种更简单的方法是隐藏数字格式的0返回。
给单元格一个自定义数字格式:
#,##0;-#,##0;;@
第一部分#,##0
是正数格式,第二部分-#,##0
是负数格式,第三部分;;
(未设置格式)为零,最后一个{{1} }。