热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当一个单元中的一个函数"解析"多次包含对同一函数的相同调用时,excel是多么聪明

如何解决《当一个单元中的一个函数"解析"多次包含对同一函数的相同调用时,excel是多么聪明》经验,为你挑选了1个好方法。

考虑一下: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中的拆分和文本到列菜单选项.]



1> tigeravatar..:

如果ExcelFunctionCallB(..)是一个涉及重要处理的函数,如果在另一个单元格中找到ExcelFunctionCallB(..)的结果并且上面的公式被更改为引用该单元格4次,那么excel会更快地处理公式.

这是正确的,引用已经计算的单元格比在单个单元格中多次重新计算同一事物更快.Excel将分别计算每一个

另外,正如pnuts所指出的,这个链接可能很有用:http://msdn.microsoft.com/en-us/library/office/ff700515%28v=office.14%29.aspx

(在chris neilsen的建议中发布的答案)


推荐阅读
author-avatar
mobiledu2502871951
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有