Array中的变量返回"无法设置Range类的FormulaArray属性"

时间:2018-04-05 17:44:45

标签: arrays excel vba variables

我当前的vba中有一个部分在数组公式中经过10000行,并且在另一个选项卡的表中,它将基于其位置的单元格值放置到带衬里的标题...代码如下所示:

Selection.FormulaArray = _
    "=INDEX('Sheet1'!R1C1:R10000C2,SMALL(IF(ISNUMBER(SEARCH(""*__________*"",'Sheet1'!R1C1:R10000C2)),ROW('Sheet1'!R1C1:R10000C2)),ROW(R[-8]))+1,1)"

这个标题的标题长度在数据之间变化,这就是为什么我必须做'包含' vs.' equals'。这对我有用,但运行需要一段时间,我希望减少运行时间。当我将数据复制到Sheet1时,大多数情况下,它远远少于10000行(但我需要它高一些数据)。我试图在UsedRange中使用变量,但是当我把它放在数组公式中时,我在标题中得到了错误。这是我的变量代码:

Dim LR As Long
LR = Worksheets("Sheet1").UsedRange.Rows.Count

Selection.FormulaArray = _
    "=INDEX('Sheet1'!R1C1:R1C2 & LR,SMALL(IF(ISNUMBER(SEARCH(""*__________*"",'Sheet1'!R1C1:R1C2 & LR)),ROW('Sheet1'!R1C1:R1C2 & LR)),ROW(R[-8]))+1,1)"

任何人都可以帮助我理解为什么会出现此错误?感谢。

1 个答案:

答案 0 :(得分:1)

每当你使用LR作为对最后一行的引用时,你需要"。{/ p>

另外,您刚刚将LR放在最后,需要将常量"R10000C2"替换为"R" & LR & "C2"

Selection.FormulaArray = _
    "=INDEX('Sheet1'!R1C1:R" & LR & "C2 ,SMALL(IF(ISNUMBER(SEARCH(""*__________*"",'Sheet1'!R1C1:R" & LR & "C2)),ROW('Sheet1'!R1C1:R" & LR & "C2)),ROW(R[-8]))+1,1)"