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

nur bei Bedarf berechnen

nur bei Bedarf berechnen
14.08.2022 13:48:08
Christian
Hallo,
ich bitte um eure Hilfe bei folgender Datei:
https://www.herber.de/bbs/user/154635.xlsm
Zur Info, ich benutze Excel 2021.
Wenn diese Datei irgendwann einmal fertig ist, rechne ich mit ca. 60000 Zeilen in Tabelle Ergebnis, sowie ca, 30000 in der Tabelle Filme und 40000 in der Tabelle Leute.
Und ich vermute dass es ewig lange dauern wird, die Formeln in der Tabelle Ergebnis zu berechnen.
Bislang habe ich das Problem wie in Tabelle 1 gelöst, indem ich die Formeln ausschließlich in Zeile1 geschrieben habe und das Makro namens Ergebnis genutzt habe um die Formeln in alle weiteren Zeilen zu kopieren, zu berechnen und wieder in allen Zeilen außer Zeile 1 die Werte einzufügen.
Jetztt will ich aber mehrere Power Query Abfragen mit der Tabelle1 machen und habe sie deshalb in eine intelligente Tabelle umgewndelt (siehe Tabelle Ergebnis). Mit der Tabelle Ergebnis funktioniert aber das Makro nicht mehr, ich vermute mal weil in einer intelligenten Tabelle nicht in der ersten Zeile Formeln stehen können und in den weiteren Zeilen Werte.
Was würdet ihr mir raten, damit ich trotz der intelligenten Tabelle weiterhin die Formeln nur bei Bedarf berechnen kann? Andauerndes Ein- und Ausschalten der automatischen Berechnung ist für mich allein deshalb schon keine Lösung, da das eine allgemeine Einstellung ist, die dann auch für all meine anderen Excel Dateien gilt.
Danke für euren Rat
Christian

31
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur bei Bedarf berechnen
14.08.2022 14:07:41
HeritzP
Hallo,
es hilft schon mal, so etwas nicht zu machen.

D:D --> D2:D10000
Das belastet das System unnötig.
AW: nur bei Bedarf berechnen
14.08.2022 14:18:15
Christian
Hallo HeritzP,
eigentlich keine schlechte Idee, aber ich kenne die Index Formel bislang nur in der Syntax wie ich sie bislang verwende. Welcher Bereich wird denn an dieser Stelle benötigt, bzw. wie weit kann ich an dieser Stelle den Bereich enschränken dass die Formel noch funktioniert?
Gruß
Christian
AW: nur bei Bedarf berechnen
14.08.2022 14:44:37
onur
"Andauerndes Ein- und Ausschalten der automatischen Berechnung ist für mich allein deshalb schon keine Lösung, da das eine allgemeine Einstellung ist, die dann auch für all meine anderen Excel Dateien gilt" ? Wer hat dir denn diesen Quatsch erzählt?
Du kannst für jede Datei und sogar für jedes Blatt die automatische Berechnung aus- und wieder einschalten.
Anzeige
AW: nur bei Bedarf berechnen
14.08.2022 15:01:03
Christian
Hallo Onur,
ok, wenn dem nicht so ist, kann es sein dass es zu Zeiten von Excel 2010 als das Makro erstellt wurde noch so war? Seither hab ich diese problematik nie mehr in einem anderen Zusammenhang gehabt.
Aber ich gebe dir recht, im Menü Formeln gibts wirklich die Berechnungsoptionen, allerdings sehe ich da keine Möglichkeit, wenn ich auf manuell stelle, zwischen allen Dateien, einer einzelnen oder einem einzelnem Blatt zu unterscheiden... wie meinst du das mit der Unterscheidung? Wei für dieses eine Blatt wäre es für mich am Sinnvollsten.
Danke
Christian
AW: nur bei Bedarf berechnen
14.08.2022 15:07:29
onur
Per VBA z.B. mit

Worksheets(1).EnableCalculation = False
oder

Worksheets(1).Calculate

Anzeige
AW: nur bei Bedarf berechnen
14.08.2022 15:21:30
Christian
du meinst also als Makro, welches schon beim Öffnen der Datei startet und dann ein weiteres mit Worksheets(1).EnableCalculation = True um es temporär zu aktivieren?
AW: nur bei Bedarf berechnen
14.08.2022 15:22:32
onur
So, wie immer du es brauchst.
AW: nur bei Bedarf berechnen
14.08.2022 15:24:23
Christian
gut dann teste ich das mal, melde mich dann wieder
ich hoffe...
14.08.2022 15:41:01
Christian
du schlägst jetzt nicht aufgrund meiner katastrophalen VBA Kennenisse die Hände überm Kopf zusammen, aber ich habs jetzt probiert mit

Private Sub Workbook_Open()
Worksheets("Ergebnis").EnableCalculation = False
End Sub
und

Sub berechnen()
With Worksheets("Ergebnis")
.EnableCalculation = True
.Calculate
.Columns("A:R").EntireColumn.AutoFit
.EnableCalculation = False
End With
End Sub
Ein Problem habe ich jetzt aber immer noch, schau die bitte mal die Formel in Spalte N an, die hat je nachdem wie ich die Tabelle sortiere, völlig andere Ergebnisse.
Deshalb bin ich in dem Makro hingegangen und habe nachdem die Spalten C und F aktualisiert waren, erstmal neu sortiert, damit Spalte N korrekt berechnet wird.
Das kann ich bislang auf deinem Weg m.E. nur so realisieren, dass ich das ganze Blatt berechne, auch wenn u.a. Spalte N dann falsch berechnet wird, dann erst sortieren und dann nochmal das ganze Blatt berechnen.
Hast du da auch noch eine Idee?
Gruß
Christian
Anzeige
das Problem hab ich
14.08.2022 15:45:40
Christian
in der jetzige intelligenten Tabelle ja auch, Spalte N wird erst korrekt berechnet, wenn die Tabelle korrekt nach Spalte C und F sortiert ist.
Kurz zum Hintergrund die Blätter Leute und Filme haben als Quelle aus dem Internet heruntergeladene CSV Dateien die sich ständig ändern, daher können sich auch ständig die Daten in Spalte C und F ändern und damit auch die Reihenfolge der Zeilen nach dem Sortieren.
AW: das Problem hab ich
14.08.2022 15:53:31
onur
Tja - dann liegt es an deiner Formel in N. Woran genau? Keine Ahnung, da ich weder weiss, wozu die Datei gut ist noch was die Formel berechnen soll.
AW: das Problem hab ich
14.08.2022 16:11:43
Christian
das ist ja auch so gewollt, dass die Formel in Spalte N das berechnet was sie im Moment berechnet.
Ich versuche es mal irgendwie zu erklären was sie macht.
Beispiel N2, da gibt sie 70 aus. Das heißt das Magdalena Lamparska, geb. am 6.1.88 zum Zeitpunkt 27.4.22 die 70. jüngste Schauspielerin war, die in einem der genannten Filme mitgespielt hat.
Wenn jetzt imdb wo die Daten her sind merkt, ah ne der Film ist Bereits Weihnachten 2021 in Japan gezeigt worden, dann ändern die das Datum auf den 24.12.21
Nur war Magdalena Lamparska zum Zeitpunkt 24.12.21 nicht die 70. jüngste sondern die 69. jüngste Schauspielerin, da alle Filme die nach dem 24.12.21 veröffentlicht wurden, nicht mehr in die Berechnung einfließen.
Nur damit diese Daten nicht einfließen muss dann die Tabelle wieder korrekt nach Spalte C dem Veröffentlichungsdatum sortiert sein.
Spalte N berechnet im Grunde folgendes
WENN(G2="";"";
also die Prüfug ob sowohl Veröffentlichungsdatum als auch Geburtsdatum bekannt sind
RANG(F2;K2:INDEX(K:K;neue!$E$3)0) oder einfacher gesagt Rang(F2;K2:K$825;0) berechnet den Rang ihres Geburtsdatums im Zellbereich der Zellen in der alle bis zu diesem Datum veröffentlichen Filme stehen (K2:K825)
Das funktioniert aber wie gesagt nur, wenn die Filme nach Datum sortiert in der Tabelle stehen.
RANG(F2;K2:INDEX(K:K;neue!$E$3);0))
Anzeige
oder anders ausgedrückt
14.08.2022 16:15:44
Christian
egal wie ich es mache, wenn sich Daten in Spalte C oder F ändern, wird Spalte N so lange falsch berechnet, bis die Tabelle wieder neu sortiert ist.
AW: das Problem hab ich
14.08.2022 16:58:47
onur
F enthält die Geburtstage? Wenn ja, warum sind Einige leer?
AW: das Problem hab ich
14.08.2022 17:18:31
Christian
ja das sind die Geburtstage
es sind einfach nicht von allen Schauspielern die Geburtstage bekannt
AW: das Problem hab ich
14.08.2022 17:21:47
onur
nm11110971 Anna-Maria Sieklucka
hat einen Geburtstag eingetragen, aber in F steht "".
AW: das Problem hab ich
14.08.2022 17:35:21
Christian
Hallo Onur, ich weiß jetzt grad nicht wo du diesen Geburtstag siehst, aber ich sehe in Leute!C556 keinen Geburtstag.
Ok, dann brösele ich auch die Formel in Spalte F auf.
Die sagt ja nix anderes als =XVERWEIS(D2;Leute!A:A;Leute!C:C;"";0;1)
dazu die Prüfung, ob ein Datum vorhanden ist und wenn nicht soll "" ausgegeben werden.
Den Umweg mit der Index Formel findest du ja an sehr vielen Ecken und Enden der Mappe.
Das ist schon ein Vorgriff auf die von mir erwartete Berechnungszeit wenn die Tabelle mal größere Ausmaße hat. Im Blatt neue berechne ich, wieviele Zeilen die jeweiligen Tabellen hat und schränke dann die Suchmatrix der XVERWEIS Formeln auf den tatsächlich genutzten Zellbereich anstatt z.b. C:C ein.
Anzeige
AW: das Problem hab ich
14.08.2022 17:46:47
onur
Hast Recht - aber DIESE Formel reicht völlig:

=LET(XV;XVERWEIS(D2;Leute!A:A;Leute!C:C;"";0;1);WENN(XV="";"";XV))
Ausserdem: die letzte Zeile so umständlich um drei Ecken in die Formel einzubauen, ist bestimmt NICHT schneller als die ganze Spalte zu durchsuchen.
AW: das Problem hab ich
14.08.2022 22:27:26
Christian
Hallo Onur,
ich weiß ich reite gerne auf der Formel in Spalte N rum, aber schau bitte mal genau hin, in neue!B3 steht die letzte Zeile mit Datum in Spalte C, nicht die letzte Zeile insgesamt in der Tabelle Ergebnis. Das heißt auch, dass ich aus den Berechnungen alle Zeilen, in denen kein Veröffentlichungsdatum steht, ausschließe.
Aber um nochmal zum eigentlichen Thema zurückzukommen, das da hieß "nur bei Bedarf berechnen". Mir ist es eigentlich relativ gleich ob das Berechnen 10 oder 20 Minuten länger dauert, so lange ich selbst steuern kann wann es berechnet wird.
Darf ich einen Vorschlag machen, das Problem zu lösen, ich weiß nur nicht wie ich es umsetzen soll. Wenn sich das mit der intelligenten Tabelle umsetzen lässt, reicht mir das dann.
Wir löschen erstmal sämtliche Formeln aus der Tabelle. Und sagen dem Makro berechne =XVERWEIS(A2;Filme!$A$2:INDEX(Filme!A:A;neue!E$1);Filme!$B$2:INDEX(Filme!B:B;neue!E$1);"";0;1) in Spalte B und füge die Werte ein, dasselbe dann für die Formeln in Spalte C, E und F, erst berechnen, dann Werte einfügen, dann nächste Spalte. Nach Spalte F erstmal sortieren und dann die restlichen Spalten nach demselben Schema.
Also von der Idee her das was ich bislang auch gemacht habe, nur dass dann künftig die Formeln nicht mehr in der ersten Zeile sondern direkt im Makro stehen.
Wenn du da wie schon bei der einen Formel Verbesserungspotential siehst, kannst du das ja trotzdem gerne anwenden. Aber wie gesagt bedenke dabei bitte, dass meine Formeln die Zeilen in denen kein Veröffentlichugsdatum steht, ausschließen.
Gruß
Christian
Anzeige
AW: das Problem hab ich
14.08.2022 17:56:27
onur
Worauf ich eigentlich hinaus will: Auch die anderen Formeln sind überflüssig kompliziert, falsch oder verbesserungswürdig.
Auch die Formel in N kann man garantiert so schreiben, dass eine Sortierung überflüssig ist.
Meiner Meinung nach ist ebenfalls das Problem, dass du die Berechnungen abschalten musst, hausgemacht. Mit vernünftigen Formeln ist das völlig überflüssig.
AW: das Problem hab ich
14.08.2022 17:23:17
onur
Aber meine eigentliche Hauptfrage war: Warum hast du so eine ellenlange Formel, nur um einen Geburtstag zu finden?
AW: das Problem hab ich
16.08.2022 18:14:25
Christian
Hallo Onur,
schau doch bitte mal, ich hab mir jetzt selbst ein Makro gebastelt. Ich schaffe es aber nicht, die Überschriftenzeile aus der UsedRange herauszunehmen. Vielleicht kannst du mir da helfen:
https://www.herber.de/bbs/user/154659.xlsm
Danke
Christian
Anzeige
Verweise beschleunigen, die klassische Methode
14.08.2022 19:11:07
Daniel
HI
schon mal die klassische Methode probiert, um die Verweise zu beschleunigen?
um Auswertungenm mit Verweisen auf große Datentabellen zu beschleunigen, gibt es zwei wege:
1. immer wenn in einer Zeile der selbe Verweis (gleicher Suchbegriff, gleicher Suchvektor) mit unterschiedlichen Spalten als Ergebnis mehrfach verwendet wird, ist es sinnvoll, eine Hilfsspalte einzufügen, in welcher man mit Vergleich(Suchgegriff;SuchVektor;0) sich die Zeilennummer der Fundstelle ausgeben lässt. in der Folge verwendet man dann einfach INDEX(Ergebnisspalte; Zeilennummer aus der Hilfsspalte) um die Werte auszulesen. Dann muss die aufwendige Suche nur einmalig durchgeführt werden und nicht jedesmal.
2. Wenn der SVerweis in großen Datenmengen angewendet wird, sollte man die Tabelle mit der Suchmatrixnach der Suchspalte aufsteigend sortieren um die schnelle Variante des Verweises für sortierte Daten verwenden zu können.
Den Gewschwindigkeitszuwachs kann sich behelfsweise so ausrechnen, in dem man die Zeilenanzahl ungefähr als 2er-Potenz darstellt: x = 2^n
die Suchzeit mit dem SVerweis für unsortierte Daten ist dann proportional x, die Suchzeit für unsortierte Daten proportional n, also bei deiner Datenmenge 60.000 zu 32, oder 30.000 zu 31.
Wenn man prüfen muss, ob der gesuchte Begriff überhaupt vorhanden ist, dann muss man eine Abfrage vorschalten, also in etwa so:

=Wenn(SVerweis(Suchbegriff;Suchmatrix;1;wahr)=Suchbegriff,SVerweis(Suchbegriff;Suchmatrix; Ergebnisspalte;Wahr);"") 
ja man hat den Sverweis doppelt drin, aber wenns 10.000x schneller ist, dann kann man das machen.
Natürlich kann man auch Methode 1 und Methode 2 kombinieren, aber im Regelfall reicht Methode 2.
das ganze gilt für den alten SVerweis und Vergleich, in wieweit das auch für den XVerweis gilt, konnte ich leider noch nicht testen.
Anzeige
AW: Verweise beschleunigen, die klassische Methode
14.08.2022 22:31:19
Christian
Hallo Daniel,
erstmal danke für deine Nachricht, aber ich hab das Gefühl wir sind hier immer vom Thema abgekommen, das da hieß "nur bei Bedarf berechnen". Mir ist es eigentlich relativ gleich ob das Berechnen 10 oder 20 Minuten länger dauert, so lange ich selbst steuern kann wann es berechnet wird.
Daher hab ich vorhin ONur schon diesen Vorschlag gemacht, sofern er sich in der intelligenten Tabelle umsetzen lässt:
Wir löschen erstmal sämtliche Formeln aus der Tabelle. Und sagen dem Makro berechne =XVERWEIS(A2;Filme!$A$2:INDEX(Filme!A:A;neue!E$1);Filme!$B$2:INDEX(Filme!B:B;neue!E$1);"";0;1) in Spalte B und füge die Werte ein, dasselbe dann für die Formeln in Spalte C, E und F, erst berechnen, dann Werte einfügen, dann nächste Spalte. Nach Spalte F erstmal sortieren und dann die restlichen Spalten nach demselben Schema.
Also von der Idee her das was ich bislang auch gemacht habe, nur dass dann künftig die Formeln nicht mehr in der ersten Zeile sondern direkt im Makro stehen.
Das wäre ja erstmal auch kein Widerspruch zu deinem Vorschlag, man kann ja auch auf diesem Weg die Formeln optimieren und Hilfsspalten einfügen.
Gruß
Christian
Anzeige
außerdem
14.08.2022 22:34:31
Christian
bist du dir sicher, dass die Verweise die wirklichen Zeitftresser sind und nicht die Formeln in den Spalten K bis N weil sie für jede Zeile einen anderen Zellbereich haben? (und das auch so gewollt ist) ok, vielleicht liege ich da auch falsch.
AW: außerdem
14.08.2022 23:43:56
Daniel
ich habs mir jetzt nicht weiter angeschaut, weil ich noch ein altes Excel habe.
die SVerweise kann man halt so wie ich es beschrieben habe, relativ einfach extrem beschleunigen, eben durch einfaches sortieren der Quelltabellen.
mit SummeWenn(s) oder Rang siehts schon schwieriger aus.
um bspw RANG zu beschleunigen, müsstest du nach dieser Spalte sortieren um die Reihenfolge zu ermitteln und dann wieder zurücksortieren nachdem du die Formeln durch Werte ersetzt hast.
ähnliches für SummeWenn, bei einer VBA-Programmierung könnte man dieses mit hilfe des Dictionary-Objektes die Berechnung für die ganze Tabelle beschleunigen.
aber dann muss man schon richtig VBA programmieren um da was zu erreichen.
Die Verwweise zu beschleunigen bring schon mal viel und wenn nur auf anforderung gerechnet werden soll, dann ist das einfachste ein Makro, dass die Formeln in die Zellen schreibt und dann die Formeln durch werte ersetzt.
Wenn du die Formeln als Vorlage in einem Bereich anlegst, in dem du sie nicht überschreibst und jedesmal kopieren kannst, ist das Makro eine einfache Copy-Paste-aktion
Gruß Daniel
AW: außerdem
15.08.2022 09:02:29
Christian
Hallo Daniel,
und wenn nur auf anforderung gerechnet werden soll, dann ist das einfachste ein Makro, dass die Formeln in die Zellen schreibt und dann die Formeln durch werte ersetzt.
Genau das war doch mein Vorschlag gestern abend.
Zum Sortieren, die Formeln in den Spalten K bis N sind alle so aufgebaut, dass sie nur den Zellbereich von der jeweiligen Zeile an bis zum Ende der Tabelle berücksichtigen, nicht die Zeilen die obendrüber stehen. Dadurch ist die Sortierreihenfolge in der Tabelle Ergebnis vorgegeben.
AW: außerdem
15.08.2022 10:41:35
Daniel
auch beim Rechnen auf Anforderung ist es meistens angenehm wenn das Makro in Sekunden oder Sekundenbruchteilen durchläuft als in Minuten.
zumindest in der Phase, in der man das Makro noch schreibt und Fehler ausbessert und daher auch mal mehrmals hintereinander durchlaufen lassen will.
Gruß Daniel
AW: außerdem
15.08.2022 12:11:25
Christian
Hallo Daniel,
auch das habe ich ja bereits gesagt, dass man ja trotzdem Hilfsspalten einfügen kann und Formeln optimieren kann. Wobei ich jetzt dazu sagen muss, da hat sich in 13 Jahren so vieles aufgebaut, was ich mit den Formeln alles berücksichtige und abdecke, das würde eine lange Liste an Dingen, die auch die neuen Formeln leisten müssen. Weil auch wenn ein Profi sicherlich die Formeln effektiver formulieren kann als ich als Laie, habe ich mir ja trotzdem mit jedem einelnen Schritt etwas dabei gedacht.
Zu deiner Anmerkung mit der Geschwindigkeit, da gebe ich dir natürlich recht.
Ich versuche das ganze mal aufzubröseln. Ich wollte es eigentlich vermeiden, weil ich mir schon denke dass das mehr verwirrt als hilft, aber wenn wir Performance verbessern wollen, bleibt wohl keine andere Wahl.
Also erstmal allgemein handelt es sich um eine Liste von Filmen und Schauspielern, die in diesen Filmen mitgespielt haben.
Quelle der Daten sind die Blätter Filme und Leute, welche wiederrum als Datenquelle CSV Dateien nutzen, die ich bei www.imdb.com zusammengestellt und heruntergeladen habe.
Bei IMDB können jedoch auch Änderungen stattfinden, z.b. das ein Schauspieler durch Hochzeit einen neuen Namen hat oder dass ein vorher unbekanntes Geburtsdatum jetzt bekannt ist oder dass IMDB merkt, dass ein Film schon früher veröffentlicht wurde und daher das VÖ Datum ändert, oder es kann auch einfach sein, dass ich Einträge der Liste hinzufügen möchte.
Aus den genannten Gründen lade ich regelmäßig neue CSV Dateien runter und aktualisiere die entsprechenden PQ Abfragen.
Neue Einträge im Blatt Ergebnis mache ich einfach in dem ich die entsprechenden Codes in Spalte A und D einfüge und die weiteren Berechnunge machen dann die Formeln.
gut nun zu den einzelnen Formeln:
Spalte B:

