有没有与之相反的功能FORMULATEXT
例如在单元格中,B2
我有:
='[Workshop Schedule 2020.xlsx]Lisburn'!D7
在C2
我使用FORMULATEXT
andREPLACE
时,用 CANNOCK 替换 LISBURN:
=REPLACE(FORMULATEXT(B2),32,7,"CANNOCK")
它将以下内容作为字符串返回。
='[Workshop Schedule 2020.xlsx]CANNOCK'!D7
我现在想将此字符串用作公式。我不能使用INDIRECT
它指向外部工作簿。
您可以创建一个用户定义的函数,如:
因此,如果A1包含文本字符串:
然后:
用户定义函数 (UDF) 非常易于安装和使用:
如果您保存工作簿,UDF 将与它一起保存。如果您使用的是 2003 年以后的 Excel 版本,则必须将文件另存为 .xlsm 而不是 .xlsx
要删除UDF:
要使用Excel 中的 UDF:
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关 UDF 的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其正常工作!
我赞扬您愿意使用 VBA 和 UDF,这使许多事情变得更容易。对于那些不熟悉 VBA 的人来说,UDF 是一个让 VBA 感到舒适的好地方,因此它是一种网关使用,通常也是一个很好的解决方案。
如果您愿意,您可以在没有 UDF 的情况下执行此操作。做起来非常快,并且不需要像 UDF 那样经常做的方法计划,因为您将让 Excel 完成确定如何评估结果的工作。
它还具有直接“是”的意义,即您对类似于该
INDIRECT()
功能的东西的渴望。您可以使用旧的宏语言(25 岁)功能
EVALUATE
。它可用但仅在指定范围函数中可用。(在宏中,但 Gary 的学生已经完成了一个很好的宏。)将函数键入工作表本身将失败。创建一个
Named Range
(可能命名为“horsey”)。对于它的Refers to
值,输入以下公式:并保存内容,关闭命名范围管理器。
现在输入
进入工作表上的任何单元格(好吧,除了 B2 和 C2!)将
INDIRECT()
与单元格引用完全一样。它采用 C2 中的字符串(包括“=”或不包括它没有区别)并将其视为公式。人们经常想到
EVALUATE()
将某些单元格条目(例如17-5+32
,即使它是文本并且没有等号)转换为计算结果的受限角色,所以他们认为它没有太大的价值。但它可以做更多涉及的事情,就像你今天所要求的那样。特别是因为我们现在有了
FORMULATEXT()
,所以我们可以轻松地修改工作公式。