我正在寻找一种在 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 中的单元格。