所以我有一张不同地区的表格和不同年份的相应价值2014 - 2017年。并非所有地区都有2017年的价值。但是,如果我创建WorksheetFunction.VLookup(...)
,如果相关单元格为空,它将返回0。
如果给定区域的单元格为空,我需要设置我的特殊值(-1)而不是0,但是,我无法区分真零和零Vlookup
返回而不是空值。我该怎么做?
编辑:我不能在单个单元格上使用IsEmpty
,因为我不知道结果的单元格地址 - 我循环使用它们甚至不知道第一个参数的地址。我只有结果 - 无论是真实的还是假的零。
答案 0 :(得分:0)
我不确定,但我认为使用IF,ISEmpty会解决您的问题。
使用WorksheetFunction.Match获取单元格地址
currentCell= the cell in which you'll be putting value
concernedCell=The cell which can be empty
If(Isempty(concernedCell)) Then
currentCell.value=-1
Else
currentCell.value=concernedCell.value
答案 1 :(得分:0)
您可以检查VLOOKUP是否返回空单元格。
作为工作表公式,您可以使用:=IF(VLOOKUP(K9,$F$2:$G$6,2,FALSE)="",-1,VLOOKUP(K9,$F$2:$G$6,2,FALSE))
作为VBA示例,您可以使用:
Public Function MyVlookup(lookup_value, table_array As Range, col_index_num As Long, Optional range_lookup As Boolean = False) As Variant
Dim ReturnValue As Variant
ReturnValue = WorksheetFunction.VLookup(lookup_value, table_array, col_index_num, range_lookup)
If IsEmpty(ReturnValue) Then
MyVlookup = -1
Else
MyVlookup = ReturnValue
End If
End Function
答案 2 :(得分:0)
=if(len(vlookup(a2,f$2:g$20,2))=0,"",vlookup(a2,f$2:g$20,2))
诀窍是使用任何不在result = VLookup(...)
上的检查功能,而是在VLookup
本身,在它有时间将空虚改为零之前使用。