在Excel中创建自定义函数
这似乎是一件很明显的事情,excel必须有这个功能,我就是找不到它 如何在不使用VBA的情况下创建自定义函数?(VBA的锤子太大,会导致安全警告等) 例如,我有一个电子表格,其中有几个非常复杂的公式。这些公式中的每一个都在几列中复制。每个列都有数百个条目,因此每个条目都会被复制数百次。如果我调整了某些内容,那么我必须手动填写或将更改从一列复制到另一列 一个简单的例子如下:在Excel中创建自定义函数,excel,excel-formula,Excel,Excel Formula,这似乎是一件很明显的事情,excel必须有这个功能,我就是找不到它 如何在不使用VBA的情况下创建自定义函数?(VBA的锤子太大,会导致安全警告等) 例如,我有一个电子表格,其中有几个非常复杂的公式。这些公式中的每一个都在几列中复制。每个列都有数百个条目,因此每个条目都会被复制数百次。如果我调整了某些内容,那么我必须手动填写或将更改从一列复制到另一列 一个简单的例子如下: =(付款1-F$12)*12+($D21-H21) 但我想做的是: =MyFunction(f$12、$D21、H21) 在
=(付款1-F$12)*12+($D21-H21)
但我想做的是:
=MyFunction(f$12、$D21、H21)
在某个地方写一次“MyFunction”的实际公式 我已经找到了一些能满足我需求的东西。例如,在表格中,Excel将自动将公式中的更改复制到列的其余部分,从而省去手动选择范围并进行“填充”的步骤
它还允许命名单元格的相对引用,这似乎相当于用户定义的无参数函数。如果可以使用文本创建公式,则可以定义一个名称来计算函数 在单元格A2中,创建一个名称EvalAbove,并在reference中输入
=evaluate(A1)
这样,您就可以构造一个公式e、 g.B1包含
SUM
,B2包含=(“=”&B1&“(A2:A5)”)
在B3中,您可以将
=EvalAbove
这意味着,如果更改B1中的公式名称,则B2将更改为显示更改的公式,B3将更改为显示结果
- 请注意,这仍然算作启用宏的工作簿,但没有VBA代码,只有命名范围
=(Payment1 - R12C)*12 + (RC4-RC[+2])
现在可以通过F列向下传播公式
=MyFunction
它将始终使用相应F12列Dxx和Hxx列中的值
如果将公式拖到下一列,它将使用G12、Dxx和Ixx
如果要更改公式,请在“定义名称”空间中编辑它
这是Excel中不能有非vba自定义项规则的一般例外。通常,在Excel中,您希望作为函数“参数”的内容实际上位于可以相对寻址的固定位置(行或列)
例如,您经常希望在左侧的单元格上执行自定义项
因此,一个udf给出了左边单元格的立方体,它是一个命名公式,如下所示:
Cuberoot=(RC[-1])^(1/3)
或者在a1格式中,将光标设置在B1中,类型=(a1)^(1/3)
Excel将在内部将其转换为RC表单
对于三个参数-使用三列
它可以正常工作,并且不会遇到evaluate()中提到的波动性问题
是的,我知道这是一个旧的张贴,但它可能会帮助有同样问题的人
Bob J.是一个很好的教程。然而,不能逃避VBA,我同意这一点:“创建UDF需要使用VBA,这是没有办法的。”(用户定义函数)[您可以在定义的名称中集成函数,但它们不带参数。但是,您可以在命名范围中集成大多数运算符、函数以及相对地址和绝对地址。谢谢。这很有效,但我发现“B3”除非我编辑B3,否则不会刷新。如果我更改A2:A5范围内的数据,B3中的总和将不会更新,即使我在数据中单击“全部刷新”。编辑B3(不更改)会使其刷新。