excel - 使用相对参考将公式从 [1,X] 范围复制到 [Y,X] 范围
问题描述
我有两个命名范围,Source
G3:M3 和Target
G8:M10。
Source
包含一个引用同一行范围之外的单元格的公式。我想把它复制到目标范围内,如图。
我写了以下例程
Sub CopyFormulas()
TargetRangeName = "Target"
SourceRangeName = "Source"
Range(TargetRangeName).Clear
Range(TargetRangeName).Formula = Range(SourceRangeName).Formula
End Sub
公式在范围内被复制,但相对引用没有正确修改,得到如图所示的结果。
相对引用从第 3 行开始,而不是从范围的第一行开始Target
。
一些不适用于我的解决方案:
- 复制和粘贴会产生正确的结果,但是这个例程要重复数千次,因此性能至关重要,使用赋值的性能提升是 10 倍
- 更改公式以使参考位于正确的位置,这是不适用的,因为我正在处理一个大型、复杂和旧的文件,其中更改数百个公式是不可行的,并且
Target
可能会更改相对于Source
解决方案
您可以通过设置.FormulaR1C1
属性而不是属性来执行此操作.Formula
。像这样:
Public Sub ClientCode()
Dim srcRng As Range
Dim tarRng As Range
Set srcRng = Range("Source")
Set tarRng = Range("Target")
tarRng.Formula2R1C1 = srcRng(1).Formula2R1C1
End Sub
.FormulaR1C1
维护相对引用
推荐阅读
- reactjs - create-react-app:没有使用 create-react-app 错误/启动脚本提供的模板(即使在删除全局安装的 create-react-app 之后)
- linux - 从目录中的文本文件创建新文件并插入文本
- list - Ansible根据其他项目列表创建项目列表
- angular6 - 如何使用复选框实现 p-autocomplete?
- mysql - sql文件无法验证多个存储过程
- python - WARNING:tensorflow:Layer my_model 将输入张量从 dtype float64 转换为 layer 的 float32 dtype,这是 TensorFlow 2 中的新行为
- jquery - 浏览器 XMLHttpRequest 中的 Jquery 问题?
- sqlite - SQLite 从表中删除未选择的行
- node.js - Mongoose 无法连接到 Mlab
- opengl - OpenGL 无绑定纹理和无缝立方体贴图过滤