EXCEL宏如何让自定义函数返回错误代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL宏如何让自定义函数返回错误代码?相关的知识,希望对你有一定的参考价值。

比如在excel单元格输入=2/0,得到的结果是#div/0!,我想写一个自定义函数
function ffchufa(a,b)
......
if b=0 then
ffchufa=2/0
end if
end function
这时ffchufa(5,0)返回的结果是#value!,而不是#div/0!
我想让b=0时,返回结果是#div/0,该如何操作呢?

参考技术A . 问题: 假设我们在Excel中有以下需求: 你可以嵌套使用IF函数,判断每一个分数属于哪一个区间。但是,4层IF会不会很容易出错;如果是5个区间,甚至是10个区间呢?追问

我给出的if b=0 then只是举个例子,判断除数如果为0,想此时返回#div/0!。
我不知道在if和End if之间怎样写,才能返回#div/0!

函数式宏定义和自定义函数的区别是什么?

自定义函数:

技术分享图片

 宏函数

 技术分享图片

 

(1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以危险性高;但因为省去了函数的调用,返回,释放,所以效率比自定义函数高;

 

(2)调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。

如果MAX是个普通函数,那么它的函数体return a > b ? a : b; 要编译生成指令,代码中出现的每次调用也要编译生成传参指令和call指令。而如果MAX是个函数式宏定义,这个宏定义本身倒不必编译生成指令,但是代码中出现的每次调用编译生成的指令都相当于一个函数体,而不是简单的几条传参指令和call指令。所以,使用函数式宏定义编译生成的目标文件会比较大。

(3)在执行复杂功能时,如递归,函数式宏定义往往会导致较低的代码执行效率。

尽管函数式宏定义和普通函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数经常用函数式宏定义来代替实现。

 


以上是关于EXCEL宏如何让自定义函数返回错误代码?的主要内容,如果未能解决你的问题,请参考以下文章

让自定义 Publisher 在 Swift Combine 上的不同 DispatchQueue 上运行

Excel 自定义函数错误更新

自动在excel插件中注册用户自定义函数

如何让自定义导航控制器为每个故事板提供相同的自定义导航栏按钮

函数式宏定义和自定义函数的区别是什么?

android 如何让自定义dialog的宽度充满整个屏幕