4.6k Aufrufe
Gefragt in Tabellenkalkulation von snailhouse Mitglied (179 Punkte)
Hallo zusammen,

ich suche eine Möglichkeit, den Maximalwert aus einem bestimmten Range (in 1er Zeile über mehrere Spalten hinweg) auszulesen
und ausnahmsweise mal per Excel-Formel und nicht per VBA.

Das Problem dabei ist, dass sich in diesem Bereich Spalten befinden, deren Wert NICHT berücksichtigt werden darf.
Diese besonderen Spalten sind in einer anderen Zeile (gleiche Spalte) mit einem "x" markiert.

zum Beispiel:

in Zelle F1 steht ein "x", d.h. die darunter stehende "5" in F2 darf bei der Ermittlung des Maximalwertes in (A2:G2) nicht berücksichtigt werden.
Zeile 1: x
Zeile 2: 1 2 3 4 3 5 3


--> Der Maximalwert f.d. Bereich (A2:G2) wäre in diesem Falle: 4, wenn ich nur über =MAX(A2:G2) auslese, erhalte ich "fälschlicherweise" das Ergebnis: 5

Ein weiteres Problem ist, dass die Tabelle dynamisch aufgebaut wird und ich die Bereiche A2 bis E2 und G2 daher nicht fest definieren kann und dass eine Spalte mit "x" auch in B oder C oder... auftreten kann, sonst wäre ja die Angabe mehrerer Bereiche möglich (=MAX(A2:E2;G2)).


Eine Lösung wäre die Spalten nach dem Aufbau der Tabelle zu durchlaufen und die Bereiche zwischen zwei "x"-Spalten in einen string (Getrennt mit ";") zu schreiben und diese Formel einzufügen.



thisworkbook.worksheets("Tabelle1").cells(3,1).formula="=MAX(" & obengenannterstring & ")"



Aber gibt es hierfür vielleicht auch eine elegante Lösung als Excel-Formel (ohne VBA heißt, nur per VBA die Formel einfügen)?

Im voraus vielen Dank!

Jürgen

4 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Jürgen,

folgende Matrixformel sollte funktionieren.

=MAX(BEREICH.VERSCHIEBEN(A1;;;;ANZAHL(2:2))<>"x";BEREICH.VERSCHIEBEN(A1;1;;;ANZAHL(2:2)))

Sie errechnet den Maximalwert der Zeile 2 beginnend mit Spalte A, deren Zellen in Zeile1 kein "x" enthalten.

Formeleingabe mit Strg+Shift+Enter abschließen

Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Jürgen,

obige Formel ist nicht vollständig.

Hier die Korrektur

=MAX(WENN(BEREICH.VERSCHIEBEN(A1;;;;ANZAHL(2:2))<>"x";BEREICH.VERSCHIEBEN(A1;1;;;ANZAHL(2:2))))

Gruß
Rainer
0 Punkte
Beantwortet von snailhouse Mitglied (179 Punkte)
Hallo Rainer,

super, so hat's geklappt ! :-)

Die Formel trage ich nun per Makro ein, dabei gebe ich die Spaltenzahl direkt ein, weil der Bereich wenn eine Leerzelle auftritt, sonst entsprechend zu klein angenommen wird.

Danke und Gruß
Jürgen
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Jürgen,

probier's mal mit dieser Matrixformel, damit brauchst Du keine Spaltenzahl einzugeben.

=MAX(WENN(BEREICH.VERSCHIEBEN(A1;;;;VERWEIS(2;1/(2:2);SPALTE(2:2)))<>"x";BEREICH.VERSCHIEBEN(A1;1;;;VERWEIS(2;1/(2:2);SPALTE(2:2)))))

Gruß
Rainer
...