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

KGROESTE - Bitte um Hilfe . evtl. UDF !

KGROESTE - Bitte um Hilfe . evtl. UDF !
06.11.2013 14:37:51
Thorben
Hallo liebe Excelgemeinde,
ich habe hier wieder mal Flasche leer :-)
https://www.herber.de/bbs/user/87962.xlsx
In Tabelle "Daten" möchte ich KGROESTE mit Bedingung abfragen.
Das klappt, aber nur bedingt.
In der "Hilfstabelle" gehts, wenn ich vorher die Duplikate entferne und dort
mit KGROESTE arbeite.
Anschließend müsste ich diese Ergebnisse aber wieder zurück in Datentabelle schreiben.
Diesen Schritt möchte ich gerne umgehen und alles im Datenblatt abhandeln.
Ich könnte mir vorstellen das man so etwas mit UDF lösen kann oder kennt jemand eine passendere Formel fürs Datenblatt?
- Info -
Für eine UDF Lösung wäre ich dankbar da es schlichtweg performanter ist wenn es sich um Datengröße jenseits der 50000 handelt. Ich habe mit UDF die bessere Erfahrung gemacht.
Meine KGROESTE habe ich wie im Bsp. über die Hilfstabelle schon angewandt, ist aber ab dieser Größe schleppend langsam da auch noch andere Formeln am werkeln sind + zurückschreiben ins Datenblatt etc...!!!
Für Eure Hilfe schon einmal vielen Dank.
Mit bestem Gruß
Thorben

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
... die Formel ....
06.11.2013 14:54:09
neopa
Hallo Thorben,
... müsste so lauten:

=WENN(I2=I3;"";KGRÖSSTE(WENN(I$1:I2>0;P$1:P2);SUMME(N(I$2:I2I$3:I3))))

Gruß Werner
.. , - ...

AW: KGROESTE - Bitte um Hilfe . evtl. UDF !
06.11.2013 14:56:46
Rudi
Hallo,
wenn das so schön nach I sortiert ist:
K2: =WENN(I2=I3;"";MAX(INDEX(P:P;VERGLEICH(I2;I:I;)):INDEX(P:P;VERGLEICH(I2;I:I;)+ZÄHLENWENN(I:I;I2)-1)))
Gruß
Rudi

... ach so war das gemeint ...
06.11.2013 15:32:16
neopa
Hallo Rudi,
... dann ist Deine Formel richtig.
Ich würde dann in diesem Fall alternativ
{=WENN(I2=I3;"";MAX(WENN((I$2:I2>0)*(I$2:I2=I2);P$2:P2)))}
vorschlagen.
Gruß Werner
.. , - ...

Anzeige
@Rudi, Dauer 8 Min aufwärts, UDF wäre besser!
06.11.2013 15:47:43
Thorben
Hi,
@ Werner, Danke aber klappt nicht so richtig! Der letzte Eintrag ist mit deiner Formel eine 9 statt 4
@ Rudi,ja ist aufsteigend sortiert. Danke und klappt, aber:
Zeit bei 10000 Daten ca. 1Min.
Zeit bei 25000 Daten ca. 8 Min.
Zeit bei 50000 + schätzungweise ca. 64 Min. und mehr (hab ich jetzt keine Zeit für :-)
Der progressive Anstieg ist enorm...
In I stehen bei vollem Umfang ca. 4500 verschiedene Nummern, deren KGROESTE aus P zugeordnet werden muss.
UDF kann das besser nur kann ich kein KGROESTE UDF
Für weitere Hife wäre ich sehr dankbar
MfG
Thorben

Anzeige
ich würde eine PIVOTauswertung vornehmen ...
06.11.2013 15:58:14
neopa
Hallo Thorben,
... die ist schnell (auch schnell erstellt) und sofort übersichtlich.
Die ergibt auch die gesuchten Werte wie die Formel von Rudi und meine zweite Formel.
Gruß Werner
.. , - ...

Pivot ist in diesem Fall keine Option !
06.11.2013 16:07:02
Thorben
Werner / Thorben
Das Problem mit Pivot ist das ich immer eine 2te Tabelle habe.
Das Ergebnis aus der KGROESTE Formel dient innerhalb der Datentabelle als
Größe für andere Formeln. Ohne diese Zahl kann ich nicht weitermachen.
Pivot wäre also immer auch die Daten wieder zurück schreiben oder per Formel auf das Pivot zugreifen.
MfG
Thorben

Anzeige
AW: @Rudi, Dauer 8 Min aufwärts, UDF wäre besser!
06.11.2013 16:02:57
Rudi
Hallo,
das liegt dann an anderen Formeln.
50000 Zeilen werden bei mir in max. 2Sek. berechnet.
Gruß
Rudi

AW: @Rudi, Dauer 8 Min aufwärts, UDF wäre besser!
06.11.2013 16:34:19
Thorben
Rudi / Thorben
jein das stimmt so nicht wirklich. Das zusammenspielen der anderen Formeln drückt zwar die Performance,
aber ohne die KGROESTE dauert es bloß ca 2,5min bei 50000 Datensätzen.
Trotzdem ist es schwer einzuschätzen was hier auf die Bremse drückt.
ABER :
Rudi Du hattes mir mal diesen UDF Code gegeben: www.herber.de/forum/archiv/1328to1332/t1331350.htm
Der wird in einer ähnlichen Datei angewendet und hat die Zeit von, mal eben, ca. 20 min auf 2 Sec. gedrückt, trotz das andere Formeln zusätzlich verwendet werden. Excel Abstürze wurden damit auch ausgemerzt :-)
Falls es eine solche UDF Lösung gibt gehe ich davon aus das es nicht viel länger als 2,5 min dauern wird.
MfG
Thorben

Anzeige
andere UDF; ohne Schleife
06.11.2013 16:56:40
Rudi
Hallo,
das geht natürlich ohne Schleife!
Function MyMax(rngK As Range, vntK, rngValues As Range)
Dim iStart As Long, iEnde As Long, i As Long
iStart = Application.Match(vntK, rngK, 0)
iEnde = iStart + WorksheetFunction.CountIf(rngK, vntK) - 1
MyMax = WorksheetFunction.Max(Range(rngValues(iStart, 1), rngValues(iEnde, 1)))
End Function

Gruß
Rudi

AW: andere UDF; ohne Schleife = PERFEKTION
07.11.2013 11:40:49
Thorben
Hallo Rudi,
entschuldige die späte Rückmeldung!
Läuft perfekt, schnell und wie erwartet ohne performance Einbrüche :-)
25000 Datenzeilen / 3956 verschiedene Nummern in I = fertig in 2min 36 sek (ich glaube ist sogar etwas schneller als vorher... grübel!)
Ist schon wahnsinn von 8min auf gleichbleibende 2,36min per Funktion zu kommen.
Besten Dank
MfG
Thorben

Anzeige
UDF wäre besser!
06.11.2013 16:28:07
Rudi
Hallo,
kannst du ja mal probieren.
In ein Modul:
Function MyMax(rngK As Range, vntK, rngValues As Range)
Dim iStart As Long, iEnde As Long, i As Long
iStart = Application.Match(vntK, rngK, 0)
iEnde = iStart + WorksheetFunction.CountIf(rngK, vntK) - 1
For i = iStart To iEnde
MyMax = WorksheetFunction.Max(MyMax, rngValues(i, 1))
Next
End Function

In der Tabelle:
K2:K50000 =WENN(I2=I3;"";mymax($I$2:$I$50000;I2;$P$2:$P$50000))
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige