Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1520to1524
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wenn und Wahl in der Bedingen Formatierung

Wenn und Wahl in der Bedingen Formatierung
07.11.2016 22:42:29
Daniel
Hallo
Fortsetzung von hier https://www.herber.de/forum/archiv/1520to1524/t1522471.htm#1523227
da es sich ja herausgestellt hat, dass die Formel in der Bedingungsprüfung von WENN- und WAHL dafür entscheidend ist, ob alle Folge-Parameter oder nur der von der Prüfung ermittelte Parameter berechnet wird, habe ich noch ein wenig mit verschiedenen Prüfungsformeln experimentiert und es zeigt sich, dass die entscheidende Funktion die Funktion Zeile() ist.
dh sobald die Prüfungsformel die Funktion Zeile() enthält, werden alle Folgeparameter berechnet, auch wenn diese Funktion nur in einer einfachen Addtion eingesetzt wird.
hier die Beispieldatei: https://www.herber.de/bbs/user/109262.xlsm
in Spalte B stehen die Bedingten Formatierungen.
durch Eingabe eines Wertes in G1 könnend diese neu berechnet werden (alle Formeln referenzieren auf diese Zelle.
Nach klick auf den Button wird dann in Spalte G angezeigt, wie oft die jeweiligen Formelteile berechnet wurden.
(die Zählung erfolgt für jede Zelle getrennt und jeden Parameterteil getrennt)
Wurde ein Formelteil nicht berechnet, so ist die Anzahl 0
wurden alle Formelteile berechnet, so muss bei allen Formelteilen die gleiche Anzahl stehen (wobei WENN natürlich keinen 3. Folgeparameter hat und daher dieser immer 0 ist)
Ein plausibler Grund, warum ausgerechnet Zeile() die Berechnung aller Folgeparameter auslösen sollte, fällt mir so spontan nicht ein, ich würde da einen Bug vermuten.
Gruß Daniel

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das ist kein 'Bug', sondern schon immer so, ...
07.11.2016 23:51:44
Luc:-?
…Daniel; ;-)
um den Grund festzustellen, musst du nur mal in den FktsAssi sehen → das Ergebnis von ZEILE (und SPALTE) ist immer ein Datenfeld (mit nur einem Element). Das ist dann bei allen (evtl nur vielen) Fktt, denen ein solches Argument mitgegeben wird, auch so. Dadurch wdn manche Fmln negativ beeinflusst. Da ich das verhindern wollte, hatte ich schon vor 12 oder gar 13 Jahren eine eigene UDF mit analoger Ermittlung, bei der das aber nicht so ist, geschrieben. Inzwischen benötige ich die aber kaum mal. Aber hierfür könnte ich sie reaktivieren, um zu sehen, ob es nur daran liegt.
Gruß, Luc :-?
PS: Wie kommst du darauf, dass man im alten Thread nicht mehr antworten könnte? Kann man, aber das würde wohl kein aktuelles Interesse hervor- und somit evtl auch andere zur Diskussion rufen… ;-]
Anzeige
Einen Einzelwert als Datenfeld auszugeben
08.11.2016 00:25:11
Daniel
ist meiner Ansicht nach ein Fehler, vor allem dann, wenn dadurch unterschiedliche und damit unnötige Berechnungen angestoßen werden.
Gruß Daniel
Als Xl konzipiert wurde, gab's noch keine ...
08.11.2016 02:09:47
Luc:-?
…BedingtFormatierung, Daniel,
und die meisten XlFktt tolerieren das, weil sie (oder mitunter nur die XlSteuerung) ohnehin Datenfelder verarbeiten können (etliche meiner damaligen UDFs nicht). Der Pgmmierer konnte sich folglich die Mühe sparen, ein (Ergebnis-)Datenfeld darauf zu untersuchen, ob es nur aus einem Element besteht. Das müsste sonst gemacht wdn, weil die beiden Fktt auch ZellBereiche akzeptieren und somit als aktive Komponente von MatrixFmln einsetzbar sind. Außerdem kann so etwas auch Vorteile haben, weil man in Fällen, in denen zwingend ein Array erwartet wird, dieses nicht erst erzeugen muss.
Ja, und dann hat Franz dankenswerterweise noch einige andere Features dieser Fktt aufgeführt, die auch das von dir genannte „Phänomen“ als absichtlich erscheinen lassen.
Aus diesem 1elementigen Datenfeld kann dann (per XlStandard) mit INDEX ein skalarer Wert erzeugt wdn.
Luc :-?
Anzeige
AW: Als Xl konzipiert wurde, gab's noch keine ...
08.11.2016 09:13:37
Daniel
Hi Luc
kannst du mal ein Beispiel für eine Excel-Standard-Funktion (also keine UDF) nennen, für die auch ein Einzelwert als Datenfeld bereit bereitgestellt werden muss?
die von Franz aufgeführten Features (ggf Iteration, Volatilität) führen u.U. dazu, dass die Gesamtformel häufiger berechnet wird, aber sie haben keinen Einfluss darauf, wie oft die einzelnen Teilformeln dann abweichend von dieser Gesamtanzahl berechnet werden.
Gruß Daniel
Die Xl-Fktt ZEILE u.SPALTE scheinen ebenso ...
08.11.2016 15:34:15
Luc:-?
…wie WENN und WAHL eine SonderRolle in der Xl-Berechnungs­Steuerung zu spielen, Daniel;
der Fml-Interpreter ist ja ein Teil von ihr, aber dazu gehört auch die Variation eines skalar von einer Xl-Fkt verlangten Arguments über einen ggf angegebenen Bereich. INDEX wäre dafür ein Bsp, denn als WorksheetFunction müssen seine Argumente 2 bis 4 stets skalar sein.
Das VariationsPgm, das nun genau diese skalaren Werte aus einer Bereichs- oder Datenfeld­Angabe erzeugt, könnte einen Vorteil daraus ziehen, dass ein solches Argument per ZEILE oder SPALTE angegeben wird, wie es oft getan wird. Es läge dann nämlich bereits als Array vor, über das dann nur noch variiert wdn müsste. Natürlich kann hier auch direkt ein skalarer Wert angegeben wdn, der dann aber nicht der Variation unterworfen würde. ZEILE und SPALTE würden in solchen Fällen also als Variations­Marker/-Auslöser fungieren. Damit wäre die Angabe eines Skalars an dieser Stelle zwar für die Fkt die Norm, nicht aber für das Variations­Pgm!
Das hatte ich eigentlich auch gemeint (wobei dich wohl das zwingend irritiert hat), denn Xls Fml-Interpretation ist Teil eines Gesamt­Konzepts, bei dem alles inein­ander greifen muss. Dass man sich dabei für eine Algorithmus­Notation in Form einer Fml, bei der ebenfalls alles inein­ander greifen muss, ent­schieden hatte, war wohl ebenso wie anderes der Kompatibilität zu bereits markt­einge­führter Calc-Software und einer gewissen mathema­tischen Tradition geschuldet, obwohl es im EDV-Bereich längst anderes gab (zB Polnische Notation!). Die geklammerte Schreibung hat nun den Nach­teil, dass quasi von innen nach außen inter­pretiert wdn muss und das uU auch noch für mehrere Fml-Teil­Stränge gleich­zeitig, wobei WENN u.WAHL die Rolle einer Weiche bzw eines Schalters zukommt, der zuerst berücksichtigt wdn muss. Da das ja eben­falls ver­schach­telt wdn kann, kann's ganz schön kom­pli­ziert wdn. Deshalb war diese Ver­schach­telung bis Xl11/2003 auch auf 7 und ist jetzt auf 64 Ebenen begrenzt. Aber schon vorher dürfte es für den Fml-Ersteller absolut unüber­sichtlich wdn.
Mit einer anderen Notationsform dürfte die „Ver­schach­telungs­tiefe“ ggf allein von Ver­zwei­gungs­Markern ala WENN & WAHL abhängen oder praktisch unbegrenzt sein. Viell kommen wir ja irgend­wann auch dazu, denn die Notations­Form eines Algo­rithmus als (Klammer-)Fml hat deutliche Nach­teile, nicht zuletzt den, dass viele Anwender damit nicht zurecht kommen.
Gruß, Luc :-?
Anzeige
AW: Die Xl-Fktt ZEILE u.SPALTE scheinen ebenso ...
08.11.2016 15:53:31
Daniel
vielleicht muss ich meine Frage nochmal wiederholen:
welche Excelfunktion benötigt zwingend ein Datenfeld, auch dann wenn nur ein Einzelwert angegebenwerden muss.
und was ist ein "VariationsPgm"?
entschuldige bitte die Fragen, aber ich bin kein Profi wie du.
Ich dachte immer, die Notationsform als Klammerformel wäre für die meisten Menschen leichter verständlich als die klammerfreie Notationsform, weil die Klammerschreibweise schon in der Schule gelernt wird.
Auch in der Klammerschreibweise sollte sich eine unendliche Verschachtelungtiefe ermöglichen lassen, wenn man die Formeln konsequent von innen nach aussen auflöst.
Aber wahrscheinlich hat die aktull verwendete serielle Methode auch ihre Vorteile, nämlich den, dass man die Funktion kennt, für die man gerade die Parameter berechnet und dann besser steuern kann, was berechnet werden muss und was nicht.
Gruß Daniel
Anzeige
Da du deine Frage nun wiederholst, ...
09.11.2016 19:41:00
Luc:-?
…hast du ggf meine AW nicht verstanden, Daniel,
ich aber deine Frage durchaus. Da jedes Argument einer XlFkt auch skalar angegeben wdn kann, selbst wenn es üblicher- und sinnvollerweise einen ZellBereich oder ein Datenfeld erwartet, erübrigt sich wohl ein Bsp.
Was ich gemeint habe, ist offensichtlich und von mir nicht zum 1.Mal erwähnt worden. Es sollte doch wohl klar sein, was mit VariationsPgm gemeint ist, zumal das auch andere, ganz ohne Pgmmier­Kenntnisse verstanden hatten. Dazu musst du dir nur mal eine geeignete Fkt im FktsAssi ansehen; wird ein Argumentwert in {} dargestellt, wird ein Array erwartet, ist das nicht der Fall, eben nicht und von einem Array wird dann nur der 1.Wert gezeigt. Wenn das also in Xl trotzdem fktioniert, dann wohl nur, weil ein Pgm der XlSteuerung mit den Werten des Arrays dieses Argument variiert und dann die Fkt für jede Variation berechnet. Das steht bei einer VBA-Worksheet­Function nicht zV, weshalb dort solche Argu­mentie­rungen nicht fktio­nieren.
Und stell dich nicht immer im Wechsel mal oberschlau und mal dumm! Das nimmt dir wohl keiner mehr ab. Es weckt vielmehr den Verdacht, dass du Fallen stellen willst, um dein jeweiliges Ggüber vorzuführen → also rein egomanische Selbst­befrie­digung, von der niemand (außer anscheinend dir) etwas hat…
Reicht dir nicht, dass du die Rolle von WENN entdeckt hast?! Die ordnet sich dann allerdings gut in ein Gesamt­Konzept ein, das ohnehin zu vermuten war, ist also eine entdeckte Facette mehr, genau wie die Variation von skalaren Argumenten über Bereiche und Datenfelder.
Das Problem bei KlammerFmln besteht darin, dass sie primär Fmln sind, keine Folge von Anwei­sungen wie in einem Pgm. Das macht sowohl Erstellung als auch Inter­pretation (unnötig) kompliziert und ermög­licht längst nicht alles. Tradition kann folglich irgend­wann hinderlich wdn…
Gruß, Luc :-?
Anzeige
Nachtrag: MMULT
12.11.2016 04:50:09
Luc:-?
Mir ist bisher keine XlFkt auf- bzw eingefallen, die zwingend einen ZellBereich oder ein Datenfeld in einem ihrer Argumente verlangt, dafür aber eine weitere, die stets ein Datenfeld, auch, wenn es nur ein Element hat, zurückgibt: MMULT
Das mag deshalb so sein, weil das vom Pgmmierer als Normalfall angesehen und deshalb dieser Ergebnis-(Sonder-)Fall nicht extra behandelt wurde, hätte dann aber mög­licher­weise gleiche oder ähnliche Konse­quenzen wie sie nun von ZEILE und SPALTE bekannt geworden sind, obwohl hier die Argument­Variation nur dann eine Rolle spielen könnte, wenn die Fkt für ein skalares Argu­ment einer anderen XlFkt ver­wendet würde.
Luc :-?
Anzeige
AW: Wenn und Wahl in der Bedingen Formatierung
08.11.2016 00:18:57
fcs
Hallo Daniel,
ZEILE() und auch SPALTE() können mit und ohne Parameter verwendet werden.
Wird kein Zellbezug angegeben, dann wird die Zelle in der die Formel steht als Parameter verwendet.
Man kann auch die Zelle in der die Zelle steht als Parameter angeben.
Dies führt bei fast allen anderen Funktionen zu einem Zirkelbezug, aber nicht bei diesen beiden Funktionen.
Hier muss der Formelinterpreter also erst einmal rechnen, um einen Zahlenwert für die Weiterverarbeitung zu haben und die Prüfung auf Zirkelbezug passieren.
Diese beiden Funktionen haben auch eine andere Besonderheit:
Das Ergebnis ändert sich, wenn man Zelle mit der Formel ausschneidet und in einer anderen Zeile bzw. Spalte wieder einfügt.
Dies ist noch verständlich, wenn kein Parameter angegeben ist, aber wenn als Parameter die Zelle mit der Formel angegeben ist, dann ändert sich beim Verschieben der Zelle auch der Zellbezug auf die neue Zellposition.
Ist in der Formel ein Bezug auf eine andere Zelle angegeben, dann verhalt sich der Bezug wie bei allen anderen Funktionen - er verändert sich beim Verschieben der Zellen nicht.
Es könnte auch sein, dass das von dir beobachtete Verhalten bei allen Funktionen auftritt, die ohne Parameter verwendet werden können. z.B.: HEUTE(), JETZT(), ZEIT()
oder die optional ohne Zelladresse als Parameter verwendet werden können: z.B. ZELLE
Gruß
Franz
Anzeige
Ja, das von Daniel genannte Verhalten von ...
10.11.2016 02:09:59
Daniel
…ZEILE (und SPALTE) scheint tatsächlich der alleinige Grund für abweichendes Verhalten dieser (sicher erst recht auch jedes andere Daten­feld und Matrix­Kon­stanten) benannten bzw Bedingt­Format­Regel-Fmln zu sein, Franz,
denn mit (m)einer UDF als Zähler­Ersatz ist das (eben­falls) nicht so. Das liegt aber, wie von mir oben begründet, allein an der garan­tierten Rückgabe eines Arrays, wenn ggf auch nur aus einem Element. Insofern ist nicht davon auszu­gehen, dass generell argu­ment­lose Fktt, die stets nur einen Wert zurück­geben, das eben­falls bewirken. Es kann nur am Array und seiner Sonder­Behandlung (vornehmlich in benannten Fmln) liegen, weil hier stets alle Werte berechnet wdn. In einer (matrix­fml-mar­kierten) ZellFml berechnet Xl dann wohl nur die tatsächlich benö­tigten Werte (bzw gibt nur diese zurück). Das kann dann nur an unter­schied­lichen Abarbei­tungs­wegen des Inter­preters liegen, die nicht die tat­säch­liche Element­Anzahl eines solchen Feld-Zwi­schen­Ergeb­nisses berück­sich­tigen.
ZELLE kann übrigens nicht ohne wenigstens das 1.Argument verwendet wdn, kann aber mit dem 2. auch keine Zell­Bereichs-, sondern nur Einzel­Zell­Adressen zurück­geben, wodurch es hier­für auch aus­schei­den dürfte.
Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Ja, das von Daniel genannte Verhalten von ...
10.11.2016 08:14:52
Daniel
Um es nochmal kurz zusammenzufassen
In Wahl und Wenn werden alle Folgeparameter berechnet, wenn die folgenden zwei Bedingungen erfüllt sind:
1. Das Ergebnis des ersten Parameters ist ein Datenfeld und kein Einzelwert.
2. Der Matrixformel-Berechnungsmodus ist aktiv
Der Unterschied zwischen Zellformel und Bedingter Formatierung liegt darin, dass in der Bedingten Formatierung der Matrixformel-Berechnungsmodus automatisch immer aktiv ist, während er in einer Zellformel vom Anwender durch Eingabe mit STRG+SHIFT+ENTER aktiviert werden muss.
Gruß Daniel
So ist es und für benannte Fmln gilt das Gleiche!
10.11.2016 19:11:25
Luc:-?
Nur in ZellFmln kann und muss das per MatrixFml-Form und mitunter auch noch die Auswahl von mindestens 2 Zellen gesteuert wdn.
Luc :-?
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige