【发布时间】:2015-03-13 11:41:01
【问题描述】:
我有以下公式,我认为它会起作用
=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 引用 gto e 到 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 到 b1000 将只有值 1-7 来指代对应的 d 到 k 因此我可以使用查找或一些我不知道的昂贵或耗时的包装函数(因此为什么我在这里)这样做
【问题讨论】: