数式をコピーするときに参照を倍数でインクリメントする(Microsoft Excel)
ティムは、セルB1に数式= SUM(A1:A7)が含まれているワークシートを持っています。
彼は、この数式をコピーして範囲を7行増やし、セルB2に数式= SUM(A8:A14)が含まれ、セルB3に= SUM(A15:A21)が含まれるようにします。問題は彼がそれをコピーすると、範囲の各「終わり」は1だけ増加しますが、必要を満たすには7ずつ増加する必要があります。彼は、Excelに適切なインクリメントを実行させる方法を考えています。
コピーアンドペーストを使用してExcelに適切な増分を実行させることはできません。それはそれをしません。理由は単純です。1ずつ増やすことが公式の観点から理にかなっている場合があります。 Excelは(少なくとも次のバージョンまで:>))あなたの心を読み取ることができないので、Excelは1だけインクリメントする必要があると想定しています。
解決策は、数式を変更することです。いくつかのワークシート関数を使用して、Excelに合計に必要な範囲を作成させることができます。必要な合計を提供する式の次の例を考えてみましょう。
=SUM(INDIRECT("A" & (ROW()-1)7+1 & ":A" & (ROW()-1)7+7))
この数式をセルB1に入れると、数式が含まれている行の行番号(ROW関数によって返される)を確認するため、機能します。行1にあるため、数式はExcelによって次のように評価されます。
=SUM(INDIRECT("A" & (ROW()-1)7+1 & ":A" & (ROW()-1)7+7)) =SUM(INDIRECT("A" & (1-1)7+1 & ":A" & (1-1)7+7)) =SUM(INDIRECT("A" & 07+1 & ":A" & 07+7)) =SUM(INDIRECT("A" & 0+1 & ":A" & 0+7)) =SUM(INDIRECT("A" & 1 & ":A" & 7)) =SUM(INDIRECT("A1:A7")) =SUM(A1:A7)
B1で最終的に得られるのは、希望する合計です。 (INDIRECT関数は、文字列内の値を実際の範囲であるかのように使用します。これは、必要な値です。)数式を列にコピーすると、行番号が増加するにつれて、数式は両端で7の適切な増分を提供します。範囲の。
この手法には、使用できる他のバリエーションがあります。唯一の違いは、バリエーションが同じタスクを実行するために異なるワークシート関数を使用することです。たとえば、次のバリエーションは引き続きROW関数を使用しますが、最終的にはOFFSET関数に依存して目的の範囲を計算します。
=SUM(OFFSET(A1,((ROW()-1)6),0):OFFSET(A7,((ROW()-1)6),0))
OFFSETを使用するより短いアプローチは次のとおりです:
=SUM(OFFSET($A$1,ROW()*7-7,0,7,1))
アプローチに関係なく、実際に必要な範囲を構築するために、数式が表示される行を使用する数式を考え出すことがアイデアであることがわかります。これまでの各例では、セルB1から開始することを前提としています。セルB2から開始する場合は、開始する行を考慮して数式を変更する必要があります。これがどのように機能するかを理解するために、セルB2から始めた場合は、代わりに、このヒントに示されている3つの数式を次のように変更します。
=SUM(INDIRECT("A" & (ROW()-2)7+2 & ":A" & (ROW()-2)7+8)) =SUM(OFFSET(A2,((ROW()-2)6),0):OFFSET(A8,((ROW()-2)6),0)) =SUM(OFFSET($A$2,(ROW()-1)*7-7,0,7,1))
別の場所から始めてください。使用する数式をさらに変更する必要があります。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(8385)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link:/ excelribbon-Incrementing_References_by_Multiples_when_Copying_Formulas [数式をコピーするときに参照を倍数でインクリメントする]
。