1k Aufrufe
Gefragt in Tabellenkalkulation von hakmatata Einsteiger_in (62 Punkte)

Liebe Leute,

ich habe es gestern schon den ganzen Tag versucht, aber nicht hinbekommen.

Ich habe eine Tabelle, wo in Spalte C die Namen von Mitarbeitern stehen.

In den jeweiligen Zeilen zum Mitarbeiter werden dann die An- und Abenwesenheiten gepflegt. Jedes Monat bzw. jeder Tag befindet sich als Spaltenüberschrift in weiteren Spalten rechts vom MA.

Hier ein Beispiel:

MA 1.1. 2.1 3.1 4.1 5.1 61.
Mayer FT 8 8 8 KR FT
Schuster FT UR UR UR UR FT
Mustermann FT 8 8 8 8 FT

Die Zahlen geben die Arbeitsstunden an, FT steht für Feiertag, KR für Krank, UR für Urlaub.

Ich benötige nun eine Formel oder wahrscheinlich viel eher ein Makro, welches mir pro MA die Anzahl von KR, UR und FT ausgibt.

Herausforderung: Als Makro Eingabe möchte ich das Monat eingeben und danach sollte sich dieses starten.

Also müsste das Makro zB. bei Eingabe "Jänner" wissen, dass es nur von 1.1. - 31.1. "sucht" und zählt.

Hat jemand evtl. soetwas schon mal benötigt und könnte mir da mit einem Code aushelfen?

DANKE

36 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

es wäre gut, wenn du mal eine Beispieltabelle auf einen Hoster deiner Wahl (z.B. https://filehorst.de/) hochladen könntest und den Link dann hier einstellst, damit man sich den Aufbau mal genau anschauen kann.

In der Beispieldatei könntest du z.B. auch mal darstellen, wie du dir die Ausgabe des Ergebnisses vorstellt.

Gruß

M.O.

0 Punkte
Beantwortet von hakmatata Einsteiger_in (62 Punkte)
Hi M.O.

danke für den Hinweis zum Filehorst - Habe mich gleich registriert und eine Sample Datei upgeloaded.

https://filehorst.de/d/cAiEsghD

Das Excel verfügt über 2 Registerkarten:

Reg1: Ressourcenplan -> Hier werden die Daten gepfleft

Reg2: Personalliste -> Hier kann man bereits das Makro starten wenn man den Monat auswählt. Es liest sich dann alle aktiven MA aus sowie die entsprechenden Arbeitsstunden.

Es fehlt nun noch das Zählen der UR, KH und FT Tage mit Datumsangabe zu diesen Abwesenheiten in den dafür vorgesehenen Spalten.

Ich hoffe ich habe es einigermaßen gut beschrieben und hoffe, dass mir jemand helfen kann!

DANKE EUCH!
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

ersetze mal dein vorhandenes Makro im Arbeitsblatt Personalliste durch den folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngMonat As Long
Dim lngLSpalte As Long
Dim lngLZeile As Long
Dim arrMitarbeiter()
Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngAnzahl As Long
Dim lngZaehler As Long
 
'Falls keine Eingabe in C2 erfolgt dann Makro verlassen
If Target.Address <> "$C$2" Then Exit Sub
 
'Meldungen ausschalten
Application.EnableEvents = False
'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Inhalte Blatt Personalliste löschen
Worksheets("Personalliste").Range("A7", Cells(Application.Max(7, Cells(Rows.Count, 1).End(xlUp).Row), 1)).Resize(, 8).ClearContents
 
With Worksheets("Ressourcenplan")
    'letzte Spalte in Zeile 3 des Arbeitsblatts Ressourcenplan ermitteln ermitteln
    lngLSpalte = .Cells(3, Columns.Count).End(xlToLeft).Column
    'Letzte Zeile in Spalte C ermitteln
    lngLZeile = .Cells(Rows.Count, 3).End(xlUp).Row

   'Monat zur Auswertung bestimmen
  Select Case Range("C2").Value
   Case Is = "Jänner"
     lngMonat = 1
   Case Is = "Februar"
     lngMonat = 2
   Case Is = "März"
     lngMonat = 3
   Case Is = "April"
     lngMonat = 4
   Case Is = "Mai"
     lngMonat = 5
   Case Is = "Juni"
     lngMonat = 5
   Case Is = "Juli"
     lngMonat = 6
   Case Is = "August"
     lngMonat = 8
   Case Is = "September"
     lngMonat = 9
   Case Is = "Oktober"
     lngMonat = 10
   Case Is = "November"
     lngMonat = 11
   Case Is = "Dezember"
     lngMonat = 12
  End Select
 
   'nun nach aktiven Mitarbeitern filtern
   With .Range(.Cells(20, 1), .Cells(lngLZeile, lngLSpalte))
    .AutoFilter Field:=4, Criteria1:="=aktiv"
   End With
     
   'Anzahl der gefilterten Datensätze ermitteln
   For lngZeile = 21 To lngLZeile
     If .Cells(lngZeile, 4).Value = "aktiv" Then lngAnzahl = lngAnzahl + 1
   Next lngZeile
   
   'Feld für Auswertung Redimensionieren
   ReDim arrMitarbeiter(lngAnzahl, 5)
 
   'nun gefilterte Zeilen durchlaufen und Daten in Feld einlesen
   For lngZeile = 21 To lngLZeile
    If .Rows(lngZeile).Hidden = False Then
      lngZaehler = lngZaehler + 1
      arrMitarbeiter(lngZaehler, 0) = .Cells(lngZeile, 2) 'Nummer des Mitarbeiters
      arrMitarbeiter(lngZaehler, 1) = .Cells(lngZeile, 3) 'Name des Mitarbeiters
      'Stunden des jeweiligen Monats suchen
      For lngSpalte = 5 To lngLSpalte
       If .Cells(20, lngSpalte) = Worksheets("Personalliste").Range("C2").Value Then
         arrMitarbeiter(lngZaehler, 2) = .Cells(lngZeile, lngSpalte) 'Arbeitsstunden im Monat
         Exit For
       End If
      Next lngSpalte
      'nun Feiertage, Urlaub und Krank des Monats zählen
      'dazu wieder alles Spalten durchlaufen
      'zuerst wird geprüft, ob in Zeile 3 ein Datum stehn
      For lngSpalte = 5 To lngLSpalte
        If IsDate(.Cells(3, lngSpalte)) = True Then
          'nun prüfen, ob Datum in dem gesuchten Monat liegt
          If Month(.Cells(3, lngSpalte)) = lngMonat Then
           'falls ja, dann prüfen, ob etwas in der betreffenden Spalte steht und entsprechenden Zähler erhöhen
            If .Cells(lngZeile, lngSpalte).Value = "FT" Then arrMitarbeiter(lngZaehler, 3) = arrMitarbeiter(lngZaehler, 3) + 1  'Feiertag
            If .Cells(lngZeile, lngSpalte).Value = "UR" Then arrMitarbeiter(lngZaehler, 4) = arrMitarbeiter(lngZaehler, 4) + 1  'Urlaub
            If .Cells(lngZeile, lngSpalte).Value = "KR" Then arrMitarbeiter(lngZaehler, 5) = arrMitarbeiter(lngZaehler, 5) + 1  'Krank
          End If
        End If
      Next lngSpalte
    End If
   Next lngZeile
   
    'Filter wieder aufheben
    'nun nach aktiven Mitarbeitern filtern
   With .Range(.Cells(20, 1), .Cells(lngLZeile, lngLSpalte))
    .AutoFilter
   End With
    
  End With
 
 'Nun Daten in Personalliste übertragen
 With Worksheets("Personalliste")
  For lngZeile = 1 To lngZaehler
   For lngSpalte = 0 To 5
     .Cells(lngZeile + 6, lngSpalte + 1) = arrMitarbeiter(lngZeile, lngSpalte)
   Next lngSpalte
  Next lngZeile
 End With
 
'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True
'Meldungen wieder anzeigen
Application.EnableEvents = True

End Sub


Schau mal, ob das Makro so funktioniert, wie du dir das vorstellst.

Gruß

M.O.

0 Punkte
Beantwortet von hakmatata Einsteiger_in (62 Punkte)
Hallo M.O.,

also ich fasse es gerade nicht - Du bist der Hammer ;) Danke - Das funktioniert!!!

Einzig: Statt KR habe ich auf KH ausgebessert, das war aber mein Fehler, da ich Krank mit KR angegeben habe !

Sehr cool!

Ist es nun noch sehr aufwändig in den Zellen wo man KH, UR und FT zählt das jeweilige Datum mitanzugeben??? Oder zumindest bei mehreren Abwesenheitstagen von - bis .

Das bläht zwar die Zellen noch sauber auf, aber es muss leider irngedwie rein..!

VIELEN VIELEN DANK! Wie darf ich mich revanchieren??;)
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

freut mich, dass das Makro so funktioniert, wie du willst.

Mit  dem folgenden Code werden die Fehltage als Kommentar in den betreffenden Zellen eingefügt:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngMonat As Long
Dim lngLSpalte As Long
Dim lngLZeile As Long
Dim arrMitarbeiter()
Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngAnzahl As Long
Dim lngZaehler As Long
 
'Falls keine Eingabe in C2 erfolgt dann Makro verlassen
If Target.Address <> "$C$2" Then Exit Sub
 
'Meldungen ausschalten
Application.EnableEvents = False
'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Inhalte Blatt Personalliste löschen
With Worksheets("Personalliste").Range("A7", Cells(Application.Max(7, Cells(Rows.Count, 1).End(xlUp).Row), 1)).Resize(, 8)
 .ClearContents 'Inhalte löschen
 .ClearComments 'Kommentar löschen
End With
 
With Worksheets("Ressourcenplan")
    'letzte Spalte in Zeile 3 des Arbeitsblatts Ressourcenplan ermitteln ermitteln
    lngLSpalte = .Cells(3, Columns.Count).End(xlToLeft).Column
    'Letzte Zeile in Spalte C ermitteln
    lngLZeile = .Cells(Rows.Count, 3).End(xlUp).Row

   'Monat zur Auswertung bestimmen
  Select Case Range("C2").Value
   Case Is = "Jänner"
     lngMonat = 1
   Case Is = "Februar"
     lngMonat = 2
   Case Is = "März"
     lngMonat = 3
   Case Is = "April"
     lngMonat = 4
   Case Is = "Mai"
     lngMonat = 5
   Case Is = "Juni"
     lngMonat = 5
   Case Is = "Juli"
     lngMonat = 6
   Case Is = "August"
     lngMonat = 8
   Case Is = "September"
     lngMonat = 9
   Case Is = "Oktober"
     lngMonat = 10
   Case Is = "November"
     lngMonat = 11
   Case Is = "Dezember"
     lngMonat = 12
  End Select
 
   'nun nach aktiven Mitarbeitern filtern
   With .Range(.Cells(20, 1), .Cells(lngLZeile, lngLSpalte))
    .AutoFilter Field:=4, Criteria1:="=aktiv"
   End With
     
   'Anzahl der gefilterten Datensätze ermitteln
   For lngZeile = 21 To lngLZeile
     If .Cells(lngZeile, 4).Value = "aktiv" Then lngAnzahl = lngAnzahl + 1
   Next lngZeile
   
   'Feld für Auswertung Redimensionieren
   ReDim arrMitarbeiter(lngAnzahl, 8)
 
   'nun gefilterte Zeilen durchlaufen und Daten in Feld einlesen
   For lngZeile = 21 To lngLZeile
    If .Rows(lngZeile).Hidden = False Then
      lngZaehler = lngZaehler + 1
      arrMitarbeiter(lngZaehler, 0) = .Cells(lngZeile, 2) 'Nummer des Mitarbeiters
      arrMitarbeiter(lngZaehler, 1) = .Cells(lngZeile, 3) 'Name des Mitarbeiters
      'Stunden des jeweiligen Monats suchen
      For lngSpalte = 5 To lngLSpalte
       If .Cells(20, lngSpalte) = Worksheets("Personalliste").Range("C2").Value Then
         arrMitarbeiter(lngZaehler, 2) = .Cells(lngZeile, lngSpalte) 'Arbeitsstunden im Monat
         Exit For
       End If
      Next lngSpalte
      'nun Feiertage, Urlaub und Krank des Monats zählen
      'dazu wieder alles Spalten durchlaufen
      'zuerst wird geprüft, ob in Zeile 3 ein Datum stehn
      For lngSpalte = 5 To lngLSpalte
        If IsDate(.Cells(3, lngSpalte)) = True Then
          'nun prüfen, ob Datum in dem gesuchten Monat liegt
          If Month(.Cells(3, lngSpalte)) = lngMonat Then
           'falls ja, dann prüfen, ob etwas in der betreffenden Spalte steht und entsprechenden Zähler erhöhen
            If .Cells(lngZeile, lngSpalte).Value = "FT" Then
                arrMitarbeiter(lngZaehler, 3) = arrMitarbeiter(lngZaehler, 3) + 1  'Feiertag
                arrMitarbeiter(lngZaehler, 6) = arrMitarbeiter(lngZaehler, 6) & Chr(10) & .Cells(3, lngSpalte) 'Datum des Feiertages
            End If
            If .Cells(lngZeile, lngSpalte).Value = "UR" Then
              arrMitarbeiter(lngZaehler, 4) = arrMitarbeiter(lngZaehler, 4) + 1  'Urlaub
              arrMitarbeiter(lngZaehler, 7) = arrMitarbeiter(lngZaehler, 7) & Chr(10) & .Cells(3, lngSpalte)
            End If
            If .Cells(lngZeile, lngSpalte).Value = "KH" Then
              arrMitarbeiter(lngZaehler, 5) = arrMitarbeiter(lngZaehler, 5) + 1  'Krank
              arrMitarbeiter(lngZaehler, 8) = arrMitarbeiter(lngZaehler, 8) & Chr(10) & .Cells(3, lngSpalte)
            End If
          End If
        End If
      Next lngSpalte
    End If
   Next lngZeile
   
    'Filter wieder aufheben
    'nun nach aktiven Mitarbeitern filtern
   With .Range(.Cells(20, 1), .Cells(lngLZeile, lngLSpalte))
    .AutoFilter
   End With
    
  End With
 
 'Nun Daten in Personalliste übertragen
 With Worksheets("Personalliste")
  For lngZeile = 1 To lngZaehler
   For lngSpalte = 0 To 5
     With .Cells(lngZeile + 6, lngSpalte + 1)
      .Value = arrMitarbeiter(lngZeile, lngSpalte)
      'Daten der Fehlzeiten als Kommentar einfügen
      If lngSpalte > 2 And arrMitarbeiter(lngZeile, lngSpalte + 3) <> "" Then
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=Right(arrMitarbeiter(lngZeile, lngSpalte + 3), Len(arrMitarbeiter(lngZeile, lngSpalte + 3)) - 1) 'Daten als Kommentar ausgeben
        With .Comment.Shape.TextFrame
            .AutoSize = True
        End With
      End If
     End With
   Next lngSpalte
  Next lngZeile
 End With
 
'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True
'Meldungen wieder anzeigen
Application.EnableEvents = True

End Sub

Revanchieren brauchst du dich bei mir nicht, ich mache das wie alle hier im Forum aus Spaß an der Freudesmiley.

Gruß

M.O.

0 Punkte
Beantwortet von hakmatata Einsteiger_in (62 Punkte)
@M.O. Absolut unglaublich ! Vielen Dank nochmal, das funktioniert ja SUUUPER !;)

Ohne Spaß daran würdest du es gewiss nicht tun hier unterstützen, trotzdem: Meine größte Achtung vor diesem Einsatz!

Alles Gute
0 Punkte
Beantwortet von hakmatata Einsteiger_in (62 Punkte)
@M.O.:

Ich versuche gerade das Makro, dass ja wirklich super läuft, in der Praxis einzusetzen und da bin ich drauf gekommen, dass man die Excel Kommentare nicht wirklich gut ausdrucken kann bzw. sich diese so ausdrucken lassen, wie man sich es wünschen würde (sie verdecken und überlappen sich gegenseitig)

Für einen bestimmten Arbeitsschritt muss ich die Liste nämlich ausdrucken und am Ausdruck sollten dann die Datümer zu den jeweiligen UR,FT, KH ersichtlich sein.

Ich finde es aber grundsätzlich gut, dass wir die Datümer nicht in die Zellen reinschreiben.

Wäre es daher möglich, dass wir in den Kommentaren, die man am Ende des Dokuments mit ausdrucken kann noch den Namen des MA reinschreibt und um welche Abwesenheit es sich handelt? Das ist zwar dann in elektronischer Sicht doppelt gemoppelt, aber für den Ausdruck wäre es dann sichtbar und zuordenbar.

Oder falls das zu komplex ist, könnten wir die Datümer gleich in die Zellen reinschreiben , allerdings auch die bereits angeführte Gesamtanzahl.

hmmm...
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

den Namen im Kommentarfeld zu ergänzen ist wirklich das kleinste Problem:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngMonat As Long
Dim lngLSpalte As Long
Dim lngLZeile As Long
Dim arrMitarbeiter()
Dim lngZeile As Long
Dim lngSpalte As Long
Dim lngAnzahl As Long
Dim lngZaehler As Long
 
'Falls keine Eingabe in C2 erfolgt dann Makro verlassen
If Target.Address <> "$C$2" Then Exit Sub
 
'Meldungen ausschalten
Application.EnableEvents = False
'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Inhalte Blatt Personalliste löschen
With Worksheets("Personalliste").Range("A7", Cells(Application.Max(7, Cells(Rows.Count, 1).End(xlUp).Row), 1)).Resize(, 8)
 .ClearContents 'Inhalte löschen
 .ClearComments 'Kommentar löschen
End With
 
With Worksheets("Ressourcenplan")
    'letzte Spalte in Zeile 3 des Arbeitsblatts Ressourcenplan ermitteln ermitteln
    lngLSpalte = .Cells(3, Columns.Count).End(xlToLeft).Column
    'Letzte Zeile in Spalte C ermitteln
    lngLZeile = .Cells(Rows.Count, 3).End(xlUp).Row

   'Monat zur Auswertung bestimmen
  Select Case Range("C2").Value
   Case Is = "Jänner"
     lngMonat = 1
   Case Is = "Februar"
     lngMonat = 2
   Case Is = "März"
     lngMonat = 3
   Case Is = "April"
     lngMonat = 4
   Case Is = "Mai"
     lngMonat = 5
   Case Is = "Juni"
     lngMonat = 5
   Case Is = "Juli"
     lngMonat = 6
   Case Is = "August"
     lngMonat = 8
   Case Is = "September"
     lngMonat = 9
   Case Is = "Oktober"
     lngMonat = 10
   Case Is = "November"
     lngMonat = 11
   Case Is = "Dezember"
     lngMonat = 12
  End Select
 
   'nun nach aktiven Mitarbeitern filtern
   With .Range(.Cells(20, 1), .Cells(lngLZeile, lngLSpalte))
    .AutoFilter Field:=4, Criteria1:="=aktiv"
   End With
     
   'Anzahl der gefilterten Datensätze ermitteln
   For lngZeile = 21 To lngLZeile
     If .Cells(lngZeile, 4).Value = "aktiv" Then lngAnzahl = lngAnzahl + 1
   Next lngZeile
   
   'Feld für Auswertung Redimensionieren
   ReDim arrMitarbeiter(lngAnzahl, 8)
 
   'nun gefilterte Zeilen durchlaufen und Daten in Feld einlesen
   For lngZeile = 21 To lngLZeile
    If .Rows(lngZeile).Hidden = False Then
      lngZaehler = lngZaehler + 1
      arrMitarbeiter(lngZaehler, 0) = .Cells(lngZeile, 2) 'Nummer des Mitarbeiters
      arrMitarbeiter(lngZaehler, 1) = .Cells(lngZeile, 3) 'Name des Mitarbeiters
      'Stunden des jeweiligen Monats suchen
      For lngSpalte = 5 To lngLSpalte
       If .Cells(20, lngSpalte) = Worksheets("Personalliste").Range("C2").Value Then
         arrMitarbeiter(lngZaehler, 2) = .Cells(lngZeile, lngSpalte) 'Arbeitsstunden im Monat
         Exit For
       End If
      Next lngSpalte
      'nun Feiertage, Urlaub und Krank des Monats zählen
      'dazu wieder alles Spalten durchlaufen
      'zuerst wird geprüft, ob in Zeile 3 ein Datum stehn
      For lngSpalte = 5 To lngLSpalte
        If IsDate(.Cells(3, lngSpalte)) = True Then
          'nun prüfen, ob Datum in dem gesuchten Monat liegt
          If Month(.Cells(3, lngSpalte)) = lngMonat Then
           'falls ja, dann prüfen, ob etwas in der betreffenden Spalte steht und entsprechenden Zähler erhöhen
            If .Cells(lngZeile, lngSpalte).Value = "FT" Then
                arrMitarbeiter(lngZaehler, 3) = arrMitarbeiter(lngZaehler, 3) + 1  'Feiertag
                arrMitarbeiter(lngZaehler, 6) = arrMitarbeiter(lngZaehler, 6) & Chr(10) & .Cells(3, lngSpalte) 'Datum des Feiertages
            End If
            If .Cells(lngZeile, lngSpalte).Value = "UR" Then
              arrMitarbeiter(lngZaehler, 4) = arrMitarbeiter(lngZaehler, 4) + 1  'Urlaub
              arrMitarbeiter(lngZaehler, 7) = arrMitarbeiter(lngZaehler, 7) & Chr(10) & .Cells(3, lngSpalte)
            End If
            If .Cells(lngZeile, lngSpalte).Value = "KH" Then
              arrMitarbeiter(lngZaehler, 5) = arrMitarbeiter(lngZaehler, 5) + 1  'Krank
              arrMitarbeiter(lngZaehler, 8) = arrMitarbeiter(lngZaehler, 8) & Chr(10) & .Cells(3, lngSpalte)
            End If
          End If
        End If
      Next lngSpalte
    End If
   Next lngZeile
   
    'Filter wieder aufheben
   With .Range(.Cells(20, 1), .Cells(lngLZeile, lngLSpalte))
    .AutoFilter
   End With
    
  End With
 
 'Nun Daten in Personalliste übertragen
 With Worksheets("Personalliste")
  For lngZeile = 1 To lngZaehler
   For lngSpalte = 0 To 5
     With .Cells(lngZeile + 6, lngSpalte + 1)
      .Value = arrMitarbeiter(lngZeile, lngSpalte)
      'Daten der Fehlzeiten als Kommentar einfügen
      If lngSpalte > 2 And arrMitarbeiter(lngZeile, lngSpalte + 3) <> "" Then
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=arrMitarbeiter(lngZeile, 1) & Chr(10) & Right(arrMitarbeiter(lngZeile, lngSpalte + 3), Len(arrMitarbeiter(lngZeile, lngSpalte + 3)) - 1) 'Daten als Kommentar ausgeben
        With .Comment.Shape.TextFrame
            .AutoSize = True
        End With
      End If
     End With
   Next lngSpalte
  Next lngZeile
 End With
 
'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True
'Meldungen wieder anzeigen
Application.EnableEvents = True

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von hakmatata Einsteiger_in (62 Punkte)

Grüß dich M.O.!

ICh habe mir gerade die letzten Codes angesehen und verglichen und michein wenig mit der Ausgabe probiert.
Das ist ja wirklich Easy hier etwas anzufügen. Darf ich fragen wie lange du das schon machst bzw. wie du dir dein Wissen angeeignet hast?
Ich bin noch drauf gekommen, dass wir die Stundenanzahl, die wir vom Ressourcenplan übernehmen für die Personalliste so nicht verwenden können, da ich in diesen lt. unserer Lohnverrechnerin die Krankheitstage nicht abziehen darf.
Das würde dann im konkreten Beispiel für MA13 im Jänner folgendes bedeuten:
Ist Stunden: 47,5h (Aus Ressourcenplan)
Soll: Die Stunden der Krankheitstage dürfen nicht abgezogen werden, sondern müssen in der Stundensumme inkludiert sein.
Ich habe es schon versucht mit der Formel NettoArbeitstage und einem Hilfsblatt zu lösen, aber absolut anstehen tu ich dann wenn es darum geht die Stundenanzahl für Montag-Donnerstag und Freitag korrekt aufzusummierne.
Am MO-DO sind es nämlich 8,5 h und am FR 8 Stunden.
Für MA 13 hieße dass dann
2.1. - 12. 1 Krank: 9 Tage (= 7 Tage mit 8,5h und 2 Tage mit 5h)
Das heißt die Stundenanzahl auf der PErsonalliste (Makro) sollte hier lauten:
47,5 + (8,5*7 + 5*2)= 117
Weißt du was ich meine??
O Mann....Dass wäre aber dann echt meine letzte Bitte um Hilfe!!
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

mit Excel arbeite ich schon seit mehr als 20 Jahren und mit der VBA-Programmierung beschäftige ich mich (glaube ich) seit gut 10 Jahren. Ich habe mir alles selbst beigebracht - learning by doing - und habe mir dazu viele Codes z.B. in diesem Forum angeschaut.

Zu deinem Arbeitstageproblem muss ich mir noch mal deine Beispieldatei anschauen. Aber ich denke auch hier gibt es eine Lösung.

Gruß

M.O.
...