Excel letzten Wert in Zeile ausgeben?
Moin,
Folgendes Problem:
ich habe eine Liste von Artikeln in Spalte A und in den Spalten B bis M (Januar-Dezember) Preise der Artikel.
es stehen nicht in jeder Zelle Preise, manchmal auch nur im Januar und dann erst wieder im April beispielsweise.
Jetzt möchte ich am Ende in Spalte N eine neue Spalte anlegen in der für jeden Artikel aus Spalte A jeweils den letzten eingetragenen Preis sehe.
Hat jemand eine Idee?
3 Antworten
Das sollte mit der Formel:
=OFFSET(A1;0;SUMPRODUCT(MAX(ISNUMBER(A1:M1)*COLUMN(A1:M1)))-1;1;1)
bzw. mit deutschen Formelnamen:
=VERSCHIEBUNG(A1;0;SUMMENPRODUKT(MAX(ISTZAHL(A1:M1)*SPALTE(A1:M1)))-1;1;1)
gehen (Anpassungen für Deine tatsächliche erste Zeile musst Du natürlich selbst vornehmen)
Anmerkung: In Excel - was ich nicht zur Verfügung habe - ist SUMPRODUCT eventuell nicht erforderlich, da Excel meines Wissens sehr viele Funktionen mit einer impliziten Matrixevaluierung ausgestattet hat, sobald ein ganzer Bereich als Argument übergeben wird. In LibreOffice Calc - womit ich obige Formeln getestet habe - nutzt man meist SUMPRODUCT, um eine Matrixevaluierung zu erzwingen
Meine Lösung wäre das folgende:
zur Erklärung:
Max((A1:E1<>"")*Spalte(A1:E1)) ermittelt die größte befüllte Spaltennummer
Zeile() ermitteln nun noch die aktuelle Zeile
mit Adresse wird dies zu Demonstrationszwecken zu einem gültigen Zellbezug kombiniert.
Alternativ könnte man diese Formel noch mit Indirekt umschließen und würde auch das richtige Ergebnis erhalten. Ich versuche aber Indirekt so sparsam wie möglich zu verwenden, zumindest früher war Indirekt nicht ganz unumstritten, da es als volatile Funktion Berechnungen bei allem mögliche auslöst.
die andere Variante mit Index komplettiert nur die Variante mit Adresse hier muss lediglich nochmal der Bereich angegeben werden, daher am Anfang A:E
sind die Felder hingegen nicht leer sondern enthalten 0 müsste die Max Bedingung entsprechend angepasst werden, oder du verwendest gleich GutenTag2003 seine Variante.

oder
=INDEX(A:I;ZEILE();ZÄHLENWENN(A4:I4;"<=0"))


In den Zellen die gezählt werden sollen*), muss etwas stehen, mindestens eine "0". Blank führt zu einer anderen Adresse (Zelle).
Vielleicht hast Du eine Idee, dieses Problem aufzulösen.
.
*) zwischen 2 Beträgen.
Leider kann ich keine Screenshots anhängen deswegen hab ich jetzt doch was eigenes geschrieben.
Meine Lösung wäre gewesen:
=INDEX(A:F;ZEILE();MAX((A1:E1<>"")*SPALTE(A1:E1)))
Super.
Sonst hätte ich alle Zellen mit einer "0" vorbelegt und nach Bedarf überschrieben.
Das mit 0 geht natürlich auch aber je nach Anwendungsmöglichkeiten mag das in dem ein oberen Fall evtl. doof sein, man weiß ja als antwortender hier nie was hinten noch großes dran hängt.
Muss natürlich Index(A:E.... heißen. Sollte sich ja auf den gleichen Bereich beziehen wie die Max Berechnung.
Da ich den Bezug auf eine andere Zeile verändert/angepasst hatte, ist mir das nicht aufgefallen.
Da die Lösung eigentlich schon super ist verzichte ich auf eine eigene. Ich würde sie jedoch etwas modifizieren anstelle von <=0 würde ich <>0 oder <>"" nehmen andernfalls hast du mit Leerzellen ein Problem.