=XVERWEIS(A2;Filme!$A$2:INDEX(Filme!A:A;neue!E$1);Filme!$B$2:INDEX(Filme!B:B;neue!E$1);"";0;1)
ist denke ich klar, XVERWEIS sucht passend zu dem Code in Spalte A den Filmtitel
Spalte C:

=WENN(XVERWEIS(A2;Filme!$A$2:INDEX(Filme!A:A;neue!E$1);Filme!$C$2:INDEX(Filme!C:C;neue!E$1);"";0;1) ="";0;XVERWEIS(A2;Filme!$A$2:INDEX(Filme!A:A;neue!E$1);Filme!$C$2:INDEX(Filme!C:C;neue!E$1);"";0;1)) 
ist denke ich klar, XVERWEIS sucht passend zu dem Code in Spalte A das Veröffentlichungsdatum, ist kein Datum vorhanden wird 0 ausgegeben.
Hierzu ist folgendes zu sagen, ich gebe 0 aus und nicht "" weil wenn ich "" ausgäbe und dann Spalte C wie es aktuell ist aufsteigend sortiere, die Leerzellen am Anfang stünden, sie sollen aber am Ende stehen, daher die 0. Die 0 habe ich dann über benutzerbedingte Formatierung ausgeblendet.
Spalte E:

