[英]Copy formula from [1,X] range to [Y,X] range with relative reference
我有兩個命名范圍, 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
范圍的第一行開始。
一些不適用於我的情況的解決方案:
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
維護相對引用
您的宏正在復制字符串,本質上是一個事實上的絕對引用。 如果您從編輯欄中手動復制公式並將其粘貼到另一個單元格中,您將獲得相同的行為。
您說這是一個“大而復雜的舊文件,其中更改數百個公式是不可行的,並且 Target 可能會更改位置”,但您不想使用Copy
。 討厭把它打破給你,你不能同時擁有它。 要么更新源,要么復制它。
Range(SourceRangeName).Copy Range (TargetRangeNamw)
您可能可以通過刪除Range.Clear
來節省一些 CPU 周期,但這可能並不是真正必要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.