a) die Leerzeilen und b) gleiche Kostenstellen mit unterschiedlichenProzentsätzen ohne zusätzliche Klassifizierung?
Wenn dort Leerzeilen stehen wurden die Kostenstellen erst später hinzugefügt. Kann mit 0% gleichgesetzt werden. Was meinst Du mit 'ohne zusätzliche Klassifizierung'? Es ist ja die Veränderung über ein Jahr, in wiefern sollte das noch einmal zusätzlich klassifiziert werden.
in deiner Datei gibt es für einige Kostenstellen mehrere Zeilen.
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.
wenn du die doppelten Kostenstellen und die Leerzeilen entfernst, scheitert Edgars Lösung nur noch, wenn zu einer Kostenstelle ein Prozentsatz mit einer Unterbrechung ein zweites mal vorhanden ist.
Vielleicht kann er, oder ein anderer FormelZauberer dieses auch noch lösen.
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.
B) Doppelte Kostenstellen werden nicht geprüft, solltest du also entfernen.
C) Für die Spalten der Upload Tabelle, für die die Daten nicht aus der Prozenttabelle kommen müssen, habe ich Formeln eingetragen.
D) Da ich ungern VBA-code ohne einen Command Button aufrufe und ungern Bezüge direkt in den code schreibe, habe ich einen Command Button angelegt und vier Bereiche mit Namen versehen. Du kannst wenn gewünscht im code die Verweise auf die Namen durch ein "RANGE(...)" ersetzen.
ps. @minimalisti Natürlich kann man die gesamte Tabelle auch in einem einzigen Array bearbeiten und die Grenzen direkt in FOR-Schleife eintragen. Das mach den code aber für ungeübte Augen nicht lesbarer.
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 • nomatrix
28.07.2016, 09:24 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2016, 09:24 von nomatrix.)
(27.07.2016, 08:07)Ego schrieb: Hallo nomatrix,
wie versprochen in der Anlage eine VBA-Lösung.
Noch einige Bemerkungen:
A) Leerzeilen sind hierbei erlaubt.
B) Doppelte Kostenstellen werden nicht geprüft, solltest du also entfernen.
C) Für die Spalten der Upload Tabelle, für die die Daten nicht aus der Prozenttabelle kommen müssen, habe ich Formeln eingetragen.
D) Da ich ungern VBA-code ohne einen Command Button aufrufe und ungern Bezüge direkt in den code schreibe, habe ich einen Command Button angelegt und vier Bereiche mit Namen versehen. Du kannst wenn gewünscht im code die Verweise auf die Namen durch ein "RANGE(...)" ersetzen.
ps. @minimalisti Natürlich kann man die gesamte Tabelle auch in einem einzigen Array bearbeiten und die Grenzen direkt in FOR-Schleife eintragen. Das mach den code aber für ungeübte Augen nicht lesbarer.
Danke Dir vielmals, das funktioniert wirklich super. Gibt es eine Möglichkeit das auch auf noch mehr Kostenstellen zu erweitern? Also anstatt 124 zB 400? Denn bei mir macht er ab 124 einen Cut, würde ich jetzt weitere einfügen tauchen die in der Liste nicht auf.
PS ok gerade noch was ausprobiert, er stoppte bei einer Zeile einfach immer. Hab die ans Ende gesetzt und der läuft durch. :)
ich hatte zwar unter D) geschrieben, dass ich Namen eingefügt habe, aber nicht was sie bewirken und wie man die Bereiche, für die die Namen gelten erweitert.
Hier ein Erklärungsversuch:
In einem Programm muss bekannt sein, für welchen Bereich eine Berechnug durchgeführt werden soll. Das geschieht entweder implicit oder explicit(was ich bevorzuge).
Implicit: 1) Eine Möglichkeit ist es die Daten bis zu nächsten leeren Zelle auszuwerten. Das ging aber in deinem Fall nicht, da leere Zeilen vorhanden waren. 2) Eine zweite Möglichkeit ist es die Daten bis zur letzten belegten Zeile/Spalte auszuwerten. Das wäre in deinem Beispiel möglich gewesen, schränkt aber im Normalfall die Nutzung der Tabellen ein, da ich dann unter den auszuwertenden Daten nichts mehr schreiben darf.
Explicit: 1) Der auszuwertende Bereich wir in dem Programm eingetragen. Bei jeder Änderung (Verschiebung;Erweiterung;..) diese Bereiches muss das Programm geändert werden. 2) Der auszuwertende Bereich wird dem Programm von aussen mitgeteilt. Das geschieht meistens indem man dem Bereich einen Namen gibt. Eine Verschiebung des Bereiches, auch in andere Arbeitsblätter hat dann keine Änderungsnotwendigkeit. Bei einer Erweiterung des Bereiches muss man darauf achten, dass dann der Name dem erweiterten Bereich zugeordnet ist. Im Namensmanager kann man diese Zuordnung editieren. Man kann das aber auch erreichen, in dem man den Bereich durch Einfügen von Zeilen oder Spalten innerhalb des benannten Bereiches erweitert.
Deine Verschiebung der letzten Zeile der von mir benannten Bereiche ans Ende der Liste hat also diese Bereiche auch im Namensmanager erweitert.
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 • nomatrix