excel - VBA在公式中弄乱了我的结构化参考
问题描述
我是这个网站的新手,但几年来一直在使用 VBA。我有一个问题,该问题最近才开始,并且非常不一致,出现在我的带有 Office 365 的 PC 上,但没有出现在运行 MS Office Pro 2016 的笔记本电脑上。
我遇到的问题是,当将公式插入工作表时,它将结构化引用从列"DesktopObs[Class Title]"更改为单元格"DesktopObs[@[Class Title]]"。
我在专栏中得到了这个:
=MAX(IF(DesktopObs[@[Class Title]]=[@[Class Title]],IF(DesktopObs[@[Observation Type]]<>"Re-Obs",DesktopObs[Actual Observation date])))
虽然我应该得到这个:
=MAX(IF(DesktopObs[Class Title]=[@[Class Title]],IF(DesktopObs[Observation Type]<>"Re-Obs",DesktopObs[Actual Observation date])))
下面是我用于“恢复公式”的(部分)代码。
Set wb = ThisWorkbook
Set ws = wb.Worksheets("Class Setup")
Set rng = ws.Range("tbl_ClassSetup[Latest Desktop Observation]")
Call f_WorksheetProtection(ws, False)
strFormula(1) = "=MAX(IF(DesktopObs[Class Title DO]=[@[Class Title]],IF(DesktopObs[Observation Type]<>""Re-Obs"",DesktopObs[Actual Observation date])))"
strFormula(2) = "=MAX(IF(DesktopObs[Class Title]=[@[Class Title]],IF(DesktopObs[Observation Type]=""Re-Obs"",DesktopObs[Actual Observation date])))"
For i = 1 To 2
rng.Offset(0, i - 1).Formula = strFormula(i)
rng.Offset(0, i - 1).FormulaArray = rng.Offset(0, i - 1).Formula
Next i
我怀疑它与 Office 365(可能是自动更正)有关,但无法确定它到底是什么。我什至从头开始尝试并重新安装了 Windows 和整个办公室,但这个问题仍然存在。
解决方案
推荐阅读
- dictionary - 在冒险游戏中绘制字典
- matlab - 我正在尝试在 Matlab 中模拟蒙蒂霍尔问题。我究竟做错了什么?
- powerbi - 总结 Power BI 中串联列(或多列)的条形图
- office365 - 确定与office365的连接是否有效,如果没有连接,则执行某些操作
- html - 导航栏没有使我的链接居中,我不知道如何使用 flexbox
- c# - 建立与 SQL GRAPH API ADO 的连接时发生与网络相关或特定于实例的错误
- python - 返回 None 而不是 False
- google-apps-script - Google 表单中的可填写表格,用于记录特定 Google 表格中的数据
- intellij-idea - 运行 Java 11.02 JavaFX .jar 应用程序会产生奇怪的输出
- c++ - 如何使用快速排序对二维双打向量进行排序?