Hallo Experten,
ich hab jetzt nochmal ein Problem…
Und zwar hab ich ja meine Tabelle mit mehreren Werten, die teilweise identisch sind…
Nun hab ich das Problem, dass ich den „letzten“ (Datums-)Wert für eine bedingung herausfinden muss…
Sprich meine Tabelle sieht vereinfacht dargestellt so aus:
identifier datum
ABC060331034 25.1.03
ABC060331034 26.1.03
ABC060331034 23.1.03
ABC060331035 18.2.03
ABC060331035 11.2.03
ABC060331035 19.2.03
ABC060331036 11.3.03
ABC060331036 12.2.03
ich will nun für die jeweiligen identifier das letzte Datum - sprich das „Max()“ rausfinden…
Allerdings weiss ich nicht so recht, wie ich das nun angehen soll…
Ein MAXWENN gibts ja nicht und ich kenne auch keinen Befehl, der mir die Zellenbezeichnungen für eine Suche ausgeben würde
Weitere Hilfsspalten zu erzeugen wäre kein Problem…
Vielleicht hat jemand einen Ansatz für mich?
Danke
Munich
spontane Idee
Hi,
nur mal so ins Unreine gedacht:
und wenn Du einfach Deine Tabelle erst nach dem Identifier und als zweites Kriterium nach dem Datum aufsteigend sortierst?
Dann in einer weiteren Spalte einfach vergleichen: wenn identifier Zeile x ungleich identifier Zeile x+1 dann = Zelle Datum, sonst leer?
Geht bestimmt auch eleganter, das war nur meine erste Idee dazu.
Gruß,
Andreas.
ich will nun für die jeweiligen identifier das letzte Datum -
sprich das „Max()“ rausfinden…
Allerdings weiss ich nicht so recht, wie ich das nun angehen
soll…
Ein MAXWENN gibts ja nicht und ich kenne auch keinen Befehl,
der mir die Zellenbezeichnungen für eine Suche ausgeben würde
Hi Munich,
Tabellenblattname: Tabelle1
A B C
1 identifier datum 26.01.2003
2 ABC060331034 25.01.2003 19.02.2003
3 ABC060331034 26.01.2003 11.03.2003
4 ABC060331034 23.01.2003
5 ABC060331035 18.02.2003
6 ABC060331035 11.02.2003
7 ABC060331035 19.02.2003
8 ABC060331036 11.03.2003
9 ABC060331036 12.02.2003
Benutzte Formeln:
C1: =MaxWenn($A$2:blush:A$9;"ABC060331034")
C2: =MaxWenn($A$2:blush:A$9;"ABC060331035")
C3: =MaxWenn($A$2:blush:A$9;"ABC060331036")
Tabelle eingefügt mit Reinhards Tabelleneinfüger Version 1.0
Function MaxWenn(Bereich As Range, Wert As String)
Dim zei
MaxWenn = DateValue("01.01.1910")
For zei = 2 To Range("A65536").End(xlUp).Row
If Cells(zei, 1) = Wert And CDate(Cells(zei, 2)) \> CDate(MaxWenn) Then MaxWenn = Cells(zei, 2)
Next zei
End Function
Gruß
Reinhard
Hallo Munich,
wenn du die identifier ohne doppelte in einer Tabelle hast kannst du das Max-Datum mit einer Matrix-Formel ermitteln.
A B
1 identifier letztes datum
2 ABC060331034 26.01.2003
3 ABC060331035 19.02.2003
4 ABC060331036 11.03.2003
Matrix-Formel in B2:
=MAX(WENN(A2=Tabelle1!$A$2:blush:A$100;Tabelle1!$B$2:blush:B$100;0))
Eingabe für Matrix-Formel mit Tasten-Kombination Strg+Shift+Enter abschließen!
Formel in B2 kann dann nach unten kopiert werden.
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Reinhard,
irgendwie war mir klar, dass Du meine Rettung sein würdest 
Aber ich krieg das für mich noch nicht so ganz ans laufen… :-/
Tabelle eingefügt mit
Reinhards Tabelleneinfüger Version 1.0
heyyy das klingt klasse 
ich hoffe Du teilst es irgendwann mit uns? 
Function MaxWenn(Bereich As Range, Wert As String)
Dim zei
MaxWenn = DateValue(„01.01.1910“)
For zei = 2 To Range(„A65536“).End(xlUp).Row
If Cells(zei, 1) = Wert And CDate(Cells(zei, 2)) >
CDate(MaxWenn) Then MaxWenn = Cells(zei, 2)
Next zei
End Function
okay - also für die Beispieltabelle hab ichs hinbekommen…
Aber für meinen Fall irgendwie nicht…
da steht der identifier in Spalte B…
also hab ich Cells(zei, 2 ) gemacht und To Range (" B 65536") gemacht… richtig?
Mein Datum steht in Spalte G also hab ich ausserdem
Cells(zei, 7 ) gemacht…?
Jetzt bekomme ich aber ein „#Name?“ zurück :-/
Function MaxWenn(Bereich As Range, Wert As String)
' gets the maximum date value out of an area
Dim zei
MaxWenn = DateValue("01.01.1900")
' Attention - the To Range(-\>A CDate(MaxWenn) Then MaxWenn = Cells(zei, 7)
Next zei
If MaxWenn = 2 Then MaxWenn = 0 ' sets zu zero if not found
End Function
was ist daran denn jetzt noch falsch?
Hallo munich,
Tabelle eingefügt mit
Reinhards Tabelleneinfüger Version 1.0
heyyy das klingt klasse 
ich hoffe Du teilst es irgendwann mit uns? 
das steht in den FAQs, unter Tabellen posten oder so ähnlich.
okay - also für die Beispieltabelle hab ichs hinbekommen…
ich auch 
Aber für meinen Fall irgendwie nicht…
da steht der identifier in Spalte B…
also hab ich Cells(zei, 2 ) gemacht und To Range
(" B 65536") gemacht… richtig?
ja
Mein Datum steht in Spalte G also hab ich ausserdem
Cells(zei, 7 ) gemacht…?
ok
Jetzt bekomme ich aber ein „#Name?“ zurück :-/
Function MaxWenn(Bereich As Range, Wert As String)
’ gets the maximum date value out of an area
Dim zei
MaxWenn = DateValue(„01.01.1900“)
’ Attention - the To Range(->A
CDate(MaxWenn) Then MaxWenn = Cells(zei, 7)
Next zei
If MaxWenn = 2 Then MaxWenn = 0 ’ sets zu zero if not
found
End Function
was ist daran denn jetzt noch falsch?
Tja nun, im englischen Text verwechselst du Row mit Column, aber daran liegt es ja nicht. Kannste ne Beispieltabelle über www.badongo.com o.ä. hochladen?
Woraus ich auch erkennen kann wie der Funktionsaufruf sein soll, also =MaxWenn(A1:A9,„A4711xyz“) oder =MaxWenn(A1:A9,D5)
Gruß
Reinhard
vielen Dank nochmal Reinhard,
aber nachdem ich es mit der Matrixformel ohne VBA lösen konnte habe ich die dazu verwendet…
Vielen Dank aber trotzdem nochmal auch wenn ich nicht so recht verstehe was nun falsch war aber ich will Dir Deine wertvolle Zeit nicht mit einem Problem verschwenden, das ohnehin schon gelöst war 
Grüsse
Munich
vielen Dank *
eine schöne Lösung - hat mich zum Ziel geführt…
Gestatte die Frage wo Du gelernt hast mit Matrixformeln zu arbeiten und wo ich mir solches Wissen vielleicht auch aneignen könnte…?
Grüsse
Munich