2017-09-29 3 views
0

Es scheint, dass die Verwendung der Excel-Funktionen INDIRECT(ADDRESS(...)) und OFFSET(...) austauschbar verwendet werden kann.Excel: INDIREKT (ADRESSE (...)) vs. OFFSET (...)

Zum Beispiel die beiden folgenden Formeln zurückgeben das gleiche Ergebnis zu einer absoluten Referenz:

= INDIRECT(ADDRESS(1,1)) 

= OFFSET(<current cell>,1-ROW(),1-COLUMN()) 

Und in ähnlicher Weise die nächsten beiden Formeln das gleiche Ergebnis zu einer relativen Referenz zurückzukehren (in diesem Fall zum Beispiel diese Formeln Rückgabewert, was unterhalb dieser Zelle mit der Formel in der Zelle):

= OFFSET(<current cell>,1,0) 

= INDIRECT(ADDRESS(ROW()+1,COLUMN())) 

Meine Fragen sind: ist eine Methode immer über die andere bevorzugt? Es scheint mir, dass INDIRECT(ADDRESS(...)) sich für mehr absolute Typreferenzen eignet und OFFSET(...) sich für relativere Typreferenzen eignet, aber wie oben gezeigt, könnte jede Methode verwendet werden, um beide Arten von Referenzen zu erreichen. Oder gibt es eine völlig andere Alternative zur Verwendung dieser beiden Funktionen, die beiden Optionen überlegen ist?

Antwort

5

Beide sind nicht bevorzugt, da beide flüchtige Funktionen sind und zu viele von ihnen die Calc-Zeiten beeinflussen.

Die flüchtige Funktion wird bei jeder Neuberechnung der Anwendung neu berechnet, auch wenn sich die zugrunde liegenden Daten nicht geändert haben.

Verwendung INDEX stattdessen ist es nicht flüchtig:

=INDEX($1:$1048576,ROW()+1,COLUMN()) 

Dies wird nur recalc, wenn die Daten, auf denen sie Änderungen beziehen.

Verwenden Sie INDIRECT nur, wenn das Blatt die Variable ist.

OFFSET kann fast immer mit INDEX ersetzt werden.

+0

Natürlich ist '$ 1: $ 1048576' das ganze Arbeitsblatt, also ist der Vorteil etwas begrenzt. Immer noch besser als * jede Änderung in einem Arbeitsblatt in einer Arbeitsmappe *, aber nicht so vorteilhaft wie die Beschränkung auf eine einzelne Spalte oder Zeile. – Jeeped

+0

@Scott Danke. Wenn das Blatt selbst die Variable ist, würde ich denken, dass "INDIREKT" immer noch auf Kosten der Formel vermieden werden könnte. Z.B. '= IF (, INDEX (Blatt1! $ 1: $ 1048576, ...), INDEX (Blatt2! $ 1: 1048576, ...))'. Ist das richtig? – ImaginaryHuman072889

+0

@Peter Ich dachte mehr entlang der Linien, da das Arbeitsblatt eine Variable ist, die in einer Zelle ist. Wenn Sie viele Blätter verschachtelt haben, würde ifs zu lang werden. –