Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Erster Spaltenwert größer Null ausgeben

Erster Spaltenwert größer Null ausgeben
18.02.2015 05:27:53
Jan
Hallo zusammen,
ich habe folgendes Anliegen. Ich benötige eine simple Funktion (Excel 2007) mit der ich den jeweils ersten Spaltenwert auslesen kann, der größer ist als null.
Die gesamte Aufgabe besteht darin, rückwirkend die Materialpreise für ein Produkt zu berechnen, dessen Rohmaterial zu unterschiedlichen Zeitpunkten bezogen wurde.
In Zeilen B4-B10 steht das Beschaffungsdatum , absteigend sortiert. (neustes Datum steht oben)
Jeweils zwei Spalten gehören zu einem Material (erste Spalte Menge, zweite Spalte Preis). (Für Material A stehen in Spalte C4-C10 Mengen und D4-D10 die dazugehörigen Preise). Wurde zu einem Datum nichts bezogen, ist das Feld leer. Analog dazu Materialien B, C, D)
Nun möchte ich für die Materialien A-D jeweils den ersten Spaltenwert für Menge und Preis haben, um so die letzten Rohmaterialpreise zu erhalten.
Habe es mit SVERWEIS und mit Index versucht - komme aber so nicht weiter.
=INDEX(C4:C10;VERGLEICH(">0";C4:C10;0);)
Hier habe ich die Datei angehängt.
https://www.herber.de/bbs/user/95830.xlsx
Bin für sämtliche Hinweise dankbar. Danke.
Grüße
Jan

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
{=INDEX(C1:C10;MIN(WENN(C4:C10>0;ZEILE(4:10))))}
18.02.2015 06:20:28
WF
.

AW: Erster Spaltenwert größer Null ausgeben
18.02.2015 06:29:12
Jan
Super, vielen Dank!
Wäre klasse, wenn du noch kurz deine Vorgehensweise erläutern könntest - verstehe nicht ganz, die einzelnen Formelteile, danke :)

mit F9
18.02.2015 06:50:04
WF
markiere in der Formel den Teil
WENN(C4:C10>0;ZEILE(4:10)))
betätige F9 und Du siehst
{FALSCH;5;FALSCH;FALSCH;8;FALSCH;FALSCH}
das sind die Zeilenzahlen, die Werte >0 enhalten
MIN(...) drumrum ergibt 5
INDEX(C1:C10;5) ergibt den Inhalt von C5
WF

Anzeige
AW: mit F9
18.02.2015 06:57:39
Jan
Vielen Dank!

zwei Alternativen mit HÄUFIGKEIT() ...
18.02.2015 07:46:53
neopa
Hallo Jan,
... die wohl (bisher) kürzeste Formelvariante wäre:
{=MAX(HÄUFIGKEIT(1;(C4:C10>0)*1)*C4:C11)}
Und als Formelvariante ohne die spez. {} - Klammereingabe:
=INDEX(C:C;3+VERGLEICH(1;HÄUFIGKEIT(1;(C4:C10>0)*1);))
Gruß Werner
.. , - ...

Anzeige
jetzt musst Du ihm das noch erklären
18.02.2015 07:56:30
WF
.

möglich auch nicht, denn ...
18.02.2015 08:27:58
neopa
Hallo WF,
... die Meisten sind nach der Erfüllung ihrer Zielstellung zufrieden und werden erst bei der nächsten Problemstellung wieder im Forum aktiv.
Gruß Werner
.. , - ...
oT: bist Du eigentlich noch oder schon so lange auf?

AW: möglich auch nicht, denn ...
18.02.2015 09:08:00
Jan
Also ich würde mich über eine kurze Erklärung der dahinterstehenden Logik freuen - damit kann ich die Lösung dann auf andere ähnlich gelagerte Probleme transferieren. Danke.

Anzeige
Erläuterungen zu den 2 HÄUFIGKEIT()s-Formeln ...
18.02.2015 10:45:55
neopa
Hallo Jan,
... hatte eigentlich gehofft es nicht tun zu müssen, weil das für mich wesentlich schwieriger ist und länger dauert als die Formel aufzustellen. Zumal Du auch als Level Deiner Excelkenntnisse nur Basiskenntnisse angegeben hast.
Als Basiskenntnisse würde ich z.B. die der Funktionsweise von MAX() und mit Abstrichen auch VERGLEICH() dazu zählen. Die Funktionsweise von HÄUFIGKEIT() ist mE selbst fortgeschrittenen Excelnutzern nicht zu häufig wirklich verständlich. Hier kommt hinzu, dass diese in der Onlinehilfe nicht so erklärt wird, wie ich sie anwende. Umfassender erklärt wird die Funktion mE schon hier:
http://www.online-excel.de/excel/singsel.php?f=146. Aber auch dort findet Du nicht 1:1 das so wieder, wie ich die Funktion hier eingesetzt habe.
Um die Wirkungsweise der beiden Formeln zu verstehen, sollte man die Grundlagen der Anwendung von Matrixauswertungen im Wesentlichen verstanden haben. Dazu empfehle ich Dir Dich mit den Ausführungen hier: http://www.online-excel.de/excel/singsel.php?f=26 und ff auseinanderzusetzen.
Um derartige Formeln aufzustellen, gehört dann mE unabdingbar noch eine nicht unbedeutende Portion an Erfahrung bzgl. derartiger Formelkonstruktionen dazu.
Allerdings kann man die Formeln trotzdem schon relativ leicht zumindest nachzuvollziehen, in dem man das von WF ausgewiesenen Hilfsmittel [F9] einsetzt.
Zur MAX()-Formel:
Schau Dir mit [F9] den Formelteil:

(C4:C10>0)*1)*C4:C11
an und danach auch mit [F9] den Teil:

HÄUFIGKEIT(1;(C4:C10>0)*1)*C4:C11
Nun ist sicherlich schon verständlich, was MAX() als Ergebnis der Matrixformel nur auswerfen kann. Doch beachte: Das ist so nur möglich, weil Du Deine Zeile 11 leer gelassen hast und ich (scheinbar gegen die Standardregeln der Matrixformelerstellung) dies mit C4:C11 (und dort eben nicht auch C4:C10) zu "Gunsten" des angestrebten Ergebnisses ausnutze.

Zur INDEX() und VERGLEICH()-Formel:

Zum Grundverständnis dieser Funktionskombination solltest Du Dir folgende Seite: http://www.online-excel.de/excel/singsel.php?f=39 zu Gemüte führen.
Mit (C4:C10>0)*1 wird eine Matrix aus 1en und 0en generiert (mit [F9] leicht erkenntlich), die als Klassen dem HÄUFIGKEIT()s-Funktionsformel HÄUFIGKEIT(1;(C4:C10>0)*1) übergeben wird, die (nutze auch dafür wieder [F9]) für die Daten (hier steht nur ein Wert nämlich die 1) wieder eine Teilergebnismatrix von 1en und 0en ermittelt, die nun mit der VERGLEICH()-Funktion ausgewertet wird. Im (Teil)Ergebnis dessen (auch wieder mit [F9] nachzuvollziehen) wird für die erste gefundene 1 die, nennen wir es allgemein "Standortplatznummer" innerhalb der Matrix, ermittelt und diese dann der INDEX()-Funktion als (hier) Zeilenparameter (der Spaltenparameter ist hier ja nicht notwendig) übergeben. Diese Funktion wirft nun endlich das Ergebnis aus der Riesenmatrix aller Werte in C:C genau von der Stelle aus, die ihm als Zeilenparameter übergeben wird.
Allerdings wurde in der Formel die "Standortplatznummer" nur für den Teilmatrixbereich:

HÄUFIGKEIT(1;(C4:C10>0)*1)
der durch den Bereich C4:C10 bestimmt ist, ermittelt. Deshalb muss dem Teilergebnis von VERGLEICH() noch die Zeilenanzahl vor der Zeile von C4 also 4-1=3 addiert werden, denn die Matrix C:C beginnt ja stets in Zeile Nr. 1.
Nachvollziehbar? Verständlich?
Gruß Werner
.. , - ...

Anzeige
AW: Erläuterungen zu den 2 HÄUFIGKEIT()s-Formeln ...
18.02.2015 12:55:49
Jan
Hallo Werner,
danke, dass du dir die Zeit genommen hast, ein paar erklärende Worte zu der von dir erstellten Formel zuschreiben! Habe nicht gewusst, dass sich die Häufigkeitsfunktion derart umfunktionieren lässt! Respekt - darauf muss man erst mal kommen!
Jetzt kann ich zumindest nachvollziehen, was du mit dieser Funktion bezwecken wolltest! Aber bis man sich selbst sowas zusammenbauen kann, bedarf es schon eines viel tieferen Verständnisses der Funktion!
Das soll mir aber erst mal reichen :)
Grüße
Jan

Anzeige
Danke ... und ...
18.02.2015 13:30:06
neopa
Hallo Jan,
... Deine Aussagen kann ich nachvollziehen, denn vor Jahren hätte ich eine ähnliche Aussage getroffen, wenn mir jemand das so vor die Nase gesetzt hätte ;-)
Doch mit der Zeit ... viel Erfolg.
Gruß Werner
.. , - ...
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Erster Spaltenwert größer Null ausgeben in Excel


Schritt-für-Schritt-Anleitung

Um den ersten Spaltenwert größer null in Excel zu finden, kannst Du folgende Schritte ausführen:

  1. Daten vorbereiten: Stelle sicher, dass Deine Daten in einem Bereich wie B4:B10 für Beschaffungsdaten und C4:C10 für Mengen sowie D4:D10 für Preise angeordnet sind.
  2. Formel eingeben: Verwende die folgende Array-Formel, um den ersten Wert größer als null zu ermitteln:
    {=INDEX(C4:C10;MIN(WENN(C4:C10>0;ZEILE(4:10))))}

    Diese Formel gibt Dir den ersten Wert zurück, der größer als null ist.

  3. Formel bestätigen: Da dies eine Array-Formel ist, musst Du die Eingabe mit STRG + UMSCHALT + ENTER bestätigen, nicht nur mit ENTER.
  4. Ergebnisse überprüfen: Um die Funktion zu testen, kannst Du sie in eine leere Zelle eingeben. Der Wert sollte der erste Wert in Deinem angegebenen Bereich sein, der größer als null ist.

Häufige Fehler und Lösungen

  • Fehler: #WERT!
    Lösung: Überprüfe, ob Deine Formel korrekt eingegeben wurde und ob Du die STRG + UMSCHALT + ENTER Kombination verwendet hast.

  • Fehler: kein Ergebnis
    Lösung: Stelle sicher, dass es tatsächlich Werte größer als null im angegebenen Bereich gibt.


Alternative Methoden

  1. HÄUFIGKEIT()-Funktion: Eine Alternative zur oben genannten Formel ist die Nutzung der HÄUFIGKEIT()-Funktion:

    =MAX(HÄUFIGKEIT(1;(C4:C10>0)*1)*C4:C11)

    Diese Formel findet ebenfalls den ersten Wert größer als null.

  2. VERGLEICH()-Funktion: Du kannst auch die VERGLEICH()-Funktion in Kombination mit INDEX() verwenden:

    =INDEX(C:C;3+VERGLEICH(1;HÄUFIGKEIT(1;(C4:C10>0)*1);))

Praktische Beispiele

Angenommen, Deine Daten in C4:C10 sind wie folgt:

Menge
5
10
0
15

Wenn Du die oben genannten Formeln anwendest, sollte das Ergebnis 5 sein, da dies der erste Wert größer als null in der Liste ist.


Tipps für Profis

  • Nutze die F9-Taste zur Überprüfung von Teilen Deiner Formeln. Dies hilft Dir zu verstehen, welche Werte und Matrizen von Excel erzeugt werden.
  • Halte Deine Formeln sauber und verlinke sie mit Kommentaren, um anderen (oder Dir selbst) das Verständnis zu erleichtern.
  • Experimentiere mit den Array-Funktionen, um ihre Flexibilität in verschiedenen Szenarien zu erkennen.

FAQ: Häufige Fragen

1. Wie kann ich den ersten Wert größer als null für mehrere Spalten finden?
Du kannst die oben genannten Formeln für jede Spalte anpassen, indem Du den entsprechenden Bereich änderst.

2. Funktioniert dies in Excel 2003 oder anderen älteren Versionen?
Ja, die Formeln funktionieren auch in Excel 2003, aber die Benutzeroberfläche könnte unterschiedlich sein.

3. Was mache ich, wenn meine Daten in einer anderen Zeile beginnen?
Passe die Zeilenreferenzen in den Formeln entsprechend an. Wenn Deine Daten z.B. in Zeile 5 beginnen, ändere die Zeilen in der Formel entsprechend.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige