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

Anzeige Anzahl Min-/Max-Werte aus Datentabelle

Anzeige Anzahl Min-/Max-Werte aus Datentabelle
01.04.2013 20:11:27
Joerschi
Hallo liebes Forum,
Je Spalte sind für 30 Datensätze Werte aufgelistet die nach oben /unten einen höchsten/niedrigsten Randwert besitzen. (=Min / Max).
Ausgehend von den Spalten versuche ich jetzt folgende Fragestellung via Formel zu ermitteln:
Je Datensatz soll bestimmt werden, wieviele Min/Max-Randwerte vorhanden sind, wenn man alle Spalten als Ausgangsdaten zugrunde legt.
a) gelb markiert: Wenn der Datensatz einen Randwert allein besitzt. (kein anderer Datensatz hat einen gleich hohen Min/Max-Randwert)
b) grün markiert: Wenn der Datensatz sich Randwerte mit anderen Datensätzen teilt. (z. B. mehrfach die "0" als niedrigster Min-Wert)
Als Beispiel folgende Datensätze mit xls-Beispieldatei (die Eintragungen bei den späteren gelben und grünen Formelfeldern habe ich manuell vorgenommen - hoffe, es stimmt alles :-) ):
Userbild
(Minimum-Werte wurde der Einfachheit halber jeweils orange gekennzeichnet, Max blau)
Beispieldatei: https://www.herber.de/bbs/user/84656.xls
Hat jemand einen Tip zur Umsetzung?
Vielen Dank im Voraus und beste Grüße
Joerschi

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzeige Anzahl Min-/Max-Werte aus Datentabelle
02.04.2013 10:47:41
Arthur
Hi Joerschi.
Für die Anzahl Min, Spalte N (bsp für Zeile 9):
{=SUMME(($B9:$I9=$B$34:$I$34)*1)}
Die geschweiften Klammern nicht mit eingeben, anstelle dessen Ctrl-Enter drücken.
Gleiches gilt für die Max, nur Zeile 35 als Vergleichswerte.
Gruß, Arthur

AW: Anzeige Anzahl Min-/Max-Werte aus Datentabelle
02.04.2013 10:59:25
Joerschi
Hallo Arthur,
danke für die Lösung. Hilft mir aber nur zur Hälfte weiter, da "nur" abgebildet wird, was eine gemeinsamer Randwert ist ;-(
Hättest Du auch noch eine Idee für a) Alleiniger Randwert? (gelb markiert)
Viele Grüße
Joerschi

AW: Anzeige Anzahl Min-/Max-Werte aus Datentabelle
02.04.2013 11:16:46
JACKD
Hallo Joerschi
Arthur seine Lösung ist m.E. nur unzureichend.
Zum ersten, (sofern ich den Ansatz richtig verstanden hab) sind die gemeinsamen Randwerte ohne die Alleinigen Randwerte (Sprich Gesamt Min/Max - alleinig min/max)
zum anderen ist der alleinige Randwert der eigentlich schwierige Teil.
aber Lösbar
http://www.excelformeln.de/formeln.html?welcher=495
musst nur in deine Denke transponieren. Dann den Ansatz von arthur für Spalte N und O nehmen und abzüglich Spalte K bzw. L
Grüße

Anzeige
AW: Anzeige Anzahl Min-/Max-Werte aus Datentabelle
02.04.2013 11:43:39
JACKD
Hier ne Lösung
Sicher nicht die schönste und recht pflegeaufwändig, aber sie funktioniert...
Grüße
https://www.herber.de/bbs/user/84673.xls

AW: Anzeige Anzahl Min-/Max-Werte aus Datentabelle
02.04.2013 13:31:06
Joerschi
Hi JACKD,
vielen Dank für die Idee. Aber Du hast recht - das ist tatsächlich wahnsinnig aufwendig und eine riesengroße "Wiederholungsformel".
In der "Realität" müssen jedoch ca. 100 spalten mit Bedingungen geprüft werden, aus Vereinfachungsgründen hatte ich hier nur 8 angegeben. Das würde dann den Formelrahmen weit sprengen.
Eine Lösung mit einer Art "Matrix" B3:I32 ist sicher die naheliegendste Lösung, allein mir will kein Ansatz einfallen, wie man das umsetzt.
Ich lasse die Frage auf offen - vielleicht hat jemand noch einen anderen Ansatz.
Danke Dir und viele Grüße
Joerschi
PS: Danke auch für den Link im Vorpost. Damit kann man aber leider "nur" die gemeinsamen Randwerte bestimmen. :-(

Anzeige
AW: Anzeige Anzahl Min-/Max-Werte aus Datentabelle
02.04.2013 13:36:19
JACKD
Hallo Joerschi
Das hab ich mir schon fast gedacht =)
Nun mit Matrixformeln bin ich persönlich jetzt nicht so fit.
Was aber noch denkbar wär sind
a) Hilfsspalten (bei denen du die Formeln nur rüber kopierst) und dann Auswertest
b) ein Makro
Grüße

Formel weiterhin gesucht :-( (Alleiniger Randwert)
02.04.2013 13:42:02
Joerschi
ich finde Hilfspalten irgendwie "unelegant". Man verschiebt das eigentliche Problem nur.
Wie gesagt, mal schauen, ob noch einer der User eine bessere Idee hat, wie man das alles in einer "einfacheren" Formel abbildet. Wäre super.
Thx und LG
Joerschi

Da ist einiges nicht ganz klar, ...
02.04.2013 22:42:27
Luc:-?
…Joerschi,
denn du schreibst ja …
Je Datensatz soll bestimmt werden, wieviele Min/Max-Randwerte vorhanden sind, wenn man alle Spalten als Ausgangsdaten zugrunde legt.
Deine BedingtFormatierung der Extrema (Randwerte) pro DSatz berücksichtigt aber nur die in der gleichen Spalte, nicht in allen Spalten. (Nebenbei, ungünstig gemacht ist sie wohl auch – sieht zumindest unter Xl12 so aus.)
Von der richtigen Interpretation der Aufgabe hängt schließlich die Lösung ab.
Gruß Luc :-?

Anzeige
AW: so ists genauer...
02.04.2013 22:50:57
Joerschi
Hallo Luc:-?,
sorry, es ist schwierig das richtig auszudrücken (wiewohl die beiden Vorposter wussten was ich meinte).
Daher auch mein grafisches Beispiel zum besser verstehen.
Ganz richtig sollte es lauten:
Je Datensatz soll bestimmt werden, wieviele alleinige Min/Max-Randwerte dieser Datensatz hat, wenn man alle Spalten jeweils wiederholt (für sich) als Ausgangsdaten zugrunde legt.
Viele Grüße
Joerschi

Naja, genauer; hängt wohl von der ...
03.04.2013 02:42:21
der
…Interpretation ab, Joerschi… ;-)
Zwischenzeitlich habe ich mich dann doch mal nach deiner BedingtFormat-Minimax-Markierung gerichtet, nachdem ich sie erst an meine Maximalinterpretation anpassen wollte, und den DS-Extrema-Vgl satzpositionsbezogen entwickelt, da ich davon ausgehe, dass es sich hierbei auch um unterschiedl Inhalte handelt. Habe auch 4 fertige Ergebnisspalten, die mit deinen Vorgaben übereinstimmen — bis auf O29, da hast du wohl die blaue, in Spalte F zuvor schon 3× aufgetretene 6 in F29 übersehen. Oder war die Zelle bei dir nicht blau (hatte das BedingtFormat vereinfacht)?
Die Fmln müssen noch für deine Möglichkeiten umgebaut wdn, da sie zZ noch eine spezielle Form (mit Auswertungsfkt) haben. Ggf kann man in der Zelle analoge Effekte durch INDIREKT-Einbeziehung erzielen, ansonsten kann das bestimmt über eine benannte Fml auf der Basis von AUSWERTEN gelöst wdn.
Die getesteten Fmln lauten:
K3[:K32*]:=SUMMENPRODUKT(TransFor(A$1:A$8;"--(sum(index(--(B3:I32=B34:I34),0,#)*index(--(B3:I32=B34:I34),"&ZEILEN(A$1:A1)&",#))=1)"))
L3[:L32*]:=SUMMENPRODUKT(TransFor(A$1:A$8;"--(sum(index(--(B3:I32=B35:I35),0,#)*index(--(B3:I32=B35:I35),"&ZEILEN(A$1:A1)&",#))=1)"))
N3[:N32*]:=SUMMENPRODUKT(TransFor(A$1:A$8;"--(sum(index(--(B3:I32=B34:I34),0,#)*index(--(B3:I32=B34:I34),"&ZEILEN(A$1:A1)&",#))>1)"))
O3[:O32*]:=SUMMENPRODUKT(TransFor(A$1:A$8;"--(sum(index(--(B3:I32=B35:I35),0,#)*index(--(B3:I32=B35:I35),"&ZEILEN(A$1:A1)&",#))>1)"))
* In Zeile 32 heißt es in der Fml dann ZEILEN(A$1:A30).
Hierbei könnte das UDF-TransFor-Konstrukt in einer benannten Fml ggf durch AUSWERTEN(WECHSELN(…)) ersetzt wdn (# fungiert in obigem FmlText als Platzhalter für die Zeilennrn von A$1:A$8).
Falls im Laufe des Tages keine dementsprd Lösung gefunden wird und du das auch nicht selbst umsetzen kannst, werde ich das heute abend zu erledigen versuchen.
Morrn! Luc :-?

Anzeige
AW: Naja, genauer; hängt wohl von der ...
03.04.2013 17:40:28
der
hi Luc:-?
danke Dir für die Ausführungen (wobei ich gern zugebe, nur die Hälfte verstanden zu haben: grad die Beispielformeln sind schon nicht ganz ohne...)
Bei O29 hast Du recht. Da muss ne 1 rein. War im manuellen Tippen versehentlich falsch eingegeben (genau deswegen sind Formeln so toll :-), da passiert das nicht).
Ich habe mich nun im Umstellen fast ne Stunde versucht (AUSWERTEN(WECHSELN(…)), .... usw. ), aber ich bekomme nicht Vernünftiges hin (sprich was funktioniert). scheint mehr tricky zu sein als die Aufgabe zuerst vermuten lässt. Kannst Du bitte nochmal ansetzen, falls Du Zeit findest? Das wäre echt super. Ich komme einfach nicht dahinter.
Liebe Grüße
Joerschi

Anzeige
Ja, inzwischen hab' ich was fertig, ...
03.04.2013 21:13:42
Luc:-?
…Joerschi,
allerdings ging's mir genauso wie dir, bestimmte Operationen klappen auch mit AUSWERTEN nicht! Das sind meistens Formeln mit Fktt, die der xlinternen externen MatrixSteuerung unterliegen; bei INDEX ist das oft so.
Aber langer Rede kurzer Sinn, es geht evtl auch mit irgendeiner Fml bei XlFmln, aber eh' wir lange suchen habe ich lieber schnell noch eine 4.UDF-Version zum Thema FmlText-Auswerten (jetzt hab' ich also 2 für engl und 2 für dt FmlTexte und jede ist anders!) geschrieben. Hier aber erst mal ein Bild des Ergebnisses (die HTML-Variante kann leider zZ nicht alles abbilden):Userbild
Dazu hier noch mal die relevanten Formeln (wg Bild!).
Benannte Fmln:
MinSummen:=SUMME(INDEX(--($B$3:$I$32=$B$34:$I$34);0;"#")*INDEX(--($B$3:$I$32=$B$34:$I$34);ZEILEN(IS$1:IS36);"#"))
MaxSummen:=SUMME(INDEX(--($B$3:$I$32=$B$35:$I$35);0;"#")*INDEX(--($B$3:$I$32=$B$35:$I$35);ZEILEN(IS$1:IS37);"#"))
Achtung! Auf die übliche Weise angewendet, liefern diese benannten Fmln nur Fehlerwerte!
ZellFmln:
K3:K32:=SUMMENPRODUKT(--(EvalName("MinSummen";$A$1:$H$1)=1))
L3:L32:=SUMMENPRODUKT(--(EvalName("MaxSummen";$A$1:$H$1)=1))
N3:N32:=SUMMENPRODUKT(--(EvalName("MinSummen";$A$1:$H$1)>1))
O3:O32:=SUMMENPRODUKT(--(EvalName("MaxSummen";$A$1:$H$1)>1))
So, und nun noch die UDF:


