Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

"Dynamischer" - Schichtplan
#1
Hallo zusammen,


ich habe eine Frage zu einem Schichtplan.
(Datei im Anhang)

Der Reiter "Schichteinteilung" soll  Prozesse etc. darstellen und die entsprechenden Mitarbeiter die den Prozessen zugeteilt wurden.
Der Reiter "Mitarbeiterqualifikationen" ist dafür da, die Qualifikationen der Mitarbeiter "zuweisen" zu können.
Man kann also feststellen, welcher Mitarbeiter bei wievielen Prozessen eingesetzt werden kann.
(z.B. beim Reiter "Schichtleitung" Zelle C4 anklicken>Daten>Datenüberprüfung>Liste>Mitarbeiter beim Reiter "Mitarbeiterqualifikationen"  bei Prozess A markieren>OK)
Danach hat man quasi in der Zelle C4 (Reiter "Schichteinteilung") Mitarbeiter-Namen in einem Dropdown Menu die für den Prozess qualifiziert sind.

Frage:
Wie kann man ein Mitarbeiter-Name sobald er das zweite mal von einer anderen Zelle ausgewählt wurde, automatisch aus der Zelle davor entfernen?
So dass ein Mitarbeiter nur in einem Prozess sein kann und nicht in zwei oder mehreren?

Beispiel:
Gelb markierte Zellen: C4 & F7.
C4 "Schiller" wechseln zu "Groß"
Zelle F7 mit "Groß" wird gelöscht/zurückgesetzt. Da der Name nur einmal vorkommen darf.


Ich hoffe ich habe mich verständlich ausgedrückt. Leider habe ich keinen Ansatzpunkt, bin aber für alle Vorschläge offen.

Danke!
.xlsx   Schichtplan.xlsx (Größe: 13,41 KB / Downloads: 15)
Antwortento top
#2
Hallöchen,

dafür sind zwei Ansätze vorstellbar.
1) Für ein automatisches Entfernen wäre eine Makrolösung erforderlich.
2) Nutze die bedingte Formatierung und markiere damit die Zellen mit den Name die mehr als einmal auftreten.

Hinweis / Frage:
Was machst Du, wenn Du irgendwann zwei Mitarbeiter Max Mustermann hast?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
Wink 
(26.10.2019, 16:34)schauan schrieb: Hallöchen,

Hinweis / Frage:
Was machst Du, wenn Du irgendwann zwei Mitarbeiter Max Mustermann hast?

Dann geht es vielleicht mit der Bundestagslösung:

Müller Lüdenscheid 19

bzw

Mustermann Berlin  41
herzliche Grüße aus dem Emsland  26

Peter
Antwortento top
#4
Hallo schauan,

der 2. Vorschlag von dir bezieht sich auf das Markieren der Zelle. Ich möchte aber den Eintrag der "ersten" Zelle löschen, sobald eine neue Zelle mit dem gleichen Namen der "ersten" Zelle bestückt wurde.
Ist der Name in der Tabelle einmal vorhanden, ist es ok. Sobald ein Name einem Prozess neu zugeordnet wird, dieser aber bereits in einer anderen Zelle vorhanden ist, soll die Zelle in der der Name davor vorhanden war, leer werden.

Zum 1. Vorschlag, wie würdest du das aufbauen? Hättest du da ein Beispiel?

Danke für deine Vorschläge, ich habe das Internet dazu durchforstet, aber leider nichts dazu gefunden.
Antwortento top
#5
Hallöchen,

Das makro könnte so aussehen. Es gehört in das Codemodul vom Tabellenblatt, wo es wirken soll.

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'Wenn was im Bereich F4:F9 passiert, dann
If Not Intersect(Target, Range("F4:F9")) Is Nothing Then
  'Wenn mehr als eine Zelle geaendert wird oder eine Zelle geloescht wird,
  'dann Makro verlassen
  'Hinweis: ich gehe davon aus, dass der Anwender nicht zwei oder mehr Namen
  'aus C4:C16 kopiert und einfuegt ...
  If Target.Cells.Count > 1 Or Target.Value = "" Then Exit Sub
  'Bei Fehler weiter im Makro
  On Error Resume Next
  'Name in C3:C16 suchen und entfernen
  Range("C3:C16").Find(What:=Target.Value, After:=Cells(3, 3), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).ClearContents
'Ende Wenn was im Bereich F4:F9 passiert, dann
End If
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#6
Hallo schauan,

vielen Dank für den Einstieg!

Leider hat dein Code nur auf der linken Tabelle funktioniert, die rechte Tabelle hat da nicht mitgespielt.
Aber auf dieser Basis konnte ich mit Hilfe eines Kollegen den Code "erweitern".

Der Code wurde im Reiter "Schichteinteilung" eingefügt.

----------------------------------------------------------------------------------------------------------------------------------------------

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If (Not Intersect(Target, Range("F4:F9")) Is Nothing) Or (Not Intersect(Target, Range("C4:C16")) Is Nothing) Then

  If Target.Cells.Count > 1 Or Target.Value = "" Then Exit Sub

  On Error Resume Next

  If Target.Column = 6 Then
  Range("C3:C16").Find(What:=Target.Value, After:=Cells(3, 3), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).ClearContents
  End If
  If Target.Column = 3 Then
  Range("F3:F9").Find(What:=Target.Value, After:=Cells(3, 6), LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).ClearContents
  End If

End If
End Sub

---------------------------------------------------------------------------------------------------------------------------------------------

Wenn man diesen Code in der Datei einfügt (im Reiter Schichteinteilung), geht es auf beiden Tabellen.

Vielen Dank nochmal!
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste