【问题标题】:Why does excel put @ in formula from VBA code? [duplicate]为什么excel将@放入VBA代码的公式中? [复制]
【发布时间】:2021-09-09 08:34:40
【问题描述】:

我想问一下excel公式中的“@”,我已经根据某些条件在计算出的中位数下面写了公式。当我直接在单元格中手动编写公式时,该公式有效,但每次我尝试通过下面的 VBA 代码填充公式时

ThisWorkbook.Sheets("Pivot").Range("S3").Formula = "=MEDIAN(IF($L$4:$L$" & x & "=$Q3,IF($M$4:$M$" & x & "=S$2,$N$4:$N$" & x & ")))"

excel 将“@”置于 IF 条件下,然后,它不返回值而是返回 0,如果我删除公式中的“@”,它会再次开始工作。

=MEDIAN(IF(@$L$4:$L$190=$Q3,IF(@$M$4:$M$190=R$2,$N$4:$N$190)))

我用谷歌搜索,但找不到遇到相同问题的人的解释。

【问题讨论】:

  • 由于新版本的 Excel 包含动态公式,您应该使用 .formula2 而不是 .formula

标签: excel vba excel-formula


【解决方案1】:

@ 是一项名为隐式交集的新功能,旨在简化 Excel 的动态数组。

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

您的函数将只检查第 3 行(为空),因此返回 0

【讨论】:

  • @ 不是新功能。这是一个新的符号从现在开始表示隐式交集——公式的旧方式。公式的新工作方式是动态数组,这是现在的默认设置,因此没有符号。因此,@ 的存在意味着“您正在 Excel 365 中查看这个历史公式,但它的工作方式与在 Excel 2016 中一样”。
猜你喜欢
  • 2023-03-05
  • 2013-05-27
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多