如何在 Excel 中为用户函数定义别名?

如何在 Excel 中为用户函数定义别名?

我正在寻找一种在 Excel 中定义某种别名的方法。假设我有这个长函数来对家庭开支清单中的每一行进行分类/标记:

=IF(ISNUMBER(SEARCH("咖喱",$F2)),"咖喱",IF(OR(ISNUMBER(SEARCH({"LIDL","TESCO","ALBERT","BILLA"},$F2))),"杂货",IF(OR(ISNUMBER(SEARCH({"FITINN","GM ELECTRONIC"},$F2))),"趣味","")))

它只是检查相邻单元格并将标签填充到当前单元格中。现在假设这个函数有一百行长,所以我不想把它放在工作表的每一行上。我想创建一个名为“tag”的别名,然后在每个单元格中只输入 =tag。我该如何实现这样的功能?

答案1

您需要使用一些 VBA 来处理这个问题。基本上,您使用 VBA 编辑器定义函数(在本例中为“TAG”),然后将生成的模块附加到电子表格。然后,您可以在 Excel 公式栏中使用“=TAG(...)”,就像它是内置函数一样。

这里以获得指导。谷歌搜索的神奇短语是“用户定义函数”。

答案2

使用表格。

突出显示整个单元格矩形,包括标题行,选择“插入表格”,然后将其转换为表格。

然后将您对 F2 的提及替换为[@ColumnTitle]“ColumnTitle”,其中“ColumnTitle”是 F 列的标题。[ColumnTitle] 指的是整个列,[@ColumnTitle] 指的是当前行中该列的单元格。

一旦你用不使用“A1”符号的公式替换整行,并且该公式对该行中的每个单元格都相同,那么无论表中有多少行,公式都只存储一次。如果您在任何单元格中更改它,它就会更改整个列,您的维护工作就会大大简化,公式也更具可读性。

顺便说一下,您也可以在表中使用 UDF,因此您可以有一个公式=MyUDF([ColumnTitleA],[@ColumnTitleA],Offset([@ColumnTitleB],-1,0)),它将传递 A 中的所有数据、当前行的 A 中的单元格以及上一行的 B 中的单元格。

答案3

您可能会认为以下内容更加赏心悦目:

=INDEX($F$2:$F$8,MATCH(TRUE,NOT(ISERROR(SEARCH($E$2:$E$8,$A$2))),0))

我已经使用以下设置对其进行了测试 - 上面的公式在单元格中A5

在此处输入图片描述

相关内容