数式を使用して範囲を定義する

数式を使用して範囲を定義する

私の問題を簡略化すると、別のシートにSheet2平均化したいデータがあるということです。

=AVERAGE(Sheet2!$A$1:Sheet2!$A$100)

上記のコードが使用される場所に応じて、 column をA別の文字 (たとえば、 column ) に交換する必要がありますD。これを行うには、次の関数を作成しました。

=MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)

出力は次のようになりますD

私の問題は、次のように書く代わりに、

=AVERAGE(Sheet2!$D$1:Sheet2!$D$100)

使用したいもの:

=AVERAGE(Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$1:Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$100)

しかし、Excel はこれを受け入れません。 の横にある関数をどのように使用すればよいでしょうかSheet2!?

答え1

INDIRECT を使用できます:

=AVERAGE(INDIRECT ("Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$1:Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$100"))

答え2

OFFSETとINDIRECTは揮発性なのでINDEXを使用できる。

=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,4))

0INDEX にすべての行を返すように指示し、は44 番目の列です。したがって、列 4 の 1 から 100 までのすべての行が平均化されます。

あなたのコメントによると:

=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,(COLUMN(A:A)-1)*3))

答え3

一つの方法は次のとおりです。

=AVERAGE(OFFSET(Sheet2!$A:$A,0,(COLUMN()-1)*3))

OFFSET揮発性があり、ワークブックの計算負荷が増加することに注意してください。

関連情報