私の問題の単純化されたバージョンは、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!
の横にある関数を使用するにはどうすればよいですか?
あなたは間接的に使うことができます:
=AVERAGE(INDIRECT ("Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$1:Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$100"))
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))
これが1つの方法です:
=AVERAGE(OFFSET(Sheet2!$A:$A,0,(COLUMN()-1)*3))
OFFSET
は揮発性であり、ブックの計算負荷が増加することに注意してください