web-dev-qa-db-ja.com

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

私の問題の単純化されたバージョンは、Sheet2と呼ばれる別のシートに平均化したいデータがあることです。

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

上記のコードが使用されている場所に応じて、列Aを別の文字、たとえば列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!の横にある関数を使用するにはどうすればよいですか?

3
litmus

あなたは間接的に使うことができます:

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

3
Máté Juhász

OFFSETとINDIRECTは揮発性であり、INDEXを使用できます

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

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

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

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

これが1つの方法です:

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

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

3