vba - 在 Excel VBA 中插入数组公式
问题描述
我记录了数组公式以便放入VBA。这是我录制后的内容。但是,当我运行宏时,它不起作用。
会是因为负号吗?
从宏
Range("D3").FormulaArray = "=IFERROR(INDEX('RMS
Maint'!R1C[-2]:R3542C[-2],SMALL(IF(('RMS Maint'!R2C27:R3542C27=R1C2)*('RMS
Maint'!R2C13:R3542C13=R2C4)*('RMS Maint'!R2C21:R3542C21=""Late"")*ROW('RMS
Maint'!R2C1:R3542C1)=0,"""",('RMS Maint'!R2C27:R3542C27=R1C2)*('RMS
Maint'!R2C13:R3542C13=R2C4)*('RMS Maint'!R2C21:R3542C21=""Late"")*ROW('RMS
Maint'!R2C1:R3542C1)),ROW('RMS Maint'!R[-2]:R[3538])),1),"""")"
来自 Excel 公式
=IFERROR(INDEX('RMS Maint'!C$1:C$3542,SMALL(IF(('RMS
Maint'!$AA$2:$AA$3542=$B$1)*('RMS Maint'!$M$2:$M$3542=$D$2)*('RMS
Maint'!$U$2:$U$3542="Late")*ROW('RMS Maint'!$A$2:$A$3542)=0,"",('RMS
Maint'!$AA$2:$AA$3542=$B$1)*('RMS Maint'!$M$2:$M$3542=$D$2)*('RMS
Maint'!$U$2:$U$3542="Late")*ROW('RMS Maint'!$A$2:$A$3542)),ROW('RMS
Maint'!1:3541)),1),"")
错误为1004 - 无法设置 Range 类的 FormulaArray 属性
我很抱歉代码格式。看起来很可怕。
解决方案
或者您可以将长公式分成几部分,最后用下面的实际公式替换它......
Dim LogicalTest As String, FalseValue As String
LogicalTest = "('RMS Maint'!$AA$2:$AA$3542=$B$1)*('RMS Maint'!$M$2:$M$3542=$D$2)*('RMS Maint'!$U$2:$U$3542=""Late"")*ROW('RMS Maint'!$A$2:$A$3542)=0"
FalseValue = "('RMS Maint'!$AA$2:$AA$3542=$B$1)*('RMS Maint'!$M$2:$M$3542=$D$2)*('RMS Maint'!$U$2:$U$3542=""Late"")*ROW('RMS Maint'!$A$2:$A$3542)"
Range("D3").FormulaArray = "=IFERROR(INDEX('RMS Maint'!C$1:C$3542,SMALL(IF(""LogicalTest"","""",""FalseValue""),ROW('RMS Maint'!1:3541)),1),"""")"
Range("D3").Replace """LogicalTest""", LogicalTest, LookAt:=xlPart
Range("D3").Replace """FalseValue""", FalseValue, LookAt:=xlPart
推荐阅读
- php - 如何在codeigniter中设置自定义配置类的项目值?
- direct3d - Direct3D 着色器内部编译器错误 X8000:无效字节码
- pilosa - 如何在没有完整架构的情况下列出 pilosa 中的索引名称
- python - 如何使用包装类的对象作为包装函数中的参数
- mysql - 如何为每个第一次出现的列值获取行
- python-3.x - 在循环python中解析大型XML
- mongodb - 在 MongoDB 中允许 SSL 有效证书/无效主机名
- google-bigquery - 从 BigQuery SQL 中的日期获取 MONTH NAME
- php - 找不到类“PHPExcel_Worksheet_Protection”
- amazon-dynamodb - 如何为分层模型选择分区和排序键