![シートとセル参照のコピー](https://rvso.com/image/1692549/%E3%82%B7%E3%83%BC%E3%83%88%E3%81%A8%E3%82%BB%E3%83%AB%E5%8F%82%E7%85%A7%E3%81%AE%E3%82%B3%E3%83%94%E3%83%BC.png)
同じワークブック内に「シート A」と「シート B」があるとします。
シート B にはシート "A" を参照するセルがあります (つまり ='シート A ')。Q20
シート B をコピーして同じブックに「シート C」を作成し、シート C のセル参照 (='シート A '!Q20) がシート B を参照するようにします。つまり、='シート B '!Q20 です。
シート B をコピーしてシート C を作成すると、セル参照は ='シート A ' のままです。Q20
同様の問題に対する解決策を見たことがありますが、同じワークブック内でシートをコピーする場合は見つかりませんでした。
ティア
答え1
答え2
ofs
現在のワークシートから位置が移動されたワークシートの名前を返す単純な UDF を定義することもできます。
Function sh(ofs As Long) As String
Dim cw As Long
cw = Application.Caller.Parent.Index
sh = Worksheets(cw + ofs).Name
End Function
前のワークシートの名前はsh(-1)
、次のワークシートの名前は になりますsh(1)
。これで、数式を使用して前のワークシートの
セルを参照できます。Q20
=INDIRECT("'"&sh(-1)&"'!Q20")
または
=INDIRECT(ADDRESS(20,17,,,sh(-1)))