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

Rang o. Doppelte (aus mehreren Spalten + Zeilen!)

Rang o. Doppelte (aus mehreren Spalten + Zeilen!)
20.10.2018 08:06:05
Joerschi
Hallo liebes Forum,
Skizze und Musterdatei vorab; Erklärung danach
Userbild
Musterdatei: https://www.herber.de/bbs/user/124776.xlsx
ich suche eine Formellösung, um aus einer Tabelle (meherere Zeilen + Spalten fix) eine Rangfolge ohne doppelte Nennungen zu generieren.
Gern beide Varianten (auf- und absteigend).
Entweder deckt nachfolgend verlinkte Lösung dies nicht ab oder ich habe nicht richtig adaptiert (dort die unten stehende Formel für C1): http://www.excelformeln.de/formeln.html?welcher=307
Für B6 suche ich eine Lösung, welche
a) absteigend eine Nummerierung/Rank des Bereichs B2:D5 ohne doppelte Zahlen (jedoch ohne Auslassung eines Rankings!) oder
b) Gleiches aufsteigend ermittelt.
Liebe Grüße
Joerschi

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit einer Matrixfunktion(alität)sformel ...
20.10.2018 10:32:16
neopa
Hallo Joerschi,
... ist das lösbar, wenn ich Dein Anliegen richtig interpretiere. Außerdem meinst Du doch aber sicherlich
B7 und nicht B6.
Jedoch wäre auch noch zu klären, welcher "Rang" Vorrang hat in Abhängigkeit von Zeilen und Spaltenadressierung bei gleichem Wert. Ich hab nachfolgend eine Annahme getroffen, die sich einfach ändern lässt.
Kann auf Rückfragen hierzu wahrscheinlich erst am Nachmittag reagieren. Du hast Dich übrigens noch nicht zu meiner Anfrage in Deinem thread hier: https://www.herber.de/forum/archiv/1652to1656/t1652241.htm geäußert. Hat sich der erledigt?
Nachfolgende Formel nach unten und rechts kopieren und für b) analog mit Änderung nur des erstens Arguments in der Formel.
 BCD
2456
3546
4446
5123
6   
7641
8572
9893
10121110

Formeln der Tabelle
ZelleFormel
B7=VERGLEICH(B2-ZEILE(B2)%-SPALTE(B2)%%;INDEX(AGGREGAT(14;6;($B$2:$D$5-ZEILE(B$2:B$5)%-SPALTE($B2:$D2)%%); ZEILE($A$1:$A$12)); ); 0)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...
Anzeige
AW: jeweils drei andere Erg.-Varianten möglich ...
20.10.2018 12:14:44
neopa
Hallo,
... und zwar eine dadurch, dass die Minuszeichen in der Formel durch ein Pluszeichen ersetzt werden und zwei weitere, dass die Zeichen im Wechesel zugeordnet werden.
Dies gilt natürlich auch genau so für die Lösung b). Wobei ich hierzu meine Aussage von heute Morgen korrigieren muss. Nicht das erste Argument der Formel sondern das zweite Argument der AGGREGAT()-Teilformel ist zu ändern. Nämlich einfach die 14 durch eine 15 und dies in allen 4 möglichen Varianten.
Gruß Werner
.. , - ...
AW: natürlich das 1. Argument zu AGGREGAT() owT
20.10.2018 12:18:37
neopa
Gruß Werner
.. , - ...
AW: jeweils drei andere Erg.-Varianten möglich ...
20.10.2018 12:23:32
Joerschi
Hallo Werner,
wiederum vielen Dank.
Das mit dem Änderung des Aggregat-Arguments hatte ich dann auch schnell herausgefunden (noch ein Grund, weswegen die Funktion so praktisch ist). Soweit funktioniert auch alles erstmal, wobei bei großen Matrix-Gebilden ordentlich Rechenpower benötigt wird :-)
Beste Grüße
Joerschi
Anzeige
AW: zu Deinen Aussagen ...
20.10.2018 16:50:19
neopa
Hallo Bernd,
... Joerschi hat sich hier im Forum mit dem Level: "Excel gut und VBA nein" ausgewiesen. Da darf man/ich eher davon ausgehen, dass er mit einer Formellösung besser aufgehoben ist, zumal diese sofort ohne Zusatzaufwand zumindest für sein eingestelltes Beispiel korrekte Ergebnisse liefert.
Für einen VBA-Anfänger müsstest Du dagegen schon mE wesentlich mehr Zusatzinfos (und dies mE nicht nur in englisch) für Dein Lösungsangebot aufzeigen. Außerdem setzt Du ja auch schon voraus, dass VBA eingesetzt werden kann. Das ist nicht immer und nicht bei Jeden gegeben, gewollt, gewährleistet.
Recht hast Du natürlich mit Verschwendung von Rechenzeit bei "größeren Eingaben". Jedoch ist aus der der ursprünglichen Fragestellung nicht ersichtlich gewesen, dass es sich um solch "größeren Eingaben" handeln könnte. Hinzu kommt, dass die Deutung von "größere" sehr dehnbar ist/sein kann.
Bis 250 auszuwertende Zahlenwerte sehe ich mit der Formellösung kaum Rechenzeitprobleme und bis evtl. 1000 erscheint mir meine Formellösung noch bedingt vertretbar, wenn die ermittelten Ergebnisse auch die Endergebnisse sind. Und bereits über 250 derartig auszuwertenden Zahlen, fehlt es mir momentan an Fantasie, wozu das wirklich benötigt wird. Wenn dem aber so sein sollte, aus VBA-Lösungsangeboten halte ich mich grundsätzlich außen vor.
Und zu Deiner Aussage: "fehleranfällig Formel". Damit meinst Du möglicherweise, dass die auszuwertenden Zahlen ja evtl. nicht nur Ganzzahlen sondern Dezimalzahlen sein können? Aber auch das war aus der Fragestellung nicht erkennbar und ließ sich bei entsprechender Vorgabe auch durch dem gemäße Formelanpassung berücksichtigen. Was Du evtl. sonst noch mit "fehleranfällig" meinen könntest, kannst Du sicherlich noch präzisieren.
Gruß Werner
.. , - ...
Anzeige
AW: zu Deinen Aussagen ...
20.10.2018 18:21:51
Sulprobil
Hallo Werner,
fehleranfällig ist so eine Formel wie Deine, weil sie recht komplex ist und von Anfängern aller Voraussicht nach nicht verstanden wird.
Dass Deine Formel in der vorliegenden Fassung lediglich mit ganzen Zahlen sicher richtig rechnet, habe ich nicht überprüft.
Du hast mir mit dem Hinweis aber noch die Anregung gegeben, meine UDF auf Texte zu erweitern.
Viele Grüße,
Bernd P
AW: nun, hierzu festgestellt ...
20.10.2018 19:59:48
neopa
Hallo Bernd,
... meine hiesige Formel ist sicher komplexer als die meisten "normale" Standardformeln aber deswegen nicht dadurch fehleranfällig. Sicherlich wird sie von einen Anfänger, wohl selbst von einem fortgeschrittenen User nicht wirklich richtig verstanden. Etwas verständlicher und vor allem leichter an andere Datenstrukturen möglicherweise schneller und einfacher anpassbar wäre diese, wenn ich diese etwas länger definiert hätte. Z.B. so (Änderung ist fett hervorgehoben)
=VERGLEICH(B2-ZEILE(B2)%-SPALTE(B2)%%;INDEX(AGGREGAT(14;6;($B$2:$D$5-ZEILE(B$2:B$5)%-SPALTE($B2:$D2) %%);ZEILE(B$1:INDEX(B:B;ANZAHL($B$2:$D$5)))););0)
So definiert, könnte auch die bisherige scheinbar ungenutzte Spalte A ohne Probleme gelöscht werden.
Was die "Fehleranfälligkeit" der momentanen Formeldefinition für auszuwertende Dezimalzahlen anstelle Ganzzahlen angeht, dürfte die mit großer Wahrscheinlichkeit weit unter 0,1% liegen, wenn sie lediglich 1:1 so übernommen wird. Diese dürfte gegen 0% gehen, wenn die Formel wie bereits geschrieben entsprechend angepasst wird. Aber die Notwendigkeit scheint mir hier nicht erforderlich zu sein.
Und nachgefragt: wozu siehst Du eine Notwendigkeit eine Rangliste für Textwerte zu erstellen. Mir fällt dazu momentan keine praktischer Nutzwert ein, was allerdings nicht heißen soll, das einen solchen nicht gibt/geben kann.
Anzeige
AW: nun, hierzu festgestellt ...
21.10.2018 12:32:53
Sulprobil
Hallo Werner,
Lass' uns einmal entspannt zurücklehnen und fragen:
1. Funktioniert Deine Formel noch sicher für Zahlen mit zwei oder mehr Nachkommastellen? [Nein]
2. Funktioniert Deine Formel noch sicher bei einem Eingabebereich von mehr als 100 Zeilen oder 100 Spalten? [Nein]
3. Hast Du Deinen Anwender auf die Limitierung Deiner "Lösung" hingewiesen? [Nein]
Ich finde, dass man den Anwender immer auf bekannte Grenzen eines Ansatzes hinweisen sollte, am besten baut man sogar eine "Sicherung" in die Anwendung ein wie z. B. hier:
http://sulprobil.com/Get_it_done/IT/Excel_Fun/Excel_VBA/sbInterp/MiniMax_Interpolation/minimax_interpolation.html
In Deinem Fall wäre es einfach, am Ende durch (B2:D5=GANZZAHL(B2:D5)) zu teilen und an anderer Stelle ohne Array ZEILEN(B2:D5) kleiner als 100 und entsprechend SPALTEN() zu checken.
Viele Grüße,
Bernd P
Anzeige
AW: dem kann ich entgegen halten ...
21.10.2018 15:50:08
neopa
Hallo Bernd,
... zu 1.) abgesehen davon, dass ich Dir bereits schrieb, dass die Aufgabenstellung nur Ganzzahlen beinhaltet und zweitens, dass ich im Falle von Dezimalzahlen die Formel etwas erweitert (ein paar % Prozente mehr) hätte, funktioniert die Formel, wenn sie dementsprechend definiert wird.
zu 2) Auch hier gilt die gleiche Aussage wie zu 1. Mit % kann man viel regeln.
zu 3.) Das hätte ich tun können, auch wenn eine solche Erfordernis nicht absehbar war. Aber ich muss es nicht tun, denn schließlich antworte ich nur in auf Forumsanfragen. Wenn ich eine Radgeberseite betreiben würde, müsste das sicherlich anders aussehen. Aber ich hab keine solche.
Ich hab Deine Fragen und Hinweise damit mE alle beantwortet. Du dagegen hast meine Anmerkungen und Hinweise bisher offensichtlich ignoriert. So u.a.:
- wenn ein User im Herbers Forum sein Profil mit VBA nein angibt, sollte man davon ausgehen können, dass er auch keine derartige Lösung bevorzugen wird, wenn es andere Lösungsmöglichkeiten gibt.
- wenn einem solchen User eine VBA-Lösung angeboten wird, würde ich, bei Deiner Einstellung meiner Hilfe gegenüber, erwarten, dass man ihm auch Hilfe aufzeigt, wie er damit zu verfahren hat und das dies dann in einem deutschsprachigen Forum auch in deutscher Sprache erfolgt.
- Offen ist weiterhin, wie Deine Lösung für die zweite vorgegebenen Aufgabe aussieht (von den jeweils drei anderen verschiedenen Varianten mal ganz abgesehen)?
- Und wie definierst Du den Zielbereich bei einer z.B. 14x13 großen Matrix zielgenau?
Wann und wie auch immer Du antwortest. Ich kann dies dann erst gegen Ende der Woche lesen und darauf reagieren.
Gruß Werner
.. , - ...
Anzeige
AW: dem kann ich entgegen halten ...
21.10.2018 20:04:16
Sulprobil
Hallo Werner,
ich denke, wir werden nicht einig. Ich finde Deinen Lösungsansatz einfach denkbar ungeeignet.
Und eine Diskussion auf "Nebenkriegsschauplätzen" (um Himmels willen: "Und wie definierst Du den Zielbereich bei einer z.B. 14x13 großen Matrix zielgenau?") finde ich leider zu ermüdend.
Viele Grüße,
Bernd P
AW: zu Deinen Aussagen ...
21.10.2018 10:11:12
Luschi
Hallo Bernd,
Deine UDF-Vba-Lösung ist sehr effektiv und schnell, bei einem Datenbereich 'B2:D5000' braucht mein i7-PC/16GB weniger als 2 sek., um alle Ergebniszellen auszufüllen.
Aber für den nicht so versierten Vba-User wären doch ein paar mehr Infos erforderlich.
Mich hat eine sehr erfahrene Excel-Formel-Spezialistin angerufen, weil sie mit dem Vorschlag nicht zurecht kam; ihr Problem:
- kopieren des UDF-Makros in ein normales Modul statt ins Tabelle1-Klassenmodul
- markieren des Zielbereiches der UDF
- und Strg+Shift+Enter (das hatte sie aber aus der Angabe {...} bereits gedacht)
Gruß von Luschi
aus klein-Paris
PS: gestaunt habe ich, daß das Addieren von leeren Array-Elementen ohne 'On Error' nicht zum Fiasko (game is over) führt.
Anzeige
AW: ergänzend hierzu noch ...
21.10.2018 10:50:47
neopa
Hallo Luschi,
... momentan beinhaltet die UDF-Auswertung offensichtlich auch nur eine Lösungsvariante mit auch nur einer Betrachtungsrichtung. Und das richtige markieren des Zielbereiches bei einer größeren auszuwertenden Datenbereichs könnte auch zeitaufwendig werden.
Gruß Werner
.. , - ...
Viel Lärm um (für mich) olle Kamellen*, ...
23.10.2018 04:40:57
Luc:-?
…Werner; ;-]
ich will doch mal hoffen, dass wenigstens Du Dich noch an meinen Beitrag (aus gesünderer Zeit) zu Rang-Ermittlungsmethoden erinnern kannst, denn Du hattest damals ja auch geantwortet.
Rechenzeiten hatte ich, glaube ich, zwar nicht untersucht, aber leistungsfähiger als das MS-Angebot war meine UDF VRank wohl schon. Sie dürfte auch einige Extras bieten, die Bernds UDF nicht hat (allerdings ohne Text-Ränge, aber mit Rang-ZusatzText)…
🙈 🙉 🙊 🐵 Gruß, Luc :-?
* Für mich olle Kamellen, weil ich mich mit RANG-Erweiterungen und -Verbesserungen schon vor Längerem befasst hatte und zZ mit wesentlich Interessanterem befasst bin (mehr in überfälliger Mail, ggf demnächst).
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: zu Deinen Aussagen ...
21.10.2018 12:48:39
Sulprobil
Hallo Luschi,
Danke für die Hinweise. Ich habe eine kleine Nutzungsbeschreibung auf meiner Webseite hinzugefügt.
Viele Grüße,
Bernd P
PS: Die Scripting Dictionaries sind recht mächtig. Ich arbeite gern damit.
Hier noch eine andere Variante
20.10.2018 19:33:48
Josef
Hallo
Hier noch eine Lösung mit den Funktionen RANG() und ZÄHLENWENN(..
Der Bereich B1:D1 darf bei meiner Variante keine Zahlen enthalten.
Gruss Sepp
Tabelle1

 BCD
2456
3546
4446
5123
6   
7   
8   
9   
10641
11572
12893
13121110

Formeln der Tabelle
ZelleFormel
B10=RANG(B2;$B$2:$D$5;0)+ZÄHLENWENN($B$1:$D1;B2)+ZÄHLENWENN($B2:B2;B2)-1


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Anzeige
AW: nachgefragt ...
20.10.2018 20:15:22
neopa
Hallo Sepp,
... Deine Bedingung lässt sich sicherlich leicht realisieren. Doch erschließt sich mir auf die Schnelle nicht, wie Du die Formel ändern musst, damit die Lösungsvariante b) ermittelt werden kann.
Und auch nicht, wie die jeweils drei anderen möglichen Ergebnisvarianten für a) und b) erzielen kannst.
Ich geh für heute jetzt offline.
Gruß Werner
.. , - ...
AW: nachgefragt ...
20.10.2018 21:16:27
Josef
Hallo Werner
Für Variante b muss man nur das Argument in der Funktion RANG ändern, der Rest bleibt gleich. =RANG(B3;$B$2:$D$5;1)+ZÄHLENWENN($B$1:$D2;B3)+ZÄHLENWENN($B3:B3;B3)-1 Bei Variante a und b wird bei gleichen Zahlen der Rang von links nach rechts und von oben nach unten hochgezählt.
Ich persönlich glaube nicht, dass da noch andere Ergebnisvarianten gefragt sind.
Gruss Sepp
AW: soweit war es mir schon klar ...
21.10.2018 10:38:36
neopa
Hallo Sepp,
... doch für die Lösung zu b) hatte ich mich für die Variante entschieden, wo die Ergebnisränge von oben nach unten und links nach rechts abwärts gezählt werden (d.h. mit jeweiliger Subtraktion anstelle Addition).
Deine Lösung sieht da ebenfalls eine Betrachtungsrichtung aufwärts vor. Wie würde Deine Formel angepasst werden müssen, damit entweder zu a) oder zu b) die Betrachtungsrichtung ebenfalls umgekehrt würde?
Die UDF-Lösung -Lösung von Bernd sieht momentan offensichtlich auch nur eine Auswertungsvariante vor.
Wie auch immer, entscheidend ist das, was Joeschi wirklich benötigt und das ist momentan noch nicht geklärt. Wenn Deine Formel für Ihn passt, sollte diese auch für größere Anzahl von auszuwertenden Datenwerten auf jeden Fall schneller sein, als meine Formellösung.
Gruß Werner
.. , - ...
AW: Danke an alle Beteiligten
21.10.2018 10:52:54
Joerschi
Ich möchte großen Dank an alle Erarbeiter der Lösungsvorschläge aussprechen.
Werners Variante ist zwar schwieriger nachzuvollziehen und Sepps Lösung hat auch ihren Reiz.
Die VBA-Lösung kann ich zwar nicht verarbeiten, sehe sie aber als gute Hilfe, falls mal jemand mit ähnlicher Problematik das Thema findet und VBA für diesen Suchenden eine Alternative darstellt.
Beste Grüße
Joerschi
AW: Rang o. Doppelte (aus mehreren Spalten + Zeilen!)
21.10.2018 19:56:46
Sulprobil
Hallo,
Josef's Ansatz mit Tabellenfunktionen finde ich korrekt. Durch die Nutzung der Zeile oberhalb der Eingabematrix wird die Formel kürzer. Wenn man seine Formel nicht mit RANG sondern ZÄHLENWENN verwendet, ist sie auch für Texteingaben anwendbar, siehe
http://sulprobil.com/Get_it_done/IT/Excel_Fun/Worksheet_Functions/Obsolete_Functions/Rank/rank.html
Die andere vorgeschlagene Formellösung ist IMHO nicht zu empfehlen.
Anbei meine VBA Lösung, mit vier Varianten. Ich denke, es leuchtet schnell ein, dass es mindestens acht Varianten gibt (man kann in 4 Ecken der Eingabematrix starten und in 2 Richtungen abzählen). Aber wer es sehr genau nimmt, kommt sicherlich auf n! Varianten.
Wer unbedingt eine Formellösung verlangt, findet in der anliegenden Datei auch einen Ansatz, der nur die Eingabematrix abfragt und auch Textwerte und beliebige Nachkommastellen korrekt behandelt. Wer keine Lust auf die volatile BEREICH.VERSCHIEBEN Funktion hat, kann diese als kleine Hausaufgabe in eine INDEX Variante umformulieren.
Die Datei (ohne jegliche Garantie - aber ich verwende einen aktuellen Virenscanner):
https://www.herber.de/bbs/user/124795.xls
Viele Grüße,
Bernd P

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige