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

gibt es identische Zahlen

gibt es identische Zahlen
09.06.2017 19:31:22
Jenny
Hallo an euch alle.
Habe eine riesige Tabelle.
Versuche herauszufinden, ob alle Zahlen eindeutig sind oder ob welche mehrfach vorkommen.
Es reicht mir die Aussage alle kommen nur einmal vor oder es gibt welche die mehrfach vorkommen.
Ich brauche keine Zahl wieviele mehrfach vorkommen auch keine Auflistung der mehrfach vorkommenden Zahlen einfach nur eine Aussage ob alle Zahlen sich unterscheiden oder ob Zahlen mehrfach vorkommen.
Wie stelle ich das am besten an?
Es geht um den Bereich Tabelle2!B2:LS331
Vielen dank
Jenny

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gibt es identische Zahlen
09.06.2017 19:34:31
Hajo_Zi
Hallo Jenny,

benutze bedingte Formatierung, Formel ist, =ZÄHLENWENN(A:G;A1)>2


AW: mit einer Formel möglich ...
09.06.2017 20:16:14
...
Hallo Jenny,
... =WENN(MAX(INDEX(ZÄHLENWENN(B2:LS331;B2:LS331);))=1;"alle verschieden";"es gibt Duplikate")
Gruß Werner
.. , - ...
AW: bei dem Datenbereich...
09.06.2017 20:32:38
Daniel
... hast du das probiert Werner?
das macht immerhin (330^2)^2 = 11.859.210.000 Vergleichsoperationen, die Excel da durchrechnen muss.
Gruß Daniel
AW: mit einer Formel möglich ...
10.06.2017 08:21:58
Jenny
Hallo Werner,
ich kann es mir selbst nicht erklären aber diese Formel gibt bei mir nach ca. 5 Sek 0 aus.
Gruß
Jenny
Anzeige
AW: mit einer Formel möglich ...
10.06.2017 13:37:29
Daniel
Hi
Excel schreibt halt einfach mal irgendwas in die Zelle, während es noch rechnet.
ich habe diese Formel mal mit deiner Datenmenge ausprobiert, es dauert auf meinem Rechner c.a. ne halbe Stunde bis das Ergebnis da ist.
Gruß Daniel
AW: gibt es identische Zahlen
09.06.2017 20:25:09
Daniel
Hi
geht bei der Datenmenge am besten so:
1. zuerst musst du alle Werte in eine Spalte bringen.
hierzu fügst du auf einem leeren Tabellenblatt diese Formel in die Zelle A1 ein:
=INDEX(Tabelle2!$B$2:$LS$331;AUFRUNDEN(ZEILE(A1)/330;0);REST(ZEILE(A1)-1;330)+1)

diese Formel ziehst du bis zur Zelle A108900 runter (das ist die Anzahl der Werte)
2. dann kopierst du die Spalte A und fügst sie an gleicher Stelle als Wert ein
3. sortiere die Spalte A
4. füge in die Zelle B1 folgende Formel ein und ziehe sie ebenfalls bis A108900:
=(A1=A2)*1
5. Ermittle die Summe in der Spalte B.
Wenn alle Werte eindeutig sind, muss die Summe = 0 sein.
kommen Werte mehrfach vor, ist die Summe 1 oder größer.
Gruß Daniel
Anzeige
Das sind doch 'nur' 108900 Zahlen, ...
10.06.2017 02:51:04
Luc:-?
…Jenny (& all),
da wäre eine Fml doch immer noch schneller als die ganze manuelle Vorarbeit, die dir Daniel aufbrummen will. Da du ja nur sehen willst, ob überhpt Doppelte vorkommen, könntest du auch die entsprd Bedingt­Formatierung wählen, aber nicht so, wie es Hajo vor­schlägt, sondern gezielt die für diesen Zweck → Markierung Doppelter. Dazu musst du nur Tabelle2!B2 auswählen, diese Forma­tie­rungsart wählen und bspw die ZellFarbe unter Format festlegen. Ganz zum Schluss korrigierst du noch den Geltungs­Bereich der Formatierung von $B$2 auf $B$2:$LS$331 und schließt ab. Fertig! Wielange es dann dauert, bis Xl damit fertig ist, kann ich dir aber eben­sowenig sagen wie die Zeit, die Werners Fml zur Berechnung benötigt, weil ich das nicht getestet habe. Dafür habe ich die folgd Fml getestet und deren Rechenzeit hält sich in Grenzen:
=SUMMENPRODUKT(--(HÄUFIGKEIT(ZEILE(2:331)+SPALTE(B:LS);ZEILE(2:331)+SPALTE(B:LS))>1))>0
Hierbei habe ich mit ZEILE(2:331)+SPALTE(B:LS) die benötigte Anzahl von Testdaten erzeugt, die auf Grund dieser Fml garantiert Dopplungen enthalten (genau 657), was WAHR ergibt. Die Kontrollrechnung mit der lauter unitäre Werte liefernden Testdaten­Ma­trix ZEILE(1:330)+330*(SPALTE(A:LR)-1) ergibt dann erwartungsgemäß 0 resp FALSCH.
Du müsstest dann folgd Fml verwenden:
=SUMMENPRODUKT(--(HÄUFIGKEIT(Tabelle2!B2:LS331;Tabelle2!B2:LS331)>1))>0
Deren Berechnung sollte dann auch etwas schneller sein — hoffe ich!
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Das sind doch 'nur' 108900 Zahlen, ...
10.06.2017 12:33:15
Daniel
Stimmt, Häufigkeit berechnet das sehr schnell.
ZählenWenn braucht auf meinem Rechner c.a. ne 1/2 Stunde um das durchzurechnen. (mit meiner manuellen Vorarbeite solle man keine 2 Minuten brauchen, bis man das Ergebnis hat)
Ich vermute mal, dass es daran liegen könnte, dass Häufigkeit ein Spezialist für Zahlen ist, während das universellere ZählenWenn auch Texte verarbeiten kann und daher wahrscheinlich intern wesentlich komplizierter arbeitet als Häufigkeit.
daher vermute ich mal, dass auch das Markieren der Doppelten über die spezielle Funktion viel Rechenzeit benötigen wird, weil das ja auch Zahlen und Texte verarbeiten kann.
Außerdem müsste man dann ja immer noch die ganze Tabelle absuchen, ob irgendwo ein Feld gefärbt ist, und da wäre das Risiko bei dieser Tabellengröße hoch, dass man was übersieht.
Gruß Daniel
Anzeige
Ja, deshalb und weil ich keine Lust hatte, ...
10.06.2017 14:46:32
Luc:-?
…ein reales TestBlatt anzulegen, habe ich es so probiert, Daniel;
mit KKLEINSTE bzw KGRÖSSTE nebst MTRANS hatte ich es mit diesen Testdaten zuerst versucht, aber abgebrochen, weil's mir zu lange gedauert hat.
Ich gehe deshalb davon aus, dass HÄUFIGKEIT auf solche Vgle optimal ausgerichtet ist, während alle Konstrukte, die andere Fktt benutzen, auf deren, eigentlich für andere Zwecke bestimmte Interna angewiesen sind und deshalb soviel Zeit benötigen. Das wäre dann mit einer effizienten ggüber einer normal-schrittweisen Sortierung zu vgln.
Letztlich hat mich dein Sortiervorschlag auf meinen 1.Versuch gebracht, bei dem diese Fktt aus einer Matrix einen Vektor machen. Das ist aber bei HÄUFIGKEIT auch so, denn hierbei wird auch für Matrizen stets ein Vektor zurückgegeben, der immer einen Wert mehr enthält (für nicht in Argument 2 enthaltene Werte, was im normalen Anwendungsfall ja vorkommen kann). Hier ist der natürlich 0, weshalb man, falls man mit 0 vgln wollte, immer wenigstens 1 als Ergebnis erhalten würde. Problematisch könnte es aber wdn, wenn Zahlen ≤0 im Datenmaterial auftreten (können).
Gruß, Luc :-?
Anzeige
AW: Das anlegen eines Testblattes nach Jennys ...
10.06.2017 15:24:26
Daniel
... vorgaben dauert doch nur ein paar Sekunden:
1. Zellbereich durch Eingabe der Adresse ins Namensfeld selektieren
2. Formel zur Erzeugung der Werte eingeben (für eindeutige sowas wie =Zeile()*1000+Spalte() und mit STRG+ENTER abschließen
3. ggf noch kopieren und als Wert einfügen
Testen musste ich, da ich ja einen gegebenen Lösungsvorschlag kommentiert habe und daher sichergehen wollte, dass meine Aussage auch richtig ist.
Gruß Daniel
AW: Das anlegen eines Testblattes nach Jennys ...
10.06.2017 16:37:31
Jenny
Hallo an euch alle,
hatte eigentlich heute morgen schon was geschrieben, aber anscheinend hatte da abschicken nicht geklappt.
Hab mir meine eigene Formel gebastelt, Rechenzeit ca. 4 Minuten.
Etwas mega einfaches, =KKLEINSTE(Tabelle2!$B$2:$LS$331;ZEILE()) und bis Zeile 108900 kopiert und Werte eingefügt.
Dann =A1=A2 in die Spalte nebendran und nach unten kopiert
und dann noch im Filter geschaut ob irgendwo WAHR steht.
Gruß
Jenny
Anzeige
AW: sieh noch meinen Beitrag, nur 3 sec später owT
10.06.2017 17:03:02
...
Gruß Werner
.. , - ...
Tja, wie du willst, aber neopas letzter und ...
10.06.2017 18:33:49
Luc:-?
…mein Vorschlag sind noch einfacher, Jenny… ;-]
Luc :-?
AW: ja, HÄUFIGKEIT() ist die klar bessere Wahl ...
10.06.2017 16:37:34
...
Hallo Luc, hallo Daniel, hallo Jenny,
... ich hatte gestern Abend meinen Formelvorschlag mit ZÄHLENWENN() ohne zu Testen auf- und eingestellt. Hatte zwar mit etwas Rechenzeit gerechnet, aber nicht mit so einer extremen Zeit, wie sie Daniel getestet hat.
Hätte ich gestern getestet, hätte ich meine Formel wohl gleich verworfen und mir wäre mit etwas Nachdenken wahrscheinlich auch HÄUFIGKEIT() eingefallen. Diese Funktion ist ja spez. auf Auswertung von Zahlenwerten zugeschnitten und für deren extrem schnelle Auswertung bekannt.
Hab jetzt selbst eine Textmatrix aufgestellt und nachfolgende Formel:
=WENN(MAX(HÄUFIGKEIT(B2:LS331;B2:LS331))=1;"ok";"Duplikate vorh")
benötigt auf meinen altersschwachen PC keine Sekunde zu der von Jenny gewünschten Auswertung.
Gruß Werner
.. , - ...
Anzeige
Das ist eleganter als SUMMENPRODUKT, ...
10.06.2017 18:29:11
Luc:-?
…Werner,
schneller kaum. Hättest du wirklich gleich anbieten können/sollen! ;-]
Gruß, Luc :-?
AW: hätte dies nicht eher eher tun können ...
10.06.2017 18:46:06
...
Hallo Luc,
... denn ich hatte die Formel gestern Abend wirklich nur zwischen Tür und Angel geschrieben und ohne große weitere Überlegung (geschweige denn einer Testung) eingestellt.
Der Unterschied zwischen Deiner SUMMENPRODUKT()-Formel und meiner MAX()-Auswertung ist in meiner Testdatei nicht wirklich erkennbar (beide benötigen unter einer Sekunde). Allerdings müssen bei Ersteren ein paar Operationen mehr durchgeführt werden und somit dürfte wahrscheinlich dafür auch ein paar Bruchteilen an Sekunden länger gerechnet werden. Aber das ist wirklich vernachlässigbar. Entscheidend ist wirklich die rasante Auswertungsgeschwindigkeit von HÄUFIGKEIT(). Auf die hatte mich vor Jahren schon mal FP hingewiesen, der ein großer Fan von HÄUFIGKEIT() war.
Gruß Werner
.. , - ...
Anzeige
Ja, eben darauf optimiert. ;-) orT
10.06.2017 19:35:29
Luc:-?
SchöSo, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige