将Excel函数结果分配给单元格中的变量

时间:2018-07-27 14:23:13

标签: excel excel-formula

我正在处理一个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])

想法,有人吗?谢谢...

3 个答案:

答案 0 :(得分:0)

您愿意格式化吗?您可以通过这种方式隐藏零,从而使公式简短。

突出显示0结果的范围,然后依次转到“格式设置”和“自定义”。使用此格式,任何0;-0;;@ 都将被有效隐藏:

ViewModel

enter image description here

答案 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} }。