【发布时间】:2018-11-21 21:14:16
【问题描述】:
我有一个表,我试图根据多个条件从中检索数据。我为此使用索引匹配。如果我手动将公式粘贴到 excel 中,它适用于以下两种情况。
首先我使用索引匹配公式中原始表中的完整列范围输入数组公式
Selection.FormulaArray = _
"=IF(ISNA((INDEX(Data!C2:C8,MATCH(1,(Data!C2=RC2)*(Data!C3=RC3)*(Data!C4=R3C)*(Data!C5=R4C),0),4))),""F"",(INDEX(Data!C2:C8,MATCH(1,(Data!C2=RC2)*(Data!C3=RC3)*(Data!C4=R3C)*(Data!C5=R4C),0),4)=R4C))"
这很有效,但对于大数据来说运行速度非常慢。因此,我修改了表格中特定范围的公式,例如30000 行。当我在 excel 中手动输入行和列引用时,这有效,这也大大减少了处理时间。但是当我尝试使用 R1C1 样式通过 VBA 中的代码使用它时会引发错误。以下是范围为 40000 行的代码示例
Selection.FormulaArray = _
"=IF(ISNA((INDEX(Data!R2C2:R40000C8,MATCH(1,(Data!R2C2:R40000C2=R[-1]C2)*(Data!R2C3:R40000C3=R[-1]C3)*(Data!R2C4:R40000C4=R3C)*(Data!R2C5:R40000C5=R4C),0),4))),""F"",(INDEX(Data!R2C2:R40000C8,MATCH(1,(Data!R2C2:R40000C2=R[-1]C2)*(Data!R2C3:R40000C3=R[-1]C3)*(Data!R2C4:R40000C4=R3C)*(Data!R2C5:R40000C5=R4C),0),4)=R4C))"
显示的错误是
“运行时错误 1004。无法设置公式数组属性 范围类。”
我觉得这个错误是由于应该如何输入的语法风格造成的。 提前感谢您的支持
【问题讨论】:
标签: arrays vba indexing match multiple-columns