我需要使用用户函数的结果填充单元格。如果函数的结果不为零,则应该简单地用函数的结果填充单元格;到目前为止一切顺利。
但如果结果为零,我希望单元格为空。
所以我写了这个用户定义的函数:
Function MyTestFunction(n As Integer) As Integer
Dim result As Integer
result = n * 2
If result = 0 Then
MyTestFunction = Empty
Else
MyTestFunction = result
End If
End Function
该功能没有任何实际意义,只是为了调查此问题。
Excel表格如下:
单元格A1到A3只是输入数据,单元格B1到B3包含:
=MyTestFunction(A1)
=MyTestFunction(A2)
=MyTestFunction(A3)
现在为什么单元格B3显示0
而不是空?
答案 0 :(得分:3)
您无法从任何公式(使用内置函数或用户定义的函数)返回 Empty ,请参阅this。
“”与 Empty 不同,并且在许多情况下它们的行为有所不同。可以通过在立即窗口中执行下面的行,在选定的空单元格和包含“”
的单元格上获得差异的表现形式。? TypeName(Selection.Value)
作为公式结果的 Empty 最有用的替代品取决于您对包含公式的单元格的使用,请参阅this以了解它。
仍然在MS的待办事项列表中(或许不是......)
修改强>: 我发现了以下相关问题(值得检查答案)
答案 1 :(得分:2)
你已经定义了你的函数,以便总是返回一个整数,所以它确实如此。空值不是整数。您可以按如下方式修改您的功能:
Function MyTestFunction(n As Integer) As Variant
Dim result As Integer
result = n * 2
If result = 0 Then
MyTestFunction = ""
Else
MyTestFunction = result
End If
End Function