Anbei eine Beispieltabelle um mein "Problem" zu verdeutlichen.
Ich bin für die Planung der Reinigung von einzigen Räumen verantwortlich in ganzen Objekten. Kalkulatorisch bekomme ich jeden Raum einzelnt vorgelegt. Um dem Disponennten das ganze übersichtlicher zu machen will ich nun auf einer Extraseite das ganze "Objektscharf" ausgeben.
Mit Formel Klappt das alles auch, sieht in der Beispieltabelle jetzt nicht so aus aber in der Originaldatei funktioniert es :), denke es ist einfach schon zu Spät zum nachbauen.
Mein Problem ist, das ich in der Originaldatei keine 2 Objekte und 15 räume habe sondern am ende bei ca 10.000 zeilen landen werden.
Die Indexformel auf meiner Übersicht macht genau das was sie sollen aber benötigen dafür sehr lange... Nun habe ich erfahren, das das ganze schneller werden würde wenn man das ganze über VBA darstellen lassen würde...eine Indexformel per VBA kriege ich noch hin aber Vergleich und dann noch Summe da hapert es dann doch...
Oder gibt es eventuell auch andere Lösungsansätze? Summewenn oder dergleichen?
Ich bin auf eure Lösungsansätze und Vorschläge gespannt :)
Zitat:Die Indexformel auf meiner Übersicht macht genau das was sie sollen aber benötigen dafür sehr lange...
Du willst also alle Werte des gesamten Bereichs aufsummieren, die den gleichen Wert haben, die der erste Raum des Objekts an diesem Tag hat. Wofür braucht man das täglich für den Monat?
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Berechnen könnte man es am einfachsten mit SUMME(FILTER(FILTER())): =SUMME(FILTER(FILTER(Datenbank!$G$5:$NG$30;Datenbank!$B$5:$B$30=$E6);Datenbank!$G$3:$NG$3=F$4))
Ob's schnell genug ist? Lass es uns wissen. Mir fällt zumindest nichts schnelleres ein.
Sinn macht diese Berechnung für jeden Tag nur, wenn die Objekte je nach Tag unterschiedliche Räume haben, also z.B. die Toilette täglich, das Treppenhaus aber nur jeden 2. Tag gemacht wird. Auch da könnte man sich überlegen, ob man es wirklich für jeden Tag braucht, oder ob man es nicht einmalig für jeden Wochentag ausrechnet. Am flexibelsten ist es wohl schon mit jedem Tag, dann kann man händisch in der Datenbank rumpfuschen.
07.07.2023, 12:18 (Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2023, 12:42 von Ego.)
Hallo seeqi,
in der Anlage mein Vorschlag.
Und hier noch drei Bemerkungen:
1. Durch die Matrixfunktionen wird nur eine Formel pro Objekt berechnet und durch die Begrenzung "Index():Index()" muss für jedes Objekt nur ein Bruchteil des Bereichs ausgewertet werden. Das sollte um einiges schneller sein.
2. Da die Funktion MMULT nicht mit leeren Zellen umgehen kann, müssen die Wochenenden im Blatt Datenbank mit 0en gefüllt werden. Übers Format "0,000;-0,000;" kannst du die Anzeige der 0en unterdrücken.
3. Nur in den grau gefüllten Zellen sind Formeln.
4. In der Datenbank müssen die Räume eines Objektes direkt untereinander sein und in allen Räumen für alle Tage des Jahres müssen Zahlen eingetragen werden. @Helmut
Hallo Helmut,
zu
Zitat:ich bezweifle mal, dass VBA schneller ist.
Ich glaube dass bei mehreren tausend Räumen (wenn die Räume eines Objektes hintereinander eingetragen sind) VBA mindestens um den Faktor 100 schneller ist, als deine Formel, die für jedes Objekt und jeden Tag des Monats immer den gesamten Bereich durchsucht.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • Seeqi
Wow Vielen Dank! Ist zwar noch keine VBA Lösung aber ich finde deine Formel ebenso Faszinierend wie verwirrend! :D aber da klick ich mich schon durch und geben bescheid ob es schneller wird! :D
wozu für jeden Tag des Jahres eine eigene Spalte, wenn in jeder der Zeilen der gleiche Wert steht? Kann ja noch verstehen, wenn es Abweichungen gäbe, z. Bsp. zwischen den Wochentagen, aber vermutlich gibt es einen Jahresvertrag, der festlegt, im Objekt X wird Montags der Raum Y gereinigt und dafür braucht ma Z-Stunden. Raum ABC wird Montags-Freitags gereinigt usw.... Und der Vertrag wird sehr wahrscheinlich nicht täglich geändert....
Heißt im Endeffekt... das geht alles sehr viel einfacher....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:1 Nutzer sagt Danke an Ralf A für diesen Beitrag 28 • Seeqi
in der Anlage zusätzlich eine VBA-Lösung und hier zwei Bemerkungen:
1. Da ich in Makros ungern mit festen Adressen arbeite nutzt mein Makro zur Zeit zwei benannte Bereiche ("Jahreswerte" und "Objekte") und vier benannte Zellen ("AnzObjekte", "Erster", "Letzter" und "Ausgabe")
2. Neben der Geschwindigkeit der Berechnung hat das Makro noch a) den Vorteil, dass während der Änderung in der Datenbank nicht immer wieder alle Berechnungen für die Übersicht aktualisiert werden und b) eventuell den Nachteil, dass während der Änderung in der Datenbank nicht immer wieder alle Berechnungen für die Übersicht aktualisiert werden (wenn man nach einer Aktualisierung der Datenbank das Makro nicht anstößt, ist die Übersicht nicht aktuell).
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28 • Seeqi
Die Lösung von Ego hat das ganze perfomance "problem" um welten verbessert! Sollte ich bei weiteren Daten wieder probleme bekommen habe ich auch gleich die VBA Variante die wohl noch schneller wird.
@Ralph deine Lösung sieht auch sehr Schick aus, nur leider verstehe ich noch weniger was und wie da funktioniert :) aber speicher mir deine Datei trotzdem mal ab, auch dir vielen Dank.
Nicht so schlimm, wenn Du es nicht verstehst. Trage einfach Deine Objekte, Räume und Zeiten/Tag in die entsprechenden Zellen ein (oder kopiere sie an die richtige Stelle) und klicke evtl. noch auf Daten --> Aktualisieren und voila... das wars...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.