Excel 将“@”添加到具有范围的公式中

Excel adds '@' to formulas with a range

提问人:Rachel 提问时间:11/16/2023 最后编辑:Rachel 更新时间:11/17/2023 访问量:93

问:

我正在使用 OfficeOpenXml 在 ASP.NET MVC 中创建一个 Excel 电子表格。

当我设置一个带有范围的公式时

cell.Formula = "=SUM(FLOOR(I2:I12/2,0.01))";  

Excel 在范围之前添加@

=SUM(FLOOR(@I2:I13/2,0.01))

Excel 无法计算此公式,它显示为 #VALUE!

如何在不获取符号的情况下设置此公式?@

C# ASP.NET-MVC Excel 公式

评论

1赞 Rand Random 11/16/2023
Excel 显然想要它,那么你为什么要试图反对 Excel?
1赞 P.b 11/16/2023
用代替.Formula2.Formula
1赞 Rachel 11/16/2023
我正在使用 Excel 2013。它仅在没有@
2赞 Mayukh Bhattacharya 11/16/2023
正如 @P.b Sir 所评论的那样,这里是 JvdV Sir 的解释链接,也可能有所帮助: 阅读
1赞 P.b 11/16/2023
很好的解释

答:

2赞 StriplingWarrior 11/16/2023 #1

我无权访问您正在使用的 Excel 版本 (2013),但以下是我理解您所看到的问题的方式。如果你刚才说,预期的行为是模棱两可的:FLOOR(I2:I13/2,0.01)

  • 旧版本的 Excel 会将其视为“隐式交集”,并假设您的意思是让它采用与当前单元格在同一行中的单元格值的 FLOOR,在 的范围内。I2:I13
  • 较新版本的 Excel 将创建一个“动态数组”,导致公式“溢出”到当前单元格下方的单元格中,以便从 为每个单元格创建一个 FLOOR 单元格。I2:I13

当 Excel 添加对动态数组的支持时,它们更改了公式语言以消除这两种行为的歧义:

Excel 升级后的公式语言与旧语言几乎相同,只是它使用 @ 运算符来指示可能发生隐式交集的位置,而旧语言则静默地执行此操作。因此,您可能会注意到,在动态数组Excel中打开时,@出现在某些公式中。请务必注意,您的公式将继续以与往常相同的方式进行计算

https://support.microsoft.com/en-au/office/implicit-intersection-operator-ce3be07b-0101-4450-a24e-c1c999be2b34

如果您在新版本的 Excel 中打开较旧的 Excel 文件,您将看到他们在范围前添加了一个符号,以表明它正在使用隐式交集行为 - 该符号告诉新版本的 Excel 使用与旧版本相同的行为。因此,我可以使用以下命令模拟旧的Excel行为:@@FLOOR(@I2:I13/2,0.01)

  • 如果我把它放在从 到 的一行上,这将为我提供该行列中值的 FLOOR。213I
  • 如果我把它放在任何其他行上,当前行超出范围,我会得到.#VALUE!

怀疑(但无法测试)在公式中使用 保存文件仍然会使文件与旧版本向后兼容,因为它应该使用预先存在的行为。@

现在,如果我使用公式,它不会给我从 到 的所有 FLOOR 的总和:它给了我与当前单元格在同一行的单个单元格的地板总和。由于只有一个单元格,因此 SUM 的值与该单元格的值相同。由于这模仿了旧版本 Excel 的行为,我猜这就是您看到结果的原因:您的单元格在 2 到 13 范围之外的行中。SUM(FLOOR(@I2:I13/2,0.01))I2I3FLOOR(@I2:I13/2,0.01)#VALUE!

换句话说,我认为您看到的是尝试使用的公式的自然结果,即使您在 Excel 2013 中手动将原始公式输入到该单元格中,您也会看到相同的行为。

另一方面,SUMPRODUCT 函数旨在以我认为您希望它工作的方式对数组执行操作。如果使用 ,这应该不会触发隐式交集,因此它不会添加符号,并且您最终应该得到给定范围内所有单元格楼层的总和。 一直到 Excel 2007 都可用。SUMPRODUCT(FLOOR(I2:I13/2,0.01))@SUMPRODUCT

评论

0赞 Rachel 11/16/2023
Excel 无法计算带有 @ 的公式,它显示 #VALUE!。我会更新问题。
0赞 StriplingWarrior 11/16/2023
按照 Mayukh 发布的链接中的建议使用@Rachel?.Formula2
0赞 Rachel 11/17/2023
.公式 2 不起作用。“ExcelRange”不包含“Formula2”的定义...
0赞 StriplingWarrior 11/17/2023
@Rachel:如果从公式字符串中删除 会发生什么?stackoverflow.com/a/23993713/120955 stackoverflow.com/a/58423773/120955=
0赞 Rachel 11/17/2023
我试过了:) 它仍然得到“@”