我认为以下公式可行
=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因此我很薄我可以使用查找或一些昂贵或耗时的包装函数,我不知道(因此为什么我在这里)这样做
答案 0 :(得分:0)
如果您要使用的所有功能都很简单,请不要通过VBA用户定义的功能执行此操作。只需对工作表和单元格使用普通的Excel引用即可。
=IF(B1=1,Sheet8!$DC$3,If(B1=2,...)
或者你有什么理由想避免这种方法吗?
您是否尝试以这种方式引用该功能?