Har*_*nch 3 excel vba worksheet-function excel-vba
考虑一下:Cell C1有一个多次调用另一个函数的公式:
例如 =ExcelFuntionA(ExcelFunctionCallB(1), ExcelFunctionCallB(1)-1, ExcelFunctionCallB(1)-2, ExcelFunctionCallB(1)*3)
请注意,传递给的参数ExcelFunctionCallB每次都具有相同的值.
如果ExcelFunctionCallB(..)是涉及重要处理的函数,如果ExcelFunctionCallB(..)在花药细胞中发现结果并且上述公式被改变为参考该细胞4次,那么将更好地处理该公式.
例如
说A2有公式   ExcelFunctionCallB(..)
C1然后读  =ExcelFuntionA(A2, A2-1, A2-2, A2*3)
我想知道excel是多么聪明!
可以看到呼叫是相同的,只处理一次对该功能的调用吗?
对于数组公式以及普通函数公式来说,它是否足够智能?
如果你调用一个用VBA编写的函数,它是如何工作的?
承诺VBA函数可以直接引用未作为参数传递的单元格(我知道这很顽皮,但它发生了,即使与它一起使用的参数,它也可能返回不同的值的可能性很小是相同的.)
从上面开始,有没有办法告诉代码VBA函数不能直接访问任何excel单元格?(有点像application.volatile我想象的那样)
一个更现实的例子:我实际上一直在尝试这样的公式:
=MID($A2, FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1)), FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1+1)) - FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1)) - 1 )
在SO 24182334/splitting-text-columns的未批准答案之一中提出了很好的记录
请注意,此公式使用文本FIND("@",SUBSTITUTE("#" & $A2 & "#","#","@",B$1))三次.
[PS.我知道有关VBA中的拆分和文本到列菜单选项.]
如果ExcelFunctionCallB(..)是一个涉及重要处理的函数,如果在另一个单元格中找到ExcelFunctionCallB(..)的结果并且上面的公式被更改为引用该单元格4次,那么excel会更快地处理公式.
这是正确的,引用已经计算的单元格比在单个单元格中多次重新计算同一事物更快.Excel将分别计算每一个
另外,正如pnuts所指出的,这个链接可能很有用:http://msdn.microsoft.com/en-us/library/office/ff700515%28v=office.14%29.aspx
(在chris neilsen的建议中发布的答案)
| 归档时间: | 
 | 
| 查看次数: | 140 次 | 
| 最近记录: |