VBA:在非连续范围内选择整个列

时间:2016-02-12 16:32:37

标签: vba range

我老实说谷歌搜索但没有运气。

我有一个范围,让我们说

dim rng1 as range, rng2 as range, rng3 as range
set rng1 = "A1:F4"
set rng2 = "A6:F9"
set rng3 = union( rng1, rng2 )

现在我想在该范围内的所有单元格中输入公式=sum(1+1),这些单元格位于该范围的第3列中,因此 C1:C4 = sum(1+1), C6:C9 = sum(1+1)

当我这样做时

rng1.columns(3).formula = "=sum(1+1)"

vba仅输入C1:C4中的公式。我想这是因为我的范围是不连续的。有没有办法让它保持一条线并完成任务?

到目前为止,我通过类似

的方式进行管理
dim i as integer
dim arr1(0 to 1) as range
arr1(0) = rng1
arr1(1) = rng2
for i = 0 to ubound(arr1)
    arr1(i).column(3).formula = "=sum(1+1)"
next i

我没有通过Intersect尝试一种可能的解决方法,这是

rng4 = intersect( range("A1:F9"), rng3)
rng4.formula = "=sum(1+1)"

但是我怀疑它会起作用,因为rng将是另一个不连续的范围。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试添加此行:

Application.Intersect(rng3, rng3.Worksheet.Columns(3)).Formula = "=sum(1+1)"