Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Formel über drei Tabellen

Formel über drei Tabellen
11.06.2020 10:40:57
erichm
Hallo,
ich habe für meine Frage grundsätzlich bereits zwei Lösungen, die jedoch unbefriedigend sind, weil:
Lösung A pro Spalte einen manuellen Eingriff nach jeder Datenaktaulisierung erfordert, indem die Spaltenbuchstaben angepasst werden müssen (siehe Musterdatei, Tabelle Auswertung, Bereich CAA2 bis CAD18)
Lösung B mit INDIREKT gelöst ist, aber aufgrund der Datenmenge diese Lösung "auch nicht gewollt ist" (siehe Musterdatei, Tabelle Auswertung, Bereich CAA21 bis CAD33). Eine Alternative mit z.B. INDEX ist mir trotz vieler Versuche nicht gelungen......
Konkrete Beschreibung:
Tabelle Vergleich: hier werden in Spalte B immer wieder Daten importiert; in Spalte C wird ermittelt in welcher Zeile Werte größer 0 in der Spalte B stehen; diese werden für die Weiterverarbeitung benötigt
Tabelle Auswahl: dort werden über die Zeilen der Spalte C aus Tabelle Vergleich die jeweils für die weitere Auswertung benötigten Daten aufgelistet
Tabelle Auswertung: dort stehen in den Spalten bis BZZ pro Spalte unterschiedliche Werte. Ab Spalte CAA erfolgt die Auswertung in der Form, dass die Zeilennummern immer dann aufgelistet werden, wenn die Werte ungleich der jeweiligen Werte aus der Tabelle Auswahl sind.
Hierfür noch meine derzeitigen Lösungsformeln:
für CAA2: =WENN(BAS2=INDEX(Auswahl!$C:$C;SPALTE(B$1);0);" ";ZEILE())~f~
für CAA21: ~f~=WENN(INDIREKT(XVERWEIS(CAA$1;Auswahl!$B$2:$B$5;Auswahl!$D$2:$D$5)&ZEILE())=INDEX(Auswahl!$C:$C;SPALTE(B$1);0);" ";ZEILE())
die Musterdatei (Version Microsoft 365):
https://www.herber.de/bbs/user/138217.xlsx
Vielen Dank für eine Hilfe.
mfg

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel über drei Tabellen
11.06.2020 11:50:19
ralf_b
dafür WENN(BAS4=INDEX(Auswahl!$C:$C;SPALTE(B$1);0);" ";ZEILE())
kannst du auch das schreiben. WENN(BAS4=CAA$1;" ";ZEILE())
den wert "Test1" hast du schon in das Blatt geholt.
dein xverweis gibts erst ab excel 365, sowas hab ich nicht
mit der kombi von index(bereich;vergleich(suchwert, suchbereich,vergleichstyp);SpalteimBereich)
hast du ein gutes werkzeug für deine arbeit. vergleich liefert die zeilennummer und index holt dir den wert aus einer beliebigen spalte im bereich
Danke, mit der INDEX-Lösung gehts owT
12.06.2020 21:52:34
erichm
...
AW: INDIREKT() bdearf es nicht, INDEX() hilft ...
11.06.2020 13:04:03
neopa
Hallo Erich,
... in CAA2:
=WENN(INDEX($A:$BZZ;;VERGLEICH(CAA$1;$1:$1;0))=INDEX(Auswahl!$C:$C;SPALTE(B$1);0);" ";ZEILE())
und Formel nach rechts und unten kopieren.
Gruß Werner
.. , - ...
Anzeige
AW: jedoch nicht in meiner XL-2010er Version ...
11.06.2020 15:04:07
neopa
Hallo Erich,
... allerdings hab ich in Deinem Tabellenblatt Auswahl auch in B2:
=WENN(A2="";"";INDEX(Vergleich!A:A;$A2)) zu stehen und diese nach unten und in Spalte C kopiert.
In meiner XL Version sind alle INDEX()- Formeln auch keine klassischen Matrixformeln und bedürfen auch nicht der {}, die offensichtlich Deine Office365 Version intern automatisch so für ältere Versionen erzeugt.
Belasse ich diese {} in meiner Version, wird in meiner Version nicht das von Dir angestrebte Ergebnis ermittelt, wie es bei mir der Fall ist. In meiner XL 2016er Version stellt sich das im Wesentlichen genauso dar wie in der Version 2010. Office 365 hab ich nicht.
Da hat Office365 wohl ein Problem, wenn Du dieser nicht anderweitig mitteilen kannst, dass es seinen Automatismus abschalten kann, der aus jeder "normalen" Formel ein Matrixformelauswertung macht.
Gruß Werner
.. , - ...
Anzeige
Lösung gefunden
11.06.2020 16:03:30
erichm
Hallo Werner,
nach (sehr) vielen Versuchen habe ich jetzt die Lösung gefunden:
=WENN(INDEX($A:$BZZ;ZEILE();VERGLEICH(CAA$1;$1:$1;0))=INDEX(Auswahl!$C:$C;SPALTE(B$1);0);" "; ZEILE())
Lediglich ZEILE() beim 1. INDEX musste ich ergänzen - klappt wunderbar.
Vielen vielen Dank!!
mfg
AW: bitteschön und gut zu wissen ...
11.06.2020 18:28:21
neopa
Hallo Erich,
... das nun MS in Office365 der seit anno dazumal geltende Regelung ein Riegel vorgeschoben hat. Bisher konnte ZEIL() bzw. auch SPALTE() als entsprechende Argument bei Einsatz der INDEX()-Funktion eingespart werden.
In diesem Zusammenhang würde mich interessieren, ob MS wenigsten konsequent nun auch das FALSCH oder alternativ dafür eine 0 als 3. Argument bei VERGLEICH()- bzw. als 4. Argument bei SVERWEIS()-Formeln nun auch erzwingt? Kannst Du das mal bitte prüfen? Bisher war es jedenfalls auch nicht nötig.
Gruß Werner
.. , - ...
Anzeige
Argument-Bezifferung weiterhin nicht nötig
12.06.2020 10:59:27
lupo1
... sonst wäre Excel ja nicht Excel.
=VERGLEICH(Arg1;Arg2;) reicht also auch weiterhin anstelle von ;FALSCH (optionales Arg)
=VERGLEICH(Arg1;Arg2) reicht also auch weiterhin anstelle von ;WAHR (Funktions-Default)
AW: interessant ...
12.06.2020 11:30:08
neopa
Hallo lupo1
... danke für Deine Information. Demzufolge ist MS zumindest wieder mal nicht konsequent gewesen, als in Office365 ein Argument bei einer INDEX()-Formel nun gebraucht wird, wenn die Aussage von Erich zutreffend war und ich glaube Erich.
Gruß Werner
.. , - ...
AW: interessant ...
12.06.2020 18:03:12
erichm
Hallo Werner,
habs heute getestet - ist genau so wie lupo1 es beschrieben hat. Deine obige Formel, ergänzt um ZEILE(), funktioniert unter Microsoft365 ohne meckern.....
mfg
Anzeige
AW: danke für Deine Information owT
12.06.2020 19:53:15
neopa
Gruß Werner
.. , - ...
INDEX-Argumente
12.06.2020 18:52:57
Luc:?
Hallo, Werner;
die INDEX-Argumente 2-4 hingen schon immer auch vom Fktspgm ab. Falls µS wirklich hieran etwas geändert hat (ggf wg der generellen MatrixFktionalität auch im TabBlatt), wäre das fatal, denn es könnte auch noch andere Spezifika* betreffen, die Xl von anderer Calc-Software unterscheidet und von Experten gelegentlich genutzt wdn. Diese Argumente wdn sicher immer noch automatisch 0 sein, wenn nichts als das ; angegeben wird (das liegt am zugeordneten Datentyp und ist pgmmiersprachabhängig), aber das reicht(e) nicht immer. Bei speziellen Selektionen über das 4.Argument mussten schon immer Zeilen u/o Spalten explizit angegeben wdn.
* ZB duale MatrixFmln, 3dimensionale INDEX-Berechnungen; schon dumm genug, dass sich die Wirkung der BedingtFormatierung auf mehrfarbige Texte von alten Versionen (zumindest bis Xl9/2k) unterscheidet, falls man Effekte der vorherigen Variante bewusst genutzt hat.
Gruß + schöWE, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: jedoch wie Erich festgestellt hat ...
12.06.2020 19:54:21
neopa
Hallo Luc,
... trifft Deine Aussage: "Diese Argumente wdn sicher immer noch automatisch 0 sein, wenn nichts als das ; angegeben wird ..." eben nicht zu.
Und wie lupo und Erich übereinstimmend dargelegt haben, wird dagegen bei VERGLEICH() und SVERWEIS() das letzte Argument weiterhin als 0 interpretiert, wenn "Nichts" nach dem Semikolon folgt.
Gruß Werner
.. , - ...
Als was soll es denn interpretiert wdn, ...
12.06.2020 23:32:22
Luc:?
…Werner,
wenn nicht als 0‽ Es wäre dann doch eher wahrscheinlich, dass diese 0 hierbei nicht mehr die gewohnte Wirkung hat, zumal man das auch in früheren Xl-Versionen unter bestimmten Bedingungen feststellen kann (nämlich bei diskontinuierlichen Bereichen).
Luc :-?
Anzeige
AW: in Versionen vor (!) Office 365 ...
13.06.2020 08:29:45
neopa
Hallo Luc,
... wird bei entsprechenden INDEX()-Formeln schon ein (nicht wirklich nachvollziehbarer Unterschied) zwischen einer Eingabe als "normale" Formel und als "{}"-Formel gemacht. Wie ich eben in meinen Excel Versionen 2010 und 2016 geprüft habe.
Ohne eine Angabe des 2. oder (!) 3. Arguments wird dies ohne {} als 0 und als {}-Formel als 1 gewertet, wie Du leicht nachvollziehen kannst. (Betrachtet hab ich jetzt lediglich die sogenannte Matrixformelversion von INDEX()-Formeln).
Fehlen beide Argumente gibt es dagegen als Nicht-{}-Formel eine #WERT!-Meldung, während die {}-Formel weiterhin beide fehlende Argumente als 1 interpretiert.
Somit ergibt sich für mich (der keine 365er Version zur Verfügung hat) - unter Voraussetzung der Aussagen von Erich - dass in Office 365 nunmehr fehlende Argumente nicht mehr als 1 sondern wohl generell als #WERT!Fehler interpretiert werden. Das wiederum kann ich nun doch als nachvollziehbar(er) ansehen, Jedenfalls als die unterschiedliche Interpretation zwischen Formeln mit und ohne {} -Abschluss in den bisherigen Versionen. Schade nur, das offensichtlich dort jede Formel als "{}-Formel" ausgewertet wird.
Gruß Werner
.. , - ...
Anzeige
Das hängt anders zusammen, ...
13.06.2020 20:16:47
Luc:?
…Werner,
und dann wäre tatsächlich die FmlText-Interpreter-Umstellung schuld. Aber mal der Reihe nach:
INDEX kommt mit nur einem weiteren Argument (Nr 2) aus, wenn Argument 1 ein Ko-/Vektor (Zeilen-/SpaltenBereich bzw entsprd Datenfeld als MatrixKonstante oder aus einem Ausdruck als Arg1 resultierend) ist. Anderenfalls wdn stets beide FolgeArgumente (2 u.3) benötigt, was durch das Setzen des vorstehenden Trennzeichens (;) eingeleitet wird. Bleibt diese Angabe dann leer, wird die entsprd PgmVariable nicht gefüllt und würde in VBA den Initialwert ihres Datentyps haben. Da INDEX mit Sicherheit in einer anderen Sprache (wahrscheinl ein C-Derivat) pgmmiert wurde, kann das auch etwas anders aussehen und mit 0 würde dann automatisch indiziert, es sei denn, ein anderer Default-Wert wurde explizit im Pgm angegeben. Das ist bspw bei W-/SVERWEIS für das 4.Argument der Fall, dessen Default-Wert 1 (WAHR) ist, wenn gar nichts (auch kein vorstehendes ;)* angegeben wurde. Anderenfalls wird 0 (FALSCH) verwendet. Bei VERGLEICH ist das ähnlich, 1 ist Default, -1 muss angegeben wdn, für 0 reicht die Angabe des ListenTrennZeichens (;).
* Allerdings hat der Fktsassi von Xl (bei Aufruf) die „Angewohnheit“, endständige Solo-Trennzeichen (;) zu löschen, wenn kein Wert folgt.
Nun besteht bei INDEX aber das Problem, dass mit Argg2/3=0 eine ganze Spalte bzw Zeile eines Bereichs oder Datenfelds wiedergegeben wdn kann, mit ;; bzw ;0;0 dann die ganze Matrix, was bei reiner Wiedergabe normalerweise die MatrixFmlForm erfordern würde. Es kann aber auch sein, dass man die ganze Matrix für weitere Berechnungen in derselben Fml benötigt und am Ende nur einen Wert erhält. Deshalb ist mir fraglich, ob das mit der neuen Fml-Interpretation noch so fktionieren würde*.
* Deshalb hatte ich vor Jahren bei meiner eigenen UDF zur Realisation automatischer Matrix-ErgebnisAusdehnung stets wenigstens 2 Zellen manuell auswählen lassen, womit gleichzeitig die Ausdehnungsrichtung von (Ko-)Vektor-Ergebnissen bestimmt wurde. Lt Lupo hat Google-Docs dafür ja auch eine spezielle ZusatzFkt verwendet, also wohl ähnliches Prinzip.
Ein #WERT!-Fehler entsteht idR dann, wenn einer Fkt ein nicht-optionales Argument nicht übergeben wurde, also in der Fml fehlt. Anderenfalls tritt der Default- (falls vorgesehen) oder der InitialWert des Arguments in Kraft. INDEX hatte bisher keine Default-, nur InitialWerte lt DatenTyp. Allerdings kann in der verwendeten PgmmierSprache zwischen gänzlichem Fehlen eines Arguments (inkl ;) und Nicht-Angabe desselben (nur ;) unterschieden wdn, was in VBA schwierig, aber auch schon in JavaScript möglich ist. Ich glaube auch nicht, dass es hierbei einen Interpretationsunterschied zwischen MatrixFmlForm und NormalForm gibt, denn immerhin hat Erich flgd Form bestätigt:
INDEX($A:$BZZ;ZEILE();VERGLEICH(CAA$1;$1:$1;0))=INDEX(Auswahl!$C:$C;SPALTE(B$1);0)
Man sieht, dass beim 2.INDEX die 0 als 3.Argument weiterhin zulässig ist. Wahrscheinlich wäre sie es auch für das 2.Argument des 1.INDEX. Die neue FmlTextInterpretation scheint hier doch zu verlangen, dass das 2.Argument angegeben wird, viell auch nur auf Grund des Vgls, weil so ggf jetzt zuviel vgln wird, was den #ÜBERLAUF!-Fehler verursacht. Es könnte also spezifische Gründe haben, aus denen man nicht unbedingt das von Dir Vermutete schlussfolgern kann. Als 1 ist ein nicht angegebenes Argument 2-4 von INDEX mE noch nie angesehen worden, aus den o.g. Gründen höchstens als 0. Bei einem (Ko-)Vektor ist es dann das n.Element (oder eben alle Elemente), bei einer Matrix müssen es eh immer 2 Indizes sein, wobei einer (oder auch beide) bisher auch 0 sein konnte(n).
Luc :-?
Anzeige
AW: mag sein, es stellt sich aber anders dar ...
14.06.2020 08:44:59
neopa
Hallo Luc,
... meine gestrigen Aussagen waren sicher noch nicht eindeutig aber deren Grundaussage lässt sich zumindest für meine Versionen Excel 2010 und 2016 belegen:
Nehmen wir eine neue Datei; Tabelle1:
Arbeitsblatt mit dem Namen 'Tabelle1'
 AB
1DatenWerte
2Text_1201
3Text_2202
4Text_3203
5Text_4204
6Text_5205
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Nun schreiben wir in Tabelle2 (z.B.)
D3: =INDEX(Tabelle1!$A:$B;1;)
D4: =INDEX(Tabelle1!$A:$B;;2)
D5: =INDEX(Tabelle1!$A:$B;;)
und ziehen die Formeln D3:D5 kopierend nach links.
Zusätzlich schreiben wir (z.B.) in Tabelle2:
E3: {=INDEX(Tabelle1!$A:$B;1;)}
E4 {=INDEX(Tabelle1!$A:$B;;2)}
E5: {=INDEX(Tabelle1!$A:$B;;)}
Die Ergebniswerte zeigen mE eindeutig, das INDEX() fehlende Argumente 2 oder/und 3 in einer {} -Matrixformel nicht als 0 sondern als 1 interpretiert.
Gruß Werner
.. , - ...
Anzeige
Ich habe gestern angefangen, ...
16.06.2020 18:42:45
Luc:?
…Werner,
mich mit den Bspp in Deiner AW zu befassen. Eher bin ich leider nicht dazu gekommen, u.a. wg anderer interessanter Themen und diverser Arbeit.
Es ist zwar nicht völlig falsch, was ich bzgl des möglichen Ersatzes des LeerArguments in Deinem 1.INDEX durch 0 geschrieben hatte, aber das passiert ja ohnehin, auch wenn Du das bezweifelst, zwar nur für MatrixFmln, aber das ist auch nicht richtig. Andersherum hätte ich das eher verstanden, obwohl das auch nicht stimmt.
Deine FehlInterpretation des Beobachteten hängt offensichtlich wesentlich damit zusammen, dass Du MatrixFmln, falls überhaupt, nicht für den Zweck benutzt, für den sie mal geschaffen wurden → Ausgabe mehrerer Ergebnisse einer Fml auf einen Streich. Das nenne ich plurale MatrixFmln, andere bezeichnen es als MultiZellen-MatrixFml o.ä. Da ich aber auch eine Sonderform der singularen bzw EinzelZellen-MatrixFml (duale MatrixFml) entdeckt hatte, schien mir die begriffliche 3Teilung unter Namensanleihe bei der Grammatik sinnvoller. Du bemühst Dich zumeist darum, aus pluralen MxFmln singulare oder gar normale Fmln zu machen und missbrauchst dabei leider das 0-Argument, auch, indem Du es nur per gesetztem ; andeutest, also ein leeres (nicht fehlendes!) Argument setzt, was im Falle seiner Optionalität möglich ist, aber dann, je nach Kontext, 2 Bedeutungen hat, die wohl der fml-optimierenden Tätigkeit des Xl-FmlText-Interpreters geschuldet sind:
1. INDEX als Solist in einer normalen Fml → Einsatz der Zeile u/o Spalte des FmlStandorts
2. INDEX als Argument einer zusammenfassenden Fkt (zB SUMME) bzw als Solist einer MatrixFml → Wiedergabe aller Zeilen u/o Spalten des Bereichs bzw des Datenfelds lt Argument1
Da Du INDEX idR nur für normale oder singulare MxFmln nutzt, fällt Dir das nicht auf. Man konnte ja bisher auch nur einen Teil des Ergebnisses einer pluralen MxFml wiedergeben, je nachdem wie groß man den AusgabeBereich wählte. Das wird aber zum Problem, wenn dieser jetzt durch die Interpreter-Änderung automatisch auf seine MaximalGröße expandiert wird. Damit bekommst Du ein Problem, das in Programmen aus unsauberer Pgmmierung resultiert. Hier könnte man es auch unsaubere FmlBildung nennen. Die Quittung ist dann unter Xl365 der #ÜBERLAUF!-, sonst ggf der Standard-Fehler #WERT!.
Ich habe Dein Bsp mal entsprd umgesetzt und dabei flgd Ergebnisse erhalten:
• Für die NormalFmln → A3:D5: {"Daten"."Werte1".#WERT!.#WERT!;203.203.203.203;"Text_4".204.#WERT!.#WERT!}
• Für die als singulare „getarnten“ pluralen MxFmln bei entsprd manueller Expansion → E3:F3: {"Daten"."Werte"}
E4:E9: {"Werte";201;202;203;204;205}
E5:F10: {"Daten"."Werte";"Text_1".201;"Text_2".202;"Text_3".203;"Text_4".204;"Text_5".205}
Davon wirst Du natürlich stets nur den 1.Wert erhalten haben, weil mit dem die Wiedergabe beginnt. Das hat Dich dann wohl zu Deiner trügerischen Schlussfolgerung verführt.
Verwendet man Deine NormalFmln aber als Argument von SUMME, ergibt sich flgd Bild:
=SUMME(INDEX(Tabelle1!$A:$B;1;)) → 0
=SUMME(INDEX(Tabelle1!$A:$B;;2)) → 1015
=SUMME(INDEX(Tabelle1!$A:$B;;)) → 1015
Es wdn hier also auch alle Zeilen u/o Spalten benutzt. Noch deutlicher wird es, wenn ich die UDF VJoin (ab der Dir ebenfalls vorliegenden Vs1.5) einsetze, die ich hier auch zur ErgebnisWiedergabe als MxKonstante benutzt habe. Dazu habe ich Dein Bsp um eine weitere WerteSpalte erweitert (Spalte C - Werte2: 10-50). Mit SUMME ergibt das dies:
D3:=SUMME(INDEX($A:$C;2;)) → 211
D4:=SUMME(INDEX($A:$C;;3)) → 150
D5:=SUMME(INDEX($A:$C;;)) → 1165
Mit VJoin statt SUMME ergibt sich so nur für E3 ein Ergebnis:
E3:=VJoin(INDEX($A:$C;2;);;2) → {"Text_1".201.10}
Hier wird nur die Zeile 2 benutzt, deren Spalten ab D leer sind. Das überfordert VJoin noch nicht. Das ist aber bei den beiden anderen Fmln der Fall, die deshalb unter Xl14/2010 nach relativ langer LaufZeit #WERT! ergeben. Ein Zeichen dafür, dass INDEX bis zu meiner Version nicht an den tatsächlich benutzten Bereich angepasst wurde. Gleiches gilt für Xl365 zu vermuten, denn das liefert ja beim Versuch, den GesamtBereich aufzunehmen, #ÜBERLAUF!. Mit einer Einschränkung des Bereichs geht's aber und auch noch im Handumdrehen:
E4:=VJoin(INDEX($A1:$C6;;3);;2) → {"Werte2";10;20;30;40;50}
E5: {=VJoin(INDEX($A1:$C6;;);;2)} → {"Daten"."Werte1"."Werte2";"Text_1".201.10;"Text_2".202.20;"Text_3".203.30;"Text_4".204.40;"Text_5".205.50}
Wahrscheinlich würde es so auch bei Xl365 klappen, aber es ist natürlich besser, auf Leer-/0-Argumente zu verzichten, wenn sie eigentlich nicht benötigt wdn. Folglich ist auch anzunehmen, dass das zellweise Rechnen mit vollen OriginalMatrizen nicht im Sinne der Xl-Pgmmierer ist und zu Performance-Verlusten führen kann (schon gar nicht bei künstlicher Erzeugung singularer aus eigentlich pluralen MxFmln).
Gruß, Luc :-?
AW: Feststellungen sind interpretierbar ...
17.06.2020 13:14:21
neopa
Hallo Luc,
... z.B. so wie Du es jetzt getan hast, aber Feststellungen sind und bleiben eindeutig nachvollziehbar.
Zu Deinen Ausführungen stelle ich ergänzend fest, dass plurale Matrixformeln in der alltäglichen Anwendungspraxis der allermeisten Exceluser offensichtlich eine untergeordnete Rolle spielen. Dazu braucht man sich nur die Forenthreads der vergangen Jahre (möglicherweise sogar Jahrzehnte) in Erinnerung zu rufen.
Plurale Matrixformeln sind da wo sie eingesetzt werden sicherlich effizient(er) als singuläre aber eben auch relativ unflexibel im Handling. Letzteres insbesondere - wenn mit Datenerweiterungen zu rechnen ist - gerade bei größeren Datenmengen. Also genau da wo der Nutzeffekt gegenüber singulären Matrixformeln überhaupt so richtig zum Tragen kommen könnte.
Zu Deiner Aussage, dass die Matrixfunktionalität ursprünglich für plurale Anwendung programmiert wurde, kann ich keine Feststellung treffen außer der, was ich ja schon schrieb, dass diese sich dann überwiegend in deren singulären Form zur Anwendung gekommen ist.
Gruß Werner
.. , - ...
Gut, dass Du das nochmals ansprichst, ...
17.06.2020 15:24:46
Luc:?
…Werner,
plurale kontra singulare MxFmln. Wenn die HptNutzung singular ist, warum hat µS dann nun die AutoExpansion eingeführt‽ Das deutet doch darauf hin, dass es eine NutzerForderung war! Auch Du hattest ja beklagt, dass sich plurale MxFmln nicht automatisch auf den GesamtErgebnisBereich ausdehnen und das als einen ihrer Mängel charakterisiert. Was den von Dir postulierten HptMangel betrifft, die Fixierung des ErgebnisBereichs als unveränderliche Einheit, wäre schon interessant zu wissen, wie das nun bei automatischer Expansion aussieht - wahrscheinlich doch genauso. Du musst also in Zukunft wohl alles vermeiden, was diese Expansion auslösen könnte, wenn Du sie nicht gebrauchen kannst…
Im Übrigen beruht meine Interpretation des Ganzen durchaus auf verifizierbaren Beobachtungen:
1. Ein leeres optionales Fktsargument wird stets entsprd seinem Datentyp initialisiert, Zahlen mit 0, Texte mit Leertext, Wahrheitswerte mit Falsch usf. Es sei denn, das Argument fehlt ganz und das Pgm sieht für diesen Fall einen Default-Wert vor (bei VERGLEICH-Arg3 zB 1).
2. 0 wird als indizierendes Argument in Fktt gern benutzt, um statt eines/r bestimmten alle Elemente bzw Eigenschaften einzubeziehen/wiederzugeben. Das habe ich auch schon so gemacht. Mitunter wird 0 aber auch verwendet, um eine Fkt unter bestimmten Umständen wirkungslos zu machen, zB WIEDERHOLEN. Anderenfalls stellt sie eben auch nur eine weitere Alternative dar (gern auch in Kombi mit NegativWerten, zB bei RUNDEN).
3. Auch schon bisher war ein leeres bzw 0-Argument nicht immer hilfreich, zB bei der Vereinigung 2er gleichgroßer TeilBereiche eines diskontinuierlichen Bereichs zu einem fortlfd kontinuierlichen ErgebnisBereich. Mit bspw INDEX((A1:C5;E6:G10);;;{1.2}) würdest Du dabei wohl keinen Erfolg haben, mit Folgendem aber schon …
a) senkrechte Anordnung (untereinander):
{=INDEX((A1:C5;E6:G10);REST(ZEILE(1:10)-1;5)+1;SPALTE(A:C);{1;1;1;1;1;2;2;2;2;2})}
b) waagerechte Anordnung (nebeneinander):
{=INDEX((A1:C5;E6:G10);ZEILE(1:5);REST(SPALTE(A:F)-1;3)+1;{1.1.1.2.2.2})}
Luc :-?
AW: die ursprüngliche Aussagen ...
17.06.2020 17:37:10
neopa
Hallo Luc,
... waren meinerseits: "Bisher konnte ZEILE() bzw. auch SPALTE() als entsprechende Argument bei Einsatz der INDEX()-Funktion eingespart werden." (Beispielbezogen)
Daraufhin hatte ich die Frage gestellt:
"In diesem Zusammenhang würde mich interessieren, ob MS wenigsten konsequent nun auch das FALSCH oder alternativ dafür eine 0 als 3. Argument bei VERGLEICH()- bzw. als 4. Argument bei SVERWEIS()-Formeln nun auch erzwingt?"
Lupo hatte meine Frage für mich schon eindeutig beantwortet.
Deine Aussage danach: "Diese Argumente wdn sicher immer noch automatisch 0 sein, wenn nichts als das ; angegeben wird"
Deine folgenden Aussagen relativierten teilweise Deine Erstaussage, waren und sind durchaus interessant, führen aber weit über das eigentliche Anliegen von Erich und dann mir hinaus.
Gruß Werner
.. , - ...
Ich glaube nicht, dass meine ErstAussage ...
17.06.2020 23:35:12
Luc:?
…wesentlich relativiert wurde, Werner,
ich habe nur weiter ausgeholt und Hintergründe genannt. Das muss man sich nun nicht so vorstellen, dass INDEX hier überarbeitet wurde, denn offensichtlich ist ja sogar noch das Arbeiten mit vollen Zeilen und Spalten bei entsprd Angabe in Arg1 und Leer- bzw 0-Argument2/3 üblich, nur reagiert der Interpreter jetzt etwas anders, denn der wurde garantiert geändert. Man sollte auch nicht vergessen, dass der auch schon immer einen Indizierungsautomatismus für NormalFmln enthielt, der am FmlStandort relativ zur DatenQuelle und dem Xl-Raster orientiert ist. Der wird bei umfassenden Bereichsangaben und leeren (=0) Indizierungsargumenten wirksam, wenn es um eine reine DatenWiedergabe geht und das Ganze kein Argument einer zusammenfassenden Fkt ist.
Insofern war auch nicht zu erwarten, dass andere Fktt mit möglichen Leer-/0-Argumenten sich geändert haben. µS scheint nur die neuen Fktt ab Xl12/2007 (und ggf ihre Vorstufen) angepasst zu haben. Das Ändern nur eines Pgmms ist ja auch rationeller als das Ändern vieler. Und für die Bereitstellung und Auswahl der Daten, sowie die xl-konforme Darstellung des FmlErgebnisses war schon immer der Interpreter verantwortlich.
Luc :-?
Und zu Letzterem noch eine Ergänzung, ...
18.06.2020 14:27:04
Luc:?
…Werner;
bei dieser Neuzusammenstellung eines diskontinuierlichen Bereichs zu einer kontinuierlichen Matrix bleiben die Bezüge zum Original ebenfalls erhalten:
 ABCDEFGHIJKLMNOPQR
