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

Skuriler Excel-Fehler mit Matrixformel

Skuriler Excel-Fehler mit Matrixformel
11.03.2014 09:18:25
Calliano
Hallo liebe Excel-Freunde,
Hier habe ich ein Problem für die Matrix-Spezialisten. Eine Matrixformel hat das Ergebnis {falsch.wahr}, das wird auch mit F2/F9 angezeigt, ebenso bei Eingabe der Matrixformel über mehrere Zellen.
Bei Weiterverarbeitung mit bspw. ODER(Matrixformel) wird mit F2/F9 auch wie erwartet als Ergebnis WAHR angezeigt. Gibt man die Matrixformel jedoch mit Umsch./Strg/Eingabe ein, wird als Ergebnis FALSCH angezeigt, und das ist natürlich falsch.
Oder({falsch.wahr}) sollte natürlich WAHR egeben.
Das ganze tritt hier mit Excel2003SP3 auf. Ist das bei aktuelleren Versionen immernoch so?
Zum Testen hier die Matrixformel. Diese macht VBA-frei weiter, wo SVERWEIS() aufhört. Sie liefert alle Daten, deren Vergleichswerte dem Suchkriterium entsprechen als Matrix und diese hat dann auch genau die Größe, die der Trefferanzahl entspricht.
Außerdem brauchen die Daten, nach denen gesucht wird nicht in der ersten Spalte der Matrix stehen, sondern die Nummer der Vergleichsspalte wird angegeben. Matrix darf auch größer sein, als in diesem Sandboxbeispiel angegeben und beliebige Daten enthalten.
Matrix:
a FALSCH
a WAHR
b WAHR
Suchkriterium: a
Vergleichspalte: 1
Spaltenindex: 2
Bezüge am besten mit Einfügen/Namen/Definieren… benennen.
Matrixformel:
=BEREICH.VERSCHIEBEN(Matrix; VERGLEICH(SPALTE(INDIREKT("Z1S1:Z1S"&ZÄHLENWENN(BEREICH.VERSCHIEBEN(Matrix;0;Vergleichsspalte-1;;1); Suchkriterium);FALSCH));ZÄHLENWENN(BEREICH.VERSCHIEBEN(Matrix;0;Vergleichsspalte-1; ZEILE(INDIREKT("Z1S1:Z"&ZEILEN(Matrix)&"S1";FALSCH));1);Suchkriterium);0)-1;Spaltenindex-1;1;1)
Bei Eingabe der Formel über mehrere Zellen und Weiterverarbeitung des Bereichs mit ODER() funktioniert alles wie gewünscht, hat bloß den kleinen Schönheitsfehler, dass man die Formel in genau sovie Zellen eingeben muß, wie es später Treffer gibt. Funktioniert also nur wenn mann die Trefferzahl vorher kennt und dann ginge es ja sowieso auch mit einer weniger aufwendigen Formel.
Also, kann jemand sagen, ob das mit neueren Excel-Versionen inzwischen funktioniert oder wo vielleicht an der Formel gefeilt werden kann?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispielmappe ? (owT)
11.03.2014 10:18:43
EtoPHG

AW: Skuriler Excel-Fehler mit Matrixformel
11.03.2014 11:42:03
{Boris}
Hi,
BEREICH.VERSCHIEBEN liefert nicht immer eine arrayfähige Matrix. Den notwendigen Anschubser liefern dabei die winzigen Funktionen N und T - N() für Zahlenarrays und T() für Textarrays.
Also: BEREICH.VERSCHIEBEN mit N umranden, und das Ergebnis stimmt.
Einschränkung: Bis Excel 2003 überschreitet man in diesem konkreten Fall die maximale Schachteltiefe einer Formel. Da müsste man noch zusätzlich einen Formelteil "benamsen".
Ab xl2007 aber auch ohne das problemlos möglich.
VG, Boris

Anzeige
AW: Skuriler Excel-Fehler mit Matrixformel
16.03.2014 12:03:45
Calliano
Danke Boris, genau so gehts.
Mit N() Liefert nicht nur die Vorschau, sondern auch das Zellergebnis den erwarteten Wert. Wie auch schon richtig vorhergesagt muß ein Formelteil (hier z. B. die Treffermatrix) "benamst" werden.
Vielleicht muß ich doch mal auf ne neuere Excelversion umsteigen, weil die "benamserei" die Formel irgendwie statischer macht.
Vielen Dank

der aber nicht notwendig ist, ...
11.03.2014 14:06:09
der
Hallo Calliano,
... Dir dürfte es doch vordergründig um Dein "Auswertungsergebnis" gehen.
Das kannst Du aber auch viel einfacher und flexibler haben als mit dem Formelungetüm mit BEREICH.VERSCHIEBEN() und INDIREKT().
Die nachfolgende MATRIXFormel ist es auch egal wieviel "Treffer" es gibt, es wertet die aus den definierten Bedingungen entstehende Matrix sofort aus.
=SUMMENPRODUKT((INDEX(C2:Z99;;1)=Suchkriterium)*(INDEX(C2:Z99;;Spaltenindex)=WAHR))>0
oder alternativ:
{=SUMME((INDEX(C2:Z9;;1)=Suchkriterium)*(INDEX(C2:Z9;;Spaltenindex)=WAHR))}>0

Gruß Werner
.. , - ...

Anzeige
AW: der aber nicht notwendig ist, ...
16.03.2014 12:13:21
Calliano
Yepp, klar, dass das geht.
Die Formel einfach so frisieren, dass bei nicht passendem Vergleich statt dem Zielinhalt irgendwas unschädliches ausgegeben wird. Gibt nicht ganz so ne fiese Monsterformel.
Ist allerdings nicht ganz meine Zielrichtung. Ist doch ganz schön 'ne Formel zu haben, die z. B. auch den Mittelwert oder was auch immer der gesuchten Elemente ausrechnen könnte.
Für Summe gibts ja Summewenn() was auch viel einfacher wäre. Bei der Frisörmethode hätte ich also ne ganze Reihe spezieller Formeln. Da nehm ich lieber die Matrixformel, bei der nur die äußere Auswertungsformel anders wird, zumindest solange Speicherverbrauch und Zeitbedarf nicht ausufert.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige