我正在尝试将ArrayFormula应用于过滤范围 - 即向过滤集rng
中的每个单元格添加2并将结果粘贴到rng2
的相邻单元格中 - 如下所示:
Set rng = Range("M2:M" & Cells(Rows.Count, "M").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
Set rng2 = rng.Offset(0, 1)
rng2.FormulaArray = "=" & rng.Address & "+ 2"
这会出错 “无法设置Range类的FormulaArray属性”
表示字符串太长(大于255)。
rng.Address
是
$M$28,$M$480,$M$874:$M$875,$M$889,$M$1111,$M$1302,$M$1410,$M$1413:$M$1415,$M$1994,$M$2319,$M$2322:$M$2323,$M$2327:$M$2329,$M$2385,$M$2884,$M$3049,$M$3130,$M$3192,$M$3242,$M$3287:$M$3288,$M$3406,$M$3418,$M$3423,$M$3610,$M$4001,$M$4008,$M$4104,$M$4145,$M$4374
我看过一些使用替换公式的帖子,但这可能是另一种情况:
rng
将在for循环的每次迭代中更改,因为应用了不同的过滤器
rng.address
方法无法捕获所有单元格:我可以在过滤后的Excel中看到$M$4374
之后,此范围内有更多单元格。我使用MsgBox(rng.address)
查看该范围内的所有单元格...有没有办法查看该范围内的所有单元格,或者rng.address
是否有字符上限?
答案 0 :(得分:0)
这解决了不使用ArrayFormula
的问题Set rng = Range("M2:M" & Cells(Rows.Count, "M").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
Set rng2 = rng.Offset(0, 1)
rng2.FormulaR1C1 = "= RC[-1] + 2"