Führt die Excel-IF-Anweisung zu einer schnelleren Berechnung als mit IFERROR?

3039
Scheballs

Mein Szenario ist, dass ich ein Stylesheet "Dashboard" habe, das Daten aus einer großen Tabelle anhand der Zelle in Spalte B sucht, die sich immer links davon befindet. Die Zelle in Spalte B enthält eine Array-Formel INDEX, MATCH, IF, um eindeutige Namen aus der Tabelle zu ziehen, in der die "Gruppe" ausgewählt ist. Diese Liste wird nach unten und nach einer Auswahlliste der verschiedenen "Gruppen" -Auswahlen gefüllt. Es können bis zu 20 Namen basierend auf der "Gruppe" zurückgegeben werden.

Ich habe 17 Zellen mit Formeln auf der rechten Seite, die alle einen Fehler zurückgeben könnten, wenn die Daten nicht vorhanden sind. Ich habe ihnen also eine IFERROR()Aussage vorangestellt . Meine Frage ist, wenn ich ihnen eine IF()Aussage voranstellen würde, würde dies die Berechnungen beschleunigen, da die IF-Anweisung lesen würde, wenn True dann leer wäre, wenn false die Formel berechnen würde.

Logisch scheint es mir so, aber ich wollte wissen, ob einer von euch das gleiche Gefühl hat. Vielen Dank. Vielleicht ist dies eher eine Metadiskussion.

ps Hier ist eine von 9 der komplexesten Formeln, die ich verwende.

=IFERROR((SUMIFS(INDIRECT("tblData["&N$7&" Top Box Num]"),INDIRECT("tblData["&$B$7&"]"),$B$16,INDIRECT("tblData[Date]"),">="&$C$5,INDIRECT("tblData[Date]"),"<="&$D$5))/(SUMIFS(INDIRECT("tblData["&N$7&" Den]"),INDIRECT("tblData["&$B$7&"]"),$B$16,INDIRECT("tblData[Date]"),">="&$C$5,INDIRECT("tblData[Date]"),"<="&$D$5)),"")

Ist die obige Formel langsamer als die unten stehende Formel, wenn "True" ist?

=IF(OR($C$16=0,C16=""),"",(SUMIFS(INDIRECT("tblData["&N$7&" Top Box Num]"),INDIRECT("tblData["&$B$7&"]"),$B$16,INDIRECT("tblData[Date]"),">="&$C$5,INDIRECT("tblData[Date]"),"<="&$D$5))/(SUMIFS(INDIRECT("tblData["&N$7&" Den]"),INDIRECT("tblData["&$B$7&"]"),$B$16,INDIRECT("tblData[Date]"),">="&$C$5,INDIRECT("tblData[Date]"),"<="&$D$5)))

Die Formeln addieren im Wesentlichen die Zählerwerte und dividieren diese durch die Nennerwerte, bei denen die Bedingungen zutreffen, aus einer 20.000-Zeilentabelle und geben eine Prozentbewertung zurück.

1

1 Antwort auf die Frage

2
pnuts

= WENN 'Kurzschluss' macht, aber zur Beschleunigung der Leistung würde ich http://msdn.microsoft.com/de-de/library/office/aa730921%28v=office.12%29.aspx vorschlagen . Enthält ein Makro für das Timing. = INDIRECT scheint Aufmerksamkeit zu verdienen.

Dank pnuts hat das Makro "MICROTIME" wirklich geholfen. Es stellte sich heraus, dass ich zwei Array-Formeln hatte, deren Ausführung 1,5 Sekunden dauerte. Ich habe herausgefunden, wie man sie zum Arbeiten bringt, ohne ein Array zu sein, und jetzt dauert es 0,5 Sekunden. Reduziere meine Gesamtkalkzeit von 2 Sekunden auf 0,5 Sekunden. Vielen Dank! Scheballs vor 10 Jahren 1
@Scheballs TQ. Es tut uns leid, es ist keine definitivere Antwort, aber wie Sie im Artikel sehen können, gibt es einfach zu viele Variablen, um zwei beliebige Versionen einer Formel zu verwenden und zuversichtlich zu sagen, dass dies schneller sein wird - ein Hinweis auf "wahrscheinlich" ist das am besten ohne spezifische Tests. pnuts vor 10 Jahren 0