![]() |
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 SubViele Grüße
![]() |