我知道使用“.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 property (Excel)在挑剔模式然后在
Setting the formula of a multiple-cell range fills all cells in the range with the formula.
“公式”也可以读作“ 一个 公式”。从来没有人告诉过我们可以设置多个单元格区域的多个公式。
因此,唯一的方法似乎是分两部分进行:
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
这仍然应该比通过剪贴板使用复制/粘贴或使用循环设置公式更快。
关于arrays - vba将公式复制到多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992878/