excel - 即使将公式拆分为多个部分以绕过 250 个字符的限制,使用 VBA 插入长数组公式也不起作用
问题描述
我正在尝试使用 VBA 将数组公式填充到单元格中。我的公式超过 250 个字符,所以我把它分成六个部分,少于那个。但是,每当我运行代码时,我仍然会收到“无法设置 Range 类的 FormulaArray 属性”错误。
相关线路:
Dim Formulapart1 As String
Dim Formulapart2 As String
Dim Formulapart3 As String
Dim Formulapart4 As String
Dim Formulapart5 As String
Dim Formulapart6 As String
Formulapart1 = "=INDEX(11111;MATCH(1;($A$1=22222)*(G$1=33333)*($S$5=44444);0);MATCH($S$2;55555;0))"
Formulapart2 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$a$1:$u$22788"
Formulapart3 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$Q$1:$Q$22788"
Formulapart4 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$H$1:$H$22788"
Formulapart5 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$M$1:$M$22788"
Formulapart6 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$A$1:$U$1"
With wb.Worksheets(1).Range("G4")
.FormulaArray = Formulapart1
.Replace "11111", Formulapart2
.Replace "22222", Formulapart3
.Replace "33333", Formulapart4
.Replace "44444", Formulapart5
.Replace "55555", Formulapart6
End With
重申一下,我只想将公式粘贴到单元格 G4 中,但不知道为什么这不起作用。我已经阅读了有关该主题的多个讨论和文章,但无法弄清楚我做错了什么。
解决方案
正如@GSerg 所述,FormulaArray
只接受英文风格的公式。所以用这个换行,它会起作用(我在我的 Excel 上测试过):
Formulapart1 = "=INDEX(11111,MATCH(1,($A$1=22222)*(G$1=33333)*($S$5=44444),0),MATCH($S$2,55555,0))"
为方便起见,这里是完整的修改代码:
Dim Formulapart1 As String
Dim Formulapart2 As String
Dim Formulapart3 As String
Dim Formulapart4 As String
Dim Formulapart5 As String
Dim Formulapart6 As String
Formulapart1 = "=INDEX(11111,MATCH(1,($A$1=22222)*(G$1=33333)*($S$5=44444),0),MATCH($S$2,55555,0))"
Formulapart2 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$a$1:$u$22788"
Formulapart3 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$Q$1:$Q$22788"
Formulapart4 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$H$1:$H$22788"
Formulapart5 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$M$1:$M$22788"
Formulapart6 = "'\\common-fs-01\supervisors\resource optimization\resourcing tables 2019\[queries_all_v2.xlsx]sheet1'!$A$1:$U$1"
With wb.Worksheets(1).Range("G4")
.FormulaArray = Formulapart1
.Replace "11111", Formulapart2
.Replace "22222", Formulapart3
.Replace "33333", Formulapart4
.Replace "44444", Formulapart5
.Replace "55555", Formulapart6
End With
希望这可以帮助。
推荐阅读
- linux - Kubernetes 上的 Nginx(99:无法分配请求的地址)
- ios - 了解使用 AutoLayout/UIScrollView 设置约束时的 UIView 高度
- php - 获取非对象属性失败
- matlab - MATLAB - 绘制按类别分组的多个直方图
- python-3.x - 从文本文件在 Python 中创建嵌套字典
- python - 如何在 tkinter 中的循环中显示网格中的图像
- c# - C# asp.net cclick 事件触发两次
- javascript - TinyMCE 5:禁用编辑器但允许复制文本
- intellij-idea - 使用 defresource 时无法解析 Arg
- c# - C# - InitializeComponent 的问题