セルA1:A3に一連の数式を含むワークシートがあるとします。セルA1には数式= Sheet1!B4が含まれ、セルA2には= Sheet1!B18が含まれ、セルA3には= Sheet1!B32が含まれます。 A4に= Sheet1!B46などが含まれるように、このパターンを列の下に続ける必要がある場合があります。

問題は、単にセルをコピーすると、パターンが継続されないことです。代わりに、数式は、ターゲットセルとソースセルの関係に基づいて調整されます。したがって、A1:A3をA4:A6に貼り付けると、A4には= Sheet1!B7が含まれますが、これは必要なものではありません。 (これは、セルをコピーして貼り付けるか、塗りつぶしハンドルをドラッグして塗りつぶすかに関係なく発生します。)

数式をコピーしている間、パターンを続行する方法はありません。代わりに、最初に数式をどのようにまとめたかを再検討する必要があります。

たとえば、次の式について考えてみます。

=INDIRECT("Sheet1!B"&((ROW()-1)*14)+4)

この数式は、数式が配置されているセルの位置に基づいて参照を作成します。この数式がセルA1に配置されている場合、ROW関数は数式が配置されている行である1を返します。

したがって、式は次のようになります。

=INDIRECT("Sheet1!B"&((1-1)*14)+4)

=INDIRECT("Sheet1!B"&(0*14)+4)

=INDIRECT("Sheet1!B"&0+4)

=INDIRECT("Sheet1!B"&4)

=INDIRECT("Sheet1!B4")

返されるのは、最初に必要だったとおり、Sheet1!B4の値です。

ただし、この数式を列にコピーすると、ROW関数は各行で異なるものを返します。事実上、ROW関数は、各数式のオフセットを前の数式から14行増やす方法になります。

今回はOFFSET関数を使用して、少し異なるアプローチを使用することもできます。

=OFFSET(Sheet1!$B$4,(ROW()-1)*14,0)

この数式は、数式が配置されている行に基づいて値を取得し(ここでも、ROW関数を使用)、セルSheet1!B4からオフセットされます。

列の最初の行に配置され、その列をコピーすると、数式は目的のパターンに従って値を返します。

別のアプローチは、目的の式を直接作成することです。次の手順に従うことで、これを行うのが最善です。

。 「Sheet1」という名前のワークシートを含むワークブックの新しい空白のワークシートから始めます。

。セルA1に、数式= Sheet1!B4を入力します。

。数式パターンは14行ごとであるため、範囲A1:A14を強調表示します。最初のセルだけに式が必要です。他の13は空白です。

。塗りつぶしハンドルをドラッグします(選択範囲の右下隅にある小さな正方形で、行数が十分にある場合は、おそらく1,000程度です。

範囲A1:A1000は引き続き強調表示されます。

。[編集] | [移動] | [特殊]を選択します。Excelに[特殊に移動]ダイアログボックスが表示されます(図1を参照)

。[空白]オプションボタンをクリックし、[OK]をクリックします。すべての空白(空)

選択したセルが選択されます。

。[編集] | [削除] | [セルを上にシフト]を選択します/

結果として、目的のパターンの数式のみが表示されます。

_ExcelTips_は、費用対効果の高いMicrosoft Excelトレーニングのソースです。

このヒント(3067)は、Microsoft Excel 97、2000、2002、および2003に適用されます。