自从我从 Excel 进行更新后,它会自动插入隐式交集运算符 @,因此我的公式在 Excel 工作簿中的行为发生了变化。
我注意到问题出现在用户定义的公式中。
我已将问题缩小到具有以下场景的 MCVE:
令CustomRange为一个范围,引用 8 行,其中一行为空:
Alpha
Bravo
Charlie
Echo
Foxtrot
Golf
Hotel
Run Code Online (Sandbox Code Playgroud)
让CustomFunction成为一个用户定义的函数,它接受一个整数 N 作为参数并返回该自定义范围的第 N 个元素
Function CustomFunction(Num As Integer)
Dim R As Range
Set R = Range("CustomRange")
CustomFunction = R(Num, 1)
End Function
Run Code Online (Sandbox Code Playgroud)
让我们通过包含和省略隐式交集运算符来比较公式返回的结果:
=IF(@CustomFunction(4)="","EMPTY","NOT_EMPTY")
=IF(CustomFunction(4)="","EMPTY","NOT_EMPTY")
Run Code Online (Sandbox Code Playgroud)
第一个会屈服NOT_EMPTY,而第二个会屈服EMPTY。
由于 Excel 将自动添加@到我的旧工作簿中,因此我的公式不再起作用。如果我找到并用空替换所有 @,我的公式将再次开始按预期工作(因此文章中的句子指出“您的公式将继续以与以往相同的方式计算。”是不正确的)。
我希望 Excel 停止更改我的公式,有没有办法解决这个问题?
隐式交集运算符 :@ 是在 Excel 365 for Windows 版本 1907 内部版本 11901.20176 中添加的,作为 Excel 引擎动态数组公式 重写的一部分,并且它会保留下来。
从本质上讲,微软取消了数组函数的概念(尽管它们仍然有效),而是允许几乎所有函数(包括 VLOOKUP)返回值数组。如果返回值的数组无法容纳在可用空间中,您将收到新的#SPILL!错误。
您可以使用 @ 运算符来避免错误,如 禁用#SPILL!文章中所述。错误。但是,这需要修改您的公式。
好消息是,如果 @ 运算符破坏了您的公式并且您手动将其删除,那么在保存后它将保持删除状态。Excel 仅对每个电子表格进行一次公式转换。不幸的是,我们目前不知道如何手动打开此标志以避免首先进行转换。
实际上,用于撤消公式转换的选项并不多:
这些方法都不是特别令人满意,但我还没有找到更好的方法。
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |