繁体   English   中英

VBA公式复制到多个单元格

[英]vba copy formula to multiple cells

我知道使用“ .PasteSpecial xlPasteFormulas”或“ range.AutoFill”的方法,但是我尝试找到一种使用数组变量的方法。

我想将范围C4:D4中的公式复制到具有多个范围的范围C7:D11中。

C4 = A4+B4
D4 = Average(A4:C4)

所以我做了一个这样的VBA脚本。

Sub test()
Dim  v
v = Range("C4:D4").FormulaR1C1
Range("C7:D11").FormulaR1C1 = v
End Sub

运行vba之后,c7和d7中的公式就像我期望的那样。

c7 = a7 + b7
d7 = average(A7:C7)

但是其他细胞的配方很奇怪

c8 = a9 + b9
d8 = average(A9:C9)
c9 = a11 + b11
d9 = average(A11:C11)

等等.....

我的问题是:1.为什么会这样? 2.关于使用数组变量将某些公式复制到多个范围的方法有何建议?

先感谢您。

似乎您在ExcelVBA发现了一个错误。 另一方面,如果我们在尼特采摘模式下读取Range.FormulaR1C1属性(Excel) ,则在

设置多单元格范围的公式将使用公式填充该范围内的所有单元格。

“公式”也可以理解为“ 一个公式”。 从来没有说过我们可以设置一个多单元格范围的多个公式。

因此,唯一的方法似乎分两部分进行:

Sub test()
 Dim v As Variant
 v = Range("C4").FormulaR1C1
 Range("C7:C11").FormulaR1C1 = v
 v = Range("D4").FormulaR1C1
 Range("D7:D11").FormulaR1C1 = v
End Sub

这仍然比通过剪贴板使用复制/粘贴或使用循环设置公式要快。

似乎excel会在C7:D7中将公式的选定范围增加1并从0开始,这就是为什么这些正确显示的原因。

我认为您可以通过以下方法解决此问题:

for x = 7 To 11 
    Cells(x, 3).FormulaR1C1 = Range("C4").FormulaR1C1
    Cells(x, 4).FormulaR1C1 = Range("D4").FormulaR1C1
next x

如果这不起作用,您可以尝试在vba代码中编写公式。

例:

for x = 7 To 11 
Cells(x, 3).value = Cells(x, 2).value + Cells(x, 1).value
Cells(x, 4).value = (Cells(x, 3).value + Cells(x, 2).value + Cells(x, 1).value)/3
next x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM