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.

Namen zuordnen mit Einschränkungen
#51
Hi Gast

Habe Code ausgewechselt wie beschrieben aber hier ist leider keine Besserung eingetreten Undecided
Anbei die Datei mit dem angepassten Code

Gruss Enzo


Angehängte Dateien
.xlsm   Spielplan Original 2712 bsp1.xlsm (Größe: 89,03 KB / Downloads: 4)
Antworten Top
#52
Hallo Enzo

ich habe dein letztes Beispiel zweimal runtergeladen, kann aber keinen Fehler feststellen.  Es gibt in der Auswertung keinen Überlauf, und die Reihenfolge der Kollegen stimmt m.E. überein.  Um 7:00 ist Alain als letzter an der Reihe, dann geht es um 8:00 Uhr mit Marc weiter. Marc ist ja nur um 7:00 nicht verfügbar!
Bei neun Aktionen kommt er um 7:00 ja nicht mehr zum Einsatz!  Um 8:00 ist er verefügbar.

Die weitere Auswertung ist gneau und exakt nach der Kollegen Aufstellung.  Welchen Fehler meinst du konkret, oder war das die falsche Datei???

mfg  Gast 123
Antworten Top
#53
Nachtrag

wo genau startet das Makro für den Button in der "Erfassung"?  Eins befindet sich im Modul1, das ich zum Testen bevorzuge,  und eins ist in der Tabelle "Speilplan" integriert.  Welches Makro startest du, wurden beide auf den neuesten Stand gebracht??

mfg  Gast 123
Antworten Top
#54
Hallo

Hier mal der Versuch einer Formellösung zum testen.

.xlsx   Formel Lösung.xlsx (Größe: 56,89 KB / Downloads: 3)

Gruß Elex
Antworten Top
#55
Hallo Gast

Zitat:Um 7:00 ist Alain als letzter an der Reihe, dann geht es um 8:00 Uhr mit Marc weiter. Marc ist ja nur um 7:00 nicht verfügbar!

Bei neun Aktionen kommt er um 7:00 ja nicht mehr zum Einsatz!  Um 8:00 ist er verefügbar.
 
Nicht verfügbar ist gleichzustellen wie eine Aktion erhalten. D.H Marc ist um 0700 als erster keinen Job erhalten, aber da er sich eben ausgetragen hat=nicht verfügbar, zählt dies in diesem Fall wie eine Aktion erhalten. Somit müsste in diesem speziellen Fall eben wieder Martin als Nr1 den ersten Job erhalten. 
Gruss Enzo
Antworten Top
#56
Hallo :Enzo

ich habe das Makro noch einmal korrigiert, im Überlauf die Schleife Verfügbarkeit mit eingebaut. Hoffe das es so euren Wünschen entspricht.
Für mich ist das die letzte Aenderung, verabschiede mich aus diesem Thread. Wenn noch Fragen sind bitte an die Kolegen wenden.

Ich wünsche euch allen ein frohes neues Jahr ...

mfg  Gast 123

Code:
Option Explicit            '8.12.2018  für Clevber Forum  Gast 123

Const ZÜberlauf = 21       '1. Zeile für Überlauf, z.Zt. 22
Const Passwort = "Enzo"    'Passwort bitte selbst festlegen



'Korrektur  18.12.2018 - 23.12.2018 - 2.1.2019
'Korrektur  29.1.22018  MTA weiterzaehlen!!  (nicht verfügbar=Aktion erhalten)
'Spielplan und Kollegen Verteilung auswerten

Sub Kollegen_auswerten_6()
Dim rfind As Range, lzB, lzF, lzEf
Dim AC As Range, a, d, m, j, ü, z, Txt
Dim EFS As Worksheet, Spmax As Integer
Set EFS = Worksheets("Erfassung")
'GoTo Start   'No InputBox

'**  falss Passwort nicht erwünscht diesen Teil löschen
Txt = InputBox("Stimmen alle Daten in der Erfassung?" & Chr(10) & _
       "Soll der Spielplan jetzt erstellt werden?" & Chr(10) & _
        Chr(10) & "Bitte das Passwort eingeben!")
If Txt = Empty Then Exit Sub
If Txt <> Passwort Then MsgBox "Falsches Passwort": Exit Sub
'**  Ende des Passwort Code

Start:
With Worksheets("Spielplan")
 Application.ScreenUpdating = False
 Spmax = .Cells(2, Columns.Count).End(xlToLeft).Column

'Spielplan und Spalte K löschen  (Spielplan 200 Zeilen nach unten)
.Range("A2:M200").ClearContents  'erweitert auf 200!!
.Range("O3").Resize(100, Spmax).ClearContents
.Range("N3").Resize(100, 1).ClearContents

'###  Kollegen aus Spalt P nach K kopieren
If Trim(EFS.Range("P1")) <> "" Then            'neu eingefügt
 EFS.Range("K2:K20").ClearContents            'zuerst K Bereich löschen
 For j = 1 To 20                              'Daten ohne Leerzeilen!!
 If Trim(EFS.Cells(j, "P")) = Empty Then Exit For
    EFS.Cells(j + 1, "K") = EFS.Cells(j, "P")
 Next j
Else: MsgBox "Erfassung Spalte P nicht kopiert - 1. Zelle leer!"
End If
'####  Ende neuer Teil


'Daten aus Erfassung in Spielplan kopieren  (keine Formeln!)
 lzEf = EFS.Cells(Rows.Count, 2).End(xlUp).Row

 EFS.Range("B2:B" & lzEf).Copy
  .Range("J2").PasteSpecial xlPasteValues        'Aktionen
 EFS.Range("C2:C" & lzEf).Copy
  .Range("I2").PasteSpecial xlPasteValues        'Zeiten
 EFS.Range("D2:E" & lzEf).Copy
  .Range("K2").PasteSpecial xlPasteValues        'Material, Notizen

 EFS.Range("H2", EFS.[h2].End(xlDown)).Copy
  .Range("D2").PasteSpecial xlPasteValues      'definierte Zeiten
 EFS.Range("J2", EFS.[k2].End(xlDown)).Copy
  .Range("A2").PasteSpecial xlPasteValues      'Kolegen Liste 1-15
 EFS.Range("J2", EFS.[k2].End(xlDown)).Copy
  .Range("N3").PasteSpecial xlPasteValues      'Kolegen Liste 1-15
'  EFS.Range("M2", EFS.[n2].End(xlDown)).Copy
'   .Range("F2").PasteSpecial xlPasteValues      'Ausnahmen (nicht verfügbar)
 
 'Ausnahmen -Ohne Leerzellen- kopieren !!
 For j = 2 To EFS.Range("M1").End(xlDown).Row
 If Trim(EFS.Cells(j, "M")) = Empty Then Exit For
    .Cells(j, "F") = EFS.Cells(j, "M")
    .Cells(j, "G") = EFS.Cells(j, "N")
 Next j
  Application.CutCopyMode = False
'**  Ende Kopier Teil:  Daten in Spielplan kopieren
 
 lzB = .Cells(Rows.Count, 2).End(xlUp).Row
 lzF = .Cells(Rows.Count, 6).End(xlUp).Row
 a = 2:  d = 2:  m = 3: ü = 0 'Zaehler Vorgaben
 z = 2

On Error Resume Next
'Verfügbarkeit der Kollegen auswerten Spalte K
For Each AC In .Range("I2", .[I2].End(xlDown))
If Trim(AC) = Empty Then Exit For  'Nullwert!!
'Überlauf Zaehler bei neeur Uhrzeit löschen
   If AC.Row > 2 And Format(CDate(AC), "hh:mm") = _
      Format(CDate(AC.Cells(0, 1)), "hh:mm") Then
   Else: ü = 0:  Txt = Empty
   End If

   If ü + 1 < lzB Then
    'Verfügbarkeit prüfen  (auf Nullwerte prüfen!!)
     For j = 2 To lzF
        If Trim(.Cells(j, 6)) = Empty Then Exit For
        If Abs(AC.Value - .Cells(j, 6)) < 0.0001 Then
           If .Cells(a, 2) = .Cells(j, 7) Then
              Txt = Txt & ", " & .Cells(a, 2)
              a = a + 1
           End If
           If a > lzB Then a = 2
        End If
     Next j

     'Kollegen Überlauf Prüfung bei Nicht Verfügbar!!
     If InStr(Txt, .Cells(a, 2)) Then GoTo übL
         
     'Kollegen in Spalte K eintragen
     AC.Offset(0, 4) = .Cells(a, 2)
     Txt = Txt & ", " & .Cells(a, 2)
     a = a + 1   'Next Kollege in K
     If a > lzB Then a = 2
     
     ü = ü + 1   'Überlauf Zaehler +1
  Else  'Überlauf Vorgabe Zeile 21:
übL: .Cells(21, "O") = "Überlauf:"
     ü = ZÜberlauf  'geaend. 2.1.2019
     'Verfügbarkeit auch bei Überlauf prüfen
     For j = 2 To lzF
        If Trim(.Cells(j, 6)) = Empty Then Exit For
        If Abs(AC.Value - .Cells(j, 6)) < 0.0001 Then
           If .Cells(a, 2) = .Cells(j, 7) Then
              Txt = Txt & ", " & .Cells(a, 2)
              a = a + 1
           End If
           If a > lzB Then a = 2
        End If
     Next j
  End If
Next AC

'Kollegen gemaess Spalte B in Spalte O auflisten
a = 3  '1.Zeile im Plan
For j = 2 To .Cells(1, 2).End(xlDown).Row
   For Each AC In .Range("M2", .[m2].End(xlDown))
      If .Cells(j, 2) = AC.Value Then
         .Cells(a, "O") = .Cells(j, 2)
          a = a + 1: Exit For
      End If
   Next AC
Next j

'Spiele den Zeiten und Kollegen zuordnen
For Each AC In .Range("I2", .[I2].End(xlDown))
   If AC.Formula <> AC.Cells(0, 1).Formula Then ü = ZÜberlauf
   
   For d = 16 To Spmax Step 3  '45 Spalten von P-AS
     If Abs(AC.Value - .Cells(2, d)) < 0.0001 Then Exit For
   Next d
   
   'definierte Zeit im Plan suchen  (Zeile 2)
   For m = 3 To lzB + 1
      If .Cells(AC.Row, "M") = .Cells(m, "O") Then Exit For
   Next m
           
   'Aktion + Bemerkung in Plan einfügen
   If AC.Offset(0, 4) <> Empty Then
      AC.Cells(1, 2).Resize(1, 3).Copy
     .Cells(m, d).PasteSpecial xlPasteValues
      Application.CutCopyMode = False
   Else  'oder als Überlauf notieren
      AC.Cells(1, 2).Resize(1, 3).Copy
      .Cells(ü, d).PasteSpecial xlPasteValues
       Application.CutCopyMode = False
        ü = ü + 1   'Next Überlauf
   End If

Next AC
End With

'Tabelle Endprodukt aktivieren
'Worksheets("Endprodukt").Select
End Sub
Antworten Top


Gehe zu:


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