如何在vlookup中调用vba函数

时间:2015-03-13 11:41:01

标签: excel excel-vba wrapper vlookup vba

我认为以下公式可行      =if(B1=1,fxcmde3(),if(B1=2,fxcmde4(),if(B1=3,fxcmde5(),if(B1=4,fxcmde6(),if(B1= 5,fxcmde7(),if(B1=6,fxcmde8(),””))))))

其中每个fxcmde4()等都是vba函数,例如

Function fxcmdc3() As Variant
fxcmdc3 = Sheets("Sheet8").Range("DC3").Value
End Function

然而,我将不得不写出大约1000-2000个变体,以引用我所拥有的64个左右的功能。另外,我可能每次都会写出公式。

这是因为我不能通过引用一个单元格来运行vba函数以使事情变得更快。如果我这样做,那么=AF3将在单元格AF3包含fxcmde3()的情况下工作,但这不起作用,因此vlookup或任何其他引用此功能的方法都不起作用。

我的excel公式就像=if(B1=1,fxcmde3(),if(B1=2,fxcmde4(),if(B1=3,fxcmde5(),if(B1=4,fxcmde6(),if(B1=5,fxcmde7(),if(B1=6,fxcmde8(),””)))))) 比如说单元格M2 然后在M3到M8一路参考到k =if(B1=1,fxcmdf3(),if(B1=2,fxcmdf4(),if(B1=3,fxcmdf5(),if(B1=4,fxcmdf6(),if(B1=5,fxcmdf7(),if(B1=6,fxcmdf8(),””)))))) 然后在M3我会有相同的程序(参考e到k),除了引用B2

因此,这将永远一直到行M1000

B1 b2 TO b1000将只有值1 - 7引用对应的d到k因此我很薄我可以使用查找或一些昂贵或耗时的包装函数,我不知道(因此为什么我在这里)这样做

1 个答案:

答案 0 :(得分:0)

如果您要使用的所有功能都很简单,请不要通过VBA用户定义的功能执行此操作。只需对工作表和单元格使用普通的Excel引用即可。

=IF(B1=1,Sheet8!$DC$3,If(B1=2,...)

或者你有什么理由想避免这种方法吗?

编辑1

您是否尝试以这种方式引用该功能? enter image description here

enter image description here

enter image description here