学习Excel技术,关注微信公众号:
excelperfect
在前面的几篇文章中,我们自定义的函数使用定义为Range的参数来从Excel工作表中获取数据,例如:
Function VINTERPOLATEB(Lookup_Value As Variant, _
Table_Array As Range, _
Col_Num As Long)
如果在公式中使用单元格区域作为参数来调用该函数,运转得非常好:
=VINTERPOLATEB($H1,$A$1:$C$10000,2)
但是,如果使用计算表达式或者一组常量作为参数,则返回的结果为#Value:
{=VINTERPOLATEB($H1,($A$1:$C$10000*1),2)}
这个公式是数组公式,因此输入完后按Ctrl+Shift+Enter组合键,Excel自动在公式两边添加花括号。
=VINTERPOLATEB(4.5,{1,3,3.5;4,4,4.5;5,4.5,5},2)
这个公式使用了3行3列的数组常量。
Excel在调用函数之前会检测到这些参数不是单元格区域。
通过将参数定义为Variant型而不是Range可以解决此问题:Variant型参数几乎可以包含任何内容!但用户自定义函数现在必须处理Variant可能包含的所有不同类型的数据。
一种简单的方法是将参