Microsoft Excel

Herbers Excel/VBA-Archiv

Kalender aus Tabelle erstellen

Betrifft: Kalender aus Tabelle erstellen von: falu
Geschrieben am: 12.08.2014 10:09:27

Hallo zusammen,

ich habe folgendes Problem in meiner beigefügten Exceldatei.
Ich habe mehr oder weniger einen "Einsatzplan" erstellt (Tabelle1), hier wird farblich und durch die jeweilige Kennzeichnung(A1,A2,B,C) eingetragen, wann der/diejenige an welcher Arbeit zugewiesen ist. Nun würde ich gerne in Tabelle2 daraus einen Kalender erstellen, in dem der jeweilige Name bei der jeweiligen Kennzeichnung automatisch eingetragen wird (Also anhand von A1,A2,B,C). Habe bereits einiges ausprobiert aber stehe scheinbar völlig auf dem Schlauch. Hat jemand eine Idee oder so etwas schon einmal gemacht? Vielen Dank im voraus!!

Anbei meine Datei
https://www.herber.de/bbs/user/92036.xlsx

  

Betrifft: nachgefragt ... von: neopa C (paneo)
Geschrieben am: 12.08.2014 11:32:37

Hallo,

... und warum hast Du je Personen zwei Zeilen? Eine wäre doch völlig ausreichend und dann wird die Auswertung auch wesentlich vereinfacht.


Gruß Werner
.. , - ...


  

Betrifft: AW: Kalender aus Tabelle erstellen von: Dieter Klemke
Geschrieben am: 12.08.2014 12:06:34

Hallo falu,

du kannst das mit dem folgenden VBA-Programm machen:

Sub Übertragen()
  Dim anfDatum As Date
  Dim datum As Date
  Dim i As Long
  Dim letzteSpalteQ As Long
  Dim letzteZeileQ As Long
  Dim mitarbeiter As String
  Dim spalteQ As Long
  Dim spalteZ As Long
  Dim tätigkeit(1 To 4) As String
  Dim wsQ As Worksheet ' Quelle
  Dim wsZ As Worksheet ' Ziel
  Dim zeileQ As Long
  Dim zeileZ As Long
  
  tätigkeit(1) = "A1"
  tätigkeit(2) = "A2"
  tätigkeit(3) = "B"
  tätigkeit(4) = "C"
  Set wsQ = ThisWorkbook.Worksheets("Tabelle1")
  Set wsZ = ThisWorkbook.Worksheets("Tabelle2")
  wsZ.Range(wsZ.Cells(4, "C"), _
            wsZ.Cells(wsZ.Rows.Count, "F")).ClearContents
  letzteZeileQ = wsQ.Cells(wsQ.Rows.Count, "A").End(xlUp).Row + 1
  letzteSpalteQ = wsQ.Cells(2, wsQ.Columns.Count).End(xlToLeft).Column
  anfDatum = wsQ.Range("C2")
  For zeileQ = 5 To letzteZeileQ Step 2
    mitarbeiter = wsQ.Cells(zeileQ - 1, "A")
    For spalteQ = 3 To letzteSpalteQ
      If Not IsEmpty(wsQ.Cells(zeileQ, spalteQ)) Then
        datum = wsQ.Cells(2, spalteQ)
        zeileZ = 4 + datum - anfDatum
        spalteZ = 0
        For i = 1 To 4
          If wsQ.Cells(zeileQ, spalteQ) = tätigkeit(i) Then
            spalteZ = 2 + i
            Exit For
          End If
        Next i
        If spalteZ <> 0 Then
          wsZ.Cells(zeileZ, spalteZ) = mitarbeiter
        End If
      End If
    Next spalteQ
  Next zeileQ
End Sub
Viele Grüße
Dieter


 

Beiträge aus den Excel-Beispielen zum Thema "Kalender aus Tabelle erstellen"