我当前的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)"
任何人都可以帮助我理解为什么会出现此错误?感谢。
答案 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)"