1
59125292 INDEX((A1:C5;E6:G10);;;{1.2})59125292 591252923277844232195118     32195118 3219511817255329170101227     70101227 7010122731929735434122245     34122245 341222452334168132111276     32111276 3211127628446526    32778442 32778442           172553291 172553291 {=INDEX((A1:C5;E6:G10);ZEILE(1:5);REST(SPALTE(A:F)-1;3)+1;{1.1.1.2.2.2})}    319297354 319297354           23341681 23341681           28446526 28446526                                 {=INDEX((A1:C5;E6:G10);REST(ZEILE(1:10)-1;5)+1;SPALTE(A:C);{1;1;1;1;1;2;2;2;2;2})}                          RotGelbGelb RotGelbGelbTaubenblauTaubenblauGolden        GelbGelbRot GelbGelbRotGoldenTaubenblauTaubenblau        GelbRotGelb GelbRotGelbTaubenblauGoldenTaubenblau        RotGelbGelb RotGelbGelbTaubenblauTaubenblauGolden        GelbGelbRot GelbGelbRotGoldenTaubenblauTaubenblau        TaubenblauTaubenblauGolden               GoldenTaubenblauTaubenblau {=CellContIn(INDEX((A1:C5;E6:G10);ZEILE(1:5);REST(SPALTE(A:F)-1;3)+1;{1.1.1.2.2.2});;;"icn")}        TaubenblauGoldenTaubenblau               TaubenblauTaubenblauGolden               GoldenTaubenblauTaubenblau                                 {=CellContIn(INDEX((A1:C5;E6:G10);REST(ZEILE(1:10)-1;5)+1;SPALTE(A:C);{1;1;1;1;1;2;2;2;2;2});;;"icn")}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Und natürlich lassen sich auch ungleichgroße TeilBereiche so zusammenfügen, wobei es je nach Ausrichtung des Zusammenfügens einfacher ist, wenn sie wenigstens entweder in Spalten- oder Zeilenzahl übereinstimmen.
Gruß, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige