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

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

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

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.

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

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
.. , - ...
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige