相対ワークシート参照(Microsoft Excel)
Sheet1、Sheet2、Sheet3の3つのワークシートを含むブックがあるとします。ワークシートSheet2の列A1には、数式= Sheet1!A1があります。その数式をSheet2からSheet3のセルA1にコピーしても、数式は引き続きSheet1を参照します。しかし、どうしてそれができるのでしょうか?セル参照のように、Excelがシート参照を調整しないのはなぜですか?
名前付き範囲と同様に、Excelはワークシート名を絶対値として扱います。各ワークシートオブジェクトは、ワークブック内の他のすべてのワークシートから独立しています。
シート参照を含む数式を貼り付けると、そのシート参照は貼り付けられた内容に変更されません。
できることがいくつかあります。 1つは、貼り付けた後で数式参照を変更して、正しいシートを参照するようにすることです。変更する数式が多数ある場合は、ターゲットワークシートのすべての数式を選択し(F5 |特殊|数式)、[検索と置換]を使用して元のワークシート名(Sheet1)を置き換えることができます
正しいワークシート名(Sheet2)を使用します。
参照のニーズが複雑でない場合は、マクロアプローチを使用できます。たとえば、特定のセルの数式で現在のシートの前のシートのセルを参照する場合は、マクロで簡単に行うことができます。次のマクロについて考えてみます。
Function PrevSheet(rCell As Range) Application.Volatile Dim i As Integer i = rCell.Cells(1).Parent.Index PrevSheet = Sheets(i - 1).Range(rCell.Address) End Function
マクロは現在のワークシートを調べてから、その前にあるワークシートを特定します。次に、そのワークシートの参照が作成されます。
PrevSheetマクロを作成したら、セルで関数を使用する1つの方法を次に示します。
=PrevSheet(A1)
これにより、前のワークシートのセルA1の値が返されます。 Sheet1、Sheet2、およびSheet3があり、Sheet3でこの数式を使用すると、Sheet2!A1の値が返されます。前のシートがワークブックの最初のシートであるか、ワークシートではない場合、関数は#Valueエラーを返します。
後でこの数式を別のシート(たとえばシート5)にコピーすると、新しい場所を基準にして値がプルアップされます。つまり、Sheet4!A1から値がプルアップされます。
シート名を含めることもでき、関数は問題なく機能します:
=PrevSheet(Sheet3!A5)
sheet2はSheet3の前のシートであるため、このバージョンは常にSheet2!A5を返します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3088)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。