[英]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.关于使用数组变量将某些公式复制到多个范围的方法有何建议?
先感谢您。
似乎您在Excel
的VBA
发现了一个错误。 另一方面,如果我们在尼特采摘模式下读取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.