=XVERWEIS(D2;Leute!$A$2:INDEX(Leute!A:A;neue!E$2);Leute!$B$2:INDEX(Leute!B:B;neue!E$2);"";0;1)
ist denke ich klar, XVERWEIS sucht passend zu dem Code in Spalte D den Namen des Schauspielers
Spalte F:
=WENN(XVERWEIS(D2;Leute!$A$2:INDEX(Leute!A:A;neue!E$2);Leute!$C$2:INDEX(Leute!C:C;neue!E$2);"";0;1) ="";"";XVERWEIS(D2;Leute!$A$2:INDEX(Leute!A:A;neue!E$2);Leute!$C$2:INDEX(Leute!C:C;neue!E$2);"";0;1))
ist denke ich klar, XVERWEIS sucht passend zu dem Code in Spalte D den Geburtstag des Schauspielers und gibt "" aus, wenn das Datum unbekannt ist.
Spalte G:

=WENN(ODER(C2=0;F2="");"";DATEDIF(F2+1461000;C2+1461000;"Y"))
prüft erstmal ob Geburtstag und Veröffentlichungsdatum vorhanden sind und wenn ja berechnet sie wie alt der Schauspieler in Jahren war als der Film veröffentlicht wurde. Die Addition von 4000 jahren oder 1461000 Tagen ist bereits ein Vorgriff darauf dass ich jetzt schon weiß dass irgendwann auch mal Leute in der Liste stehen werden, die vor dem 1.1.1900 geboren sind und auch weiß dass die PQ Abfrage daraus dann eine negative Zahl machen wird.
Spalte H

=WENN(G2="";"";DATEDIF(F2+1461000;C2+1461000;"YD"))
das selbe wie in Spalte G nur mit YD, da ich ODER(C2=0;F2="") schon in Spalte G geprüft habe, reicht es jetzt aus zu Prüfen ob G2 leer ist.
Spalte I

=WENN(G2="";"";C2-F2)
Altersunterschied in Tagen, brauche ich ausschließlich für den Text in Spalte R.
Spalte J

=WENN(G2="";"";RANG(I2;$I$2:INDEX(I:I;neue!E$3);1))
Berechnung des Ranges der Werte in Spalte I, brauche ich nur für statistische Zwecke.
Bei den Formeln in K bis N wird es jetzt wieder komplizierter.
Alle Formeln in diesen Spalten sind so aufgebaut, dass sie nur Filme berücksichtigen, die zum Zeitpunkt in Spalte C bereits veröffentlicht waren, keine Filme, die danach veröffentlicht wurden, daher reite ich auch so auf der Wichtigkeit der Sortierung rum.
Fangen wir an mit Spalte K

=WENN(G2="";"";WENN(ZÄHLENWENN(D2:INDEX(D:D;neue!$E$3);D2)=1;F2;""))
Sinn dieser Formel ist der Gedanke, dass in Spalte F jedesmal ein Geburtstag steht, sofern er bekannt ist. Diese Formel sorgt dafür dass wenn ein Schauspieler in mehreren Filmen mitgespielt hat, der Geburtstag nur noch beim ältesten Film in dem er mitgespielt hat ausgegeben wird, bei allen neueren Filmen nicht. Dies ist eine reine Hilfsspalte um Spalten M und N zu berechnen.
Spalte L

=WENN(C2=0;"";MAX(F2:INDEX(F:F;neue!$E$3)))
Gibt in jeder Zeile das Geburtsdatum des bis dato jüngsten Schauspielers aus (rein für Statistik)