Rem Wertet benannte Fmln aus, die gleiche Platzhalter enthalten dürfen (Default: "#").
'   Arg1: Name d.Fml als Text; Arg2: f.Arg3 in d.benFmlTxt 1zusetzender Bereichsbezug;
'   Arg3: Platzhalter (idR als Text m.entsprd ZusatzZchn); Arg4: ZeilNr-(Default) oder
'   SpaltNr-Platzhalter (bezogen auf Arg2, nur 1 Typ mögl, b.Vektor ggf autom ermitt).
'   Vs1.0 -author:LSr -cd:20130403 -1pub:20130403/herber -lupd:20130403t
Function EvalName(ByVal FName$, ByVal FPhBezug As Range, Optional ByVal Platzh = """#""", _
Optional ByVal SpPh As Boolean)
Dim cct As Long, cix As Long, rct As Long, rix As Long, _
zwErg() As Variant, phBez As Range
cct = FPhBezug.Columns.Count: rct = FPhBezug.Rows.Count
If Not SpPh And (cct = 1 Or rct = 1) Then SpPh = cct > 1
ReDim zwErg(rct - 1, cct - 1)
With ActiveWorkbook
For Each phBez In FPhBezug
If SpPh Then
zwErg(rix,cix) = Evaluate(Replace(.Names(FName).RefersTo, Platzh, phBez.Column))
Else: zwErg(rix,cix) = Evaluate(Replace(.Names(FName).RefersTo, Platzh, phBez.Row))
End If
cix = (cix + 1) Mod cct: rix = rix - CInt(cix = 0)
Next phBez
End With
EvalName = zwErg
End Function
Bitte beachten, dass die Namen für die Mappe definiert sein müssen (nicht für das jeweilige Blatt)!
Na dann viel Erfolg! Gruß Luc :-?

Anzeige
wow, aber noch Nachfrage...
03.04.2013 21:42:24
Joerschi
Hi Luc:-?
Danke Dir herzlich für die Arbeit.
Auch auf die Gefahr hin, dass das doof klingt: Wo genau binde ich den Code (UDF = User Defined Functions?) ein?
Geht auch Link, such es mir dann raus.
Beste Grüße aus dem Süden
Joerschi

ok, UDF verstanden
03.04.2013 23:04:17
Joerschi
ok, die UDF verstanden (hoffentlich :-) ).
Wo kann man "MinSummen" und "MaxSummen" definieren?
LG, Joerschi

Diese Namensfmln musst du natürlich ...
03.04.2013 23:30:09
Luc:-?
…unter Namen definieren, Joerschi,
→Menü Einfügen - Namen - Definieren. Der Code der UDF gehört in ein sog allgemeines Modul, dass du im VBEditor per Rechtsklick auf den Projekt-Tree einfügen kannst. Natürlich ist es angeraten, dass du dir irgendwann mal eine Personl.xls oder besser noch ein AddIn (.xla) mit VBA-Pgmm anlegst. Bei entsprd Einbindung derselben stehen dir die Pgmm immer zV.
Dazu findest du genug im Archiv.
Luc :-?

Anzeige
Zur Sicherheit hier nochmal deine ...
04.04.2013 19:51:22
Luc:-?
Datei mit meinen Änderungen/Ergänzungen zurück, Joerschi;
sie enthält allerdings die neue Version 1.2 der UDF mit verkürztem Namen (EvalN ), die in Arg1 bei Einsatz in ZellFmln auch einen nicht als Text, sondern direkt als Name angegebenen mappenweit definierten Namen akzeptiert.
Die Namen sind hier natürlich bereits vorhanden. Bei Änderung auf 100 Datenworte (Dw=Spalten) pro Datensatz (Ds) müssen ihre und die ZellFmln wie folgt erweitert wdn → Bspp f.MinSummen u. a)Min:
=SUMME(INDEX(--($B$3:$CW$32=$B$34:$CW$34);0;"#")*INDEX(--($B$3:$CW$32=$B$34:$CW$34);ZEILEN($A$1:$A1); "#")) 1
=SUMMENPRODUKT(--(EvalN(MinSummen;$A$1:$CV$1)=1))
1 Hatte vergessen, die relativen Aressen in der FmlDarstellung zu korrigieren (bzw das in der Darstellungs-UDF anzugeben). Bei Namensdefinition muss bei korrigierter Fml 1 Zelle der jeweiligen 1.Geltungszeile ausgewählt wdn!
Gruß Luc :-?
Besser informiert mit …

Anzeige
Danke :-)
05.04.2013 07:53:54
Joerschi
Hi Luc:-?
Besten Dank - und ich hatte mich schon wieder gefragt, warum ich das einfach nicht hinbekomme...
Aber ich werd mich hier mal ins Thema einarbeiten mit Deiner Vorlage. Braucht man später garantiert mal wieder.
Nochmals Danke für Deinen Aufwand und beste Grüße
Joerschi

Jetzt fktioniert's also! ;-) Gruß owT
05.04.2013 14:35:26
Luc:-?
:-?

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige