Clever-Excel-Forum

Normale Version: Zelleninhalte verschieben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo werte Excel-Gemeinde,

ich habe - mal wieder - ein "Problem".

Ich habe eine Dienstplan mit zwei Tabellenblättern "Stammdaten" und "Dienstplan".

Nun kommt es dazu, dass in der Schicht ein Mitarbeiter aufsteigt oder aber auch absteigt. Demnach wandert er in den Stammdaten nach oben. Nun sollen dessen Eintragungen im "Dienstplan"  von H:ON mit jeweiliger Zeile ebenfalls mit nach oben oder nach unten wandern.
Genau so soll es sich verhalten, wenn ein neuer Mitarbeiter angelegt wird.
Ebenfalls wichtig: Es sollen aber nur die Zelleninhalte, nicht die Formatierung verschoben werden.

Ich denke, dass die Lösung nur über VBA realisiert werden kann. Ich habe nur keine Idee.  Huh

Vielleicht habt ihr eine...

Eine abgespeckte Version habe ich beigefügt. Bin gespannt auf Euren Input!!!

Viele Grüße!
MuMa
Hallo

interessante Frage, was macht ihr genau mit den Stammdaten? 
Werden die manuell sortiert, wenn ein neuer Mitarbeiter dazu kommt, oder gelöscht wird?
Man könnte das über ein Makro machen, und die Daten im Dienstplan über eine Hilfsspalte mit sortieren..

mfg Gast 123
Hallo Gast123,.

die Stammdaten werden im Dienstplan dargestellt und dienen ansonsten nur der Mitarbeiterverwaltung bzw Informationserhebung.

Die Daten werden manuell sortiert. Es gibt eine hierarchische und natürlich eine Anordnung nach Nachnamen.

Wenn ein Mitarbeiter gelöscht wird, habe ich noch gar nicht nachgedacht, was dann mit den Daten passieren soll. Es wäre schön, wenn sie irgendwie „ausgesondert“ in einer separaten Datei abgespeichert werden könnten. 

Dein Ansatz mit Hilfsspalte finde ich interessant. Habe aber keine Ahnung, was die Umsetzung angeht.
Ein Makro ist aber kein Problem zu implementieren.

Viele Grüße und danke für die Hilfe!!!
@TE das wird nicht funktionieren.

Die Urlaubsdaten gehören ja wohl auch eher zu den Personaldaten als zum Schichtplan und sollten nicht öffentlich sein. 

Da die Schichtdaten keine logische Verbindung zu den Personaldaten haben, wirkt sich eine Änderung im Personalblatt nicht automatisch auf die Schichtdaten aus.  
Das ist das aktuelle Problem. 

Eine Veränderung im Stammblatt überträgt sich wegen der Formeln auf das Schichtblatt. Vba erkennt aber hier kein Change, da Änderungen durch Formelergebnisse damit nicht erkennbar sind.
Die Änderung müßte in der Namenspalte in Stammdaten abgefangen werden und dann aufwendig synchronisiert werden. 

Alternativ bleibt man bei der Formelreferenzierung und erzeugt für jeden Personendatensatz eine eindeutige ID(z.b. PersonalNr, LfdNr ist hier nur ein schwacher Ansatz)
Diese ID wird im Schichtplan per Formel mit den Namen übertragen und zusätzlich in einer Hilfsspalte auch für den Schichtbereich, ohne Formel, eingefügt.
Beim jedem Calculate Ereignis im Schichtblatt prüft ein Makro ob die beiden ID's pro Zeile noch stimmen und verschiebt entsprechend die Schichtdaten. 
Neue Mitarbeiter oder entfernte sind dann in einer Extrarunde zu behandeln. 
Die veränderten Datenbereiche müßten dann auch für die bedingten Formatierungen nachgezogen werden.

So jetzt hast du 2 Ideen
Hallo Ralf,

auch dein Ansatz ist interessant. Wie könnte denn ein solches Makro aussehen (ohne zu wissen, wie arbeitsintensiv die Erstellung eines solchen wäre).

Würde sich an deinem Ansatz etwas ändern, wenn die Einsicht in die Stammdaten nur dem Schichtleiter und dessen Stellvertreter vorbehalten sind?

Viele Grüße und auch dir vielen Dank!!!
(07.11.2023, 01:14)MuMa0806 schrieb: [ -> ]Wie könnte denn ein solches Makro aussehen (ohne zu wissen, wie arbeitsintensiv die Erstellung eines solchen wäre).

Wie jedes Makro. Ein paar oder ein paar mehr Zeilen Code.  Ich mach's nicht. Hab grad keine Muße für sowas. 
Du solltest dir überlegen ob man solche Änderungen nicht sowieso von Hand auslöst, anstatt das komplett einem Automatismus zu überlassen. 
Also einen Button für Synchronisieren, Nutzer hinzufügen, Nutzer löschen. Und weil ich ein Freund von Userformen bin, das Ganze in einer Userform vereinen.
Das Problem was User in Tabellen mit bedingten Formatierungen haben ist, das sie nicht mitbekommen wie sehr sie diese bedingten Formatierung zerstückeln wenn sie Dinge hin und her kopieren.
Hallo

hier mal deine Beispiedatei mit VBA Lösung zurück.  Einfach nur Button drücken und schauen was passiert:

Hinweis   Bitte den Test NICHT in der Originaldatei durchführen, bitte zum Testen eine Kopie erstellen!
Sollte das makro nicht einwandfrei laufen könnten sonst alle Daten irreparabel verschoben werden!

Mein Makro befindet sich in einer alten Excel 2003 Datei, habe leider keine neue Version auf dem Laptop.
D.h., ich musste die Spalten kürzen, weil das alte Excel nicht bis zur Spalte "OO" geht!  Bei mir "IS" als Hilfsspalte.
Das Mkaor kopiert alle Mitarbeiter zuerst in die Hilfssdpalte, sortiert dann die Stammdaten, dann den Dienstplan.
Beim Dienstplan sortieren werden die Formeln NICHT mitsortiert! Das ist mein genialer Trick zum verschieben!

Würde mich freuen wenn die Idee in der Praxis einwandfrei funktioniert.  Aber bitte die Daten gründlich prüfen.
Für dein Original musst du nur in der Const Anweisung deine Hilfsspalte angeben.  z.B. "OQ" oder "OR"


mfg Gast 123

l

Nachtrag   gelöschte Mitarbeiter inms Archiv verschieben kommt noch.
Hallo Gast123,

Danke erst einmal für deine Eingabe. Das funktioniert soweit einwandfrei.

Das wird dann auch die Grundlage für meine weitere Arbeit.

Ich freue mich ,dass man mit wieder einmal hervorragend weiterhelfen konnte!!!

Viele Grüße!

MuMa0806