绕过数组公式VBA的字符限制

时间:2018-05-21 03:17:51

标签: vba excel-vba excel

如何绕过/缩小此数组公式的字符?
        Dim ulr As Long

   With Worksheets("Usages")
   ulr = .Cells(.Rows.Count, "B").End(xlUp).Row
   End With

    Range("AP2").FormulaArray = _
   "=IFERROR(INDEX('Usages'!A2:G " & ulr & ",MATCH(1,('Usages'!F2:F " & ulr & "=""No"")*('Usages'!C2:C " & ulr & "=N2)*('Usages'!D2:D " & ulr & "<=AO2)*('Usages'!E2:E " & ulr & ">=AO2),0),2),""Not Found"")"

1 个答案:

答案 0 :(得分:0)

对于这种特殊情况,在附加字符串之前删除多余的间距可以解决问题。改变这个:

"=IFERROR(INDEX('Usages'!A2:G " & ulr & ",MATCH(1,('Usages'!F2:F " & ulr & "=""No"")*('Usages'!C2:C " & ulr & "=N2)*('Usages'!D2:D " & ulr & "<=AO2)*('Usages'!E2:E " & ulr & ">=AO2),0),2),""Not Found"")"

到此:

"=IFERROR(INDEX('Usages'!A2:G" & ulr & ",MATCH(1,('Usages'!F2:F" & ulr & "=""No"")*('Usages'!C2:C" & ulr & "=N2)*('Usages'!D2:D" & ulr & "<=AO2)*('Usages'!E2:E" & ulr & ">=AO2),0),2),""Not Found"")"

<强>推理:

使用硬编码值而不是变量时没有问题。但是,ulr变量可能与先前硬编码的值相同。最终字符串值的长度不应该有任何不同。由于字母和数字之间的间距过大而导致出现问题,或者行号足够大,导致最终字符串太长,并且添加了额外的空格。

我倾向于认为问题是由前者引起的(假设为ulr = 10000,最终的字符串长度大约为165个字符)。但是,如果它是由后者引起的,那么如果行数增加到足以在计数中添加另一个数字,则会再次出现问题。