Eine vereinfachte Version meines Problems besteht darin, dass Sheet2
ich auf einem anderen Blatt Daten habe, die ich mitteln möchte:
=AVERAGE(Sheet2!$A$1:Sheet2!$A$100)
Je nachdem, wo der obige Code verwendet wird, muss ich column A
durch einen anderen Buchstaben ersetzen, zum Beispiel column D
. Dazu habe ich eine Funktion erstellt:
=MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)
das gibt aus D
.
Mein Problem ist, dass ich nicht Folgendes schreiben muss:
=AVERAGE(Sheet2!$D$1:Sheet2!$D$100)
Ich möchte benutzen:
=AVERAGE(Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$1:Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$100)
aber Excel akzeptiert dies nicht. Wie kann ich Funktionen neben verwenden Sheet2!
?
Antwort1
Sie können INDIRECT verwenden:
=AVERAGE(INDIRECT ("Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$1:Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$100"))
Antwort2
OFFSET und INDIRECT sind volatil, wir können INDEX verwenden
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,4))
Das 0
weist den INDEX an, alle Zeilen zurückzugeben, und das 4
ist die 4. Spalte. Daher werden alle Zeilen von 1 bis 100 in Spalte 4 gemittelt.
Gemäß Ihren Kommentaren:
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,(COLUMN(A:A)-1)*3))
Antwort3
Hier ist eine Möglichkeit:
=AVERAGE(OFFSET(Sheet2!$A:$A,0,(COLUMN()-1)*3))
Beachten Sie, dass OFFSET
es volatil ist und die Berechnungslast in Ihrer Arbeitsmappe erhöht