Microsoft Excel

Herbers Excel/VBA-Archiv

Dynamische Ausdehnung einer Matrixformel


Betrifft: Dynamische Ausdehnung einer Matrixformel von: Matthias
Geschrieben am: 05.07.2018 14:39:50

Hallo liebe Excelprofis,

ich stehe aktuell vor einem Problem, für das ich seit Stunden keine Lösung finde:

Über eine Matrixfunktion (Arrayfunktion, das Ding das man mit Strg Umschalt Eingabe abschließt) werden aus einem Tabellenblatt alle Werte ermittelt, die bestimmte Kriterien erfüllen.
Der Bereich, über den sich die Matrixfuntion erstreckt, wird dann also mit den entsprechenden Werten befüllt. Die Felder, die nicht benötigt werden, werden frei gelassen. So weit so gut.
Nun soll aber nach dem letzten ermittelten Wert ein anderer Inhalt folgen, es sollen also keine unbenutzten Felder in der Matrixfunktion übrig bleiben.
Ich habe versucht, die leeren Zeilen über ein Makro automatisch zu löschen. Das geht ja bei einer Matrixfunktion nicht.

Wie kann ich also die Größe der Matrixfunktion automatisch der Anzahl der ausgegebenen Werten anpassen?

Vielen Dank schon mal im Vorraus!

  

Betrifft: Das ist keine Frage zu einer Matrixformel! von: lupo1
Geschrieben am: 05.07.2018 14:51:13

Denn Formeln lassen sich nicht ohne Makros dynamisch setzen. Sie sind einfach da. Egal, ob nomale Formel, Matrixformel oder Formelarray (das, was Du meinst).

Du kannst also nur Fehler oder Nullen unterdrücken. Dafür gibt es mehrere Ansätze: Optionen-Nullunterdrückung, Zellformat-Nullunterdrückung einzeln oder WENN/WENNFEHLER.


  

Betrifft: AW: Dynamische Ausdehnung einer Matrixformel von: Daniel
Geschrieben am: 05.07.2018 15:07:28

Hi

vermutlich musst du die Matrixformel löschen und sie dann in den geänderten Zellbereich neu eingeben.
um alle Zellen zu selektieren, die zum Array gehören, gibt es die Funktionen:

Excel: Start - Bearbeiten - Suchen und Auswählen - InhalteAuswählen - Aktuelles Array
VBA: Range("xxx").CurrentArray

Gruß Daniel


  

Betrifft: Das kann man machen, ... von: Luc:-?
Geschrieben am: 05.07.2018 19:03:31

…Matthias,
aber, wie schon Lupo schrieb, in Xl nur per VBA-Unterstützung, wobei der Zeilen-Spalten-Bedarf ermittelt wird. Das macht andere Calc-Software ggf automatisch, zB LO/OOcalc. Aber, dass Xl das nicht macht, hat auch Vorteile, weil man so auch nur einen Teil der Ergeb­nis­Matrix ausgeben kann. Allerdings ist das einseitig, denn die Matrix beginnt immer mit ihrem Anfang. Wollte man einen beliebigen Teil ausgeben, müsste zusätzlich INDEX angewendet wdn. Aber dann hat man wieder das Problem mit dem BereichsEnde, denn die abgebil­dete Größe richtet sich immer nach der Auswahl.
Allerdings ist fraglich, wie du die nächste Tabelle anschließen willst, wenn sich der Wiedergabe­Bereich der (pluralen) MatrixFml dyna­misch ändert und auch mal größer wdn kann‽ Das würde bei allen LösungsVarianten problematisch wdn! Ansonsten könnte man auch versuchen, aus der pluralen MatrixFml mittels INDEX eine Schar von singularen MatrixFmln zu machen, was ich normalerweise nicht emp­fehle, hier aber - bei nicht zu großem ErgebnisDatenUmfang - eine Lösung sein könnte.
Desweiteren ist fraglich, wie du für überzählig ausgewählte Zellen LeerTexte erreichen willst‽ Normalerweise setzt die Xl-Steuerung in solchen Fällen den FehlerWert #NV, der nicht mit der primären Fml ersetzt wdn kann, sondern hier nur per zusätzlichen LeerText-Ele­menten.
Was mit einer umschließenden und sie unterstützenden, aber physisch von ihr getrennten VBA-Pgmm erreichbar wäre, zeigen die fol­gen­den Abbildungen:




Der Einsatz dieser UDF setzt generell die Installation des sie und ihre UnterstützungsPgmm enthaltenden (unpublizierten) AddIns, sowie eine mit diesem erzeugbare EreignisProzedur voraus. Das Ganze ist so komplex, dass ich das auch nicht ständig im Einsatz habe. Des­halb soll es hier nur als Anregung für EigenEntwicklungen dienen.
Gruß, Luc :-?


  

Betrifft: AW: Dynamische Ausdehnung einer Matrixformel von: Sulprobil
Geschrieben am: 06.07.2018 19:45:32

Hallo,

Mit Ausnahme von (nicht ratsamen) Tricks können Funktionen die Excelumgebung (andere Zellen als die gewählten Ergebniszellen) nicht ändern.

Zugegebenermaßen einfach, aber ich würde diesen Ansatz wählen:
http://www.sulprobil.com/Get_it_done/IT/Excel_Fun/Excel_VBA/ListFreq/sbUniq/sbuniq.html

Viele Grüße,
Bernd P


Beiträge aus dem Excel-Forum zum Thema "Dynamische Ausdehnung einer Matrixformel"