=WENN(ZÄHLENWENN(K2:INDEX(K:K;neue!$E$3);">0")
Gibt in jeder Zeile das Geburtsdatum des bis dato 30. jüngsten Schauspielers aus (rein für Statistik). Deshab auch zuerst die Prüfung ob überhaupt bereits 30 Schauspieler mit Geburtsdatum vorhanden sind.
Spalte N

=WENN(G2="";"";RANG(F2;K2:INDEX(K:K;neue!$E$3);0))
die für meine Berechnungen eigentlich interessanteste Formel, die frage der wievielt jüngste Schauspieler in der Liste die Person zum Zeitpunkt der Veröffentlichung des Filmes war, An dem Punkt kann ich auch am einfachsten deutlich machen, wozu die Hilfsspalte K gut ist, wenn ich Spalte F als Bezug nehmen würde, würde jeder Schauspieler der mehrfach in der Liste steht, auch mehrfach bei der Berechnung des Ranges gezählt werden. In Spalte K steht jedes Datum pro Schauspieler nur noch einmal und damit wird jeder Schauspieler auch nur einmal in die Berechnung des Ranges mit einbezogen.
Spalte O

=WENN(ODER(K2="";M2="";N2>30);"";DATEDIF(M2;C2;"Y"))
Berechnung des Unterschiedes in Jahren zwischen der 30. jüngsten Person und dem jeweiligen Veröffentlichungsdatum (auch wieder rein für die Statistik)
Die Oder Formel dient dazu, dass nur in den Zeilen etwas ausgegeben wird, in denen sich im Vergleich zur nachfolgenden Zeile etwas ändert.
K2="" ist die Prüfung ob der Schauspieler schonmal in einem älteren Film mitgespielt hat
M2="" ist die Prüfung ob zu dem gefragten Zeitpunkt überhaupt schon 30 Schauspieler in der Liste standen
N2>30 ist die Prüfung, ob der Schauspieler in der Zeile in der wir uns befinden zu den 30 jüngsten Schauspielern gehört hat.
Spalte P

=WENN(O2="";"";DATEDIF(M2;C2;"YD"))
selbes mit YD
Spalte Q

=WENN(O2="";"";C2-M2)
selbes in Tagen
Spalte R kann man ja denke ich so lassen wie es ist
Noch eine Anmerkung zu den Formeln in den Spalten K bis N
Alle 4 Formeln brücksichtigen immer nur die Filme, die zu dem jeweiligen Zeitpunkt veröffentlicht waren, nicht die Filme, die danach veröffentlicht wurden.
Jetzt ist es aber so, dass die neusten Filme zuerst in der Liste stehen und die ältesten zuletzt.
Deshalb sind in diesen Formeln die Bereiche so aufgebaut, dass in der ersten Zeile noch alle Zeilen berücksichtigt werden und dann mit jeder weiteren Zeile eine weniger.
oder in Formeln ausgedrückt an Beispiel von der Formel in Spalte K
=ZÄHLENWENN(D2:INDEX(D:D;neue!$E$3);D2)
Der Wert D2 ändert sich in jeder Zeile auf D3, D4 usw. während das Ende des Bereichs, welches ich in neue!E3 berechnet habe immer konstant bleibt.
Wenn du jetzt noch auf neue!E3 schaust, fällt dir sicher auf, dass dort 825 steht, obwohl die Tabelle Ergebnis bis Zeile 838 geht. Das liegt daran dass alle Formeln voraussetzen, dass ein Veröffentlichungsdatum bekannt ist, daher habe ich die Zeilen in denen keines steht, außen vorgelassen.
Ich hoffe ich habs jetzt geschafft alle Gedankegänge die dahinterstecken zu Papier zu bringen
Christian
ich glaube, ich habe...
15.08.2022 20:56:16
Christian
sogar ein Makro hinbekommen. Das einzige was ich nicht hinbekommen habe, ist dass es die Formeln nicht in Zeile 1 einfügt, sondern erst ab Zeile 2 anfängt.
Kannst du da bitte mal nochmal draufschaun Und evtl. auch andere Fehler korrigieren, falls sie dir auffallen?
Vielen lieben dank
Die Datei zeigt das Ergebnis nach Ausführen des Makros
https://www.herber.de/bbs/user/154659.xlsm
gibt es da keine Lösung?
16.08.2022 09:40:20
Christian
aus dem Makro auszunehmen?
oder weshalb antwortet mir jetzt niemand mehr?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige