Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

aus daten im excel einen semesterkalender füllen

aus daten im excel einen semesterkalender füllen
08.07.2016 13:33:11
brugger
Hallo allerseits,
ich versuche gerade, eine "Tabelle" automatisch auszufüllen.
Die Eingangsdaten habe ich im File hochgeladen. https://www.herber.de/bbs/user/106862.xlsx
Es geht darum, daraus eine Tabelle zu generieren, die in den Spalten die fortlaufenden Semester enthält (Beispiel: 01.08.2016-31.01.2017), und in den Zeilen die jeweiligen Teams (Beispiel: MN1). In den Zellen sollen Vorname und Name der Leute erscheinen, die laut Datum aus den Spalten E und F und Einteilung Spalten I bis N dann in dem Team sind.
Je nach "Art" ist die Vorbereitungszeit sowie die Zeit zwischen Beginn und Ende anders, das könnte man dann auch noch hinterlegen.
Ich hoffe, ich konnte es einigermassen klar erklären.
Ich bin um jeden Ansatz froh und bemühe mich auch, dazuzulernen :)
Schönen Tag!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aus daten im excel einen semesterkalender füllen
10.07.2016 14:53:22
fcs
Hallo Brugger,
das war eine Fleißarbeit um all die Rabdbedingungen sauber zu prüfen.
Ich hoffe das Ergebnis überzeugt.
Gruß
Franz
Sub Semesterplan()
Dim wksQuelle As Worksheet
Dim wksPlan As Worksheet
Dim ZeiQ As Long, ZeiQ1 As Long, ZeiQL
Dim ZeiP As Long
Dim SpaP As Long
Dim datStart As Date, datEnde As Date
Dim AnzSem As Integer
Dim colTeam As New Collection, strTeam As String
Dim rngZelle As Range
Dim varArt, strName As String, strVName As String, varSemester As Variant, intSem As  _
Integer
On Error GoTo Fehler
Set wksQuelle = ActiveSheet 'oder Set wksQ = WOrksheets("Tabelle1")
Set wksPlan = ActiveWorkbook.Worksheets.Add(After:=wksQuelle)
With wksQuelle
ZeiQ1 = 2
ZeiQL = .Cells(.Rows.Count, 1).End(xlUp).Row
'Semester-Daten erfassen
datStart = Application.WorksheetFunction.Min(.Range(.Cells(ZeiQ1, 3), .Cells(ZeiQL, 6))) _
datEnde = Application.WorksheetFunction.Max(.Range(.Cells(ZeiQ1, 3), .Cells(ZeiQL, 6)))
AnzSem = (Year(datEnde) - Year(datStart)) * 2
'Namen der Teams erfassen ohne doppelte
For Each rngZelle In .Range(.Cells(ZeiQ1, 9), .Cells(ZeiQL, 14)).Cells
strTeam = rngZelle.Text
If Not (strTeam = "-" Or strTeam = "") Then
colTeam.Add strTeam, strTeam
End If
Next rngZelle
'Namen der Vorbereitungen ("Vorbereitung " & Art) als Team erfassen
For Each rngZelle In .Range(.Cells(ZeiQ1, 2), .Cells(ZeiQL, 2)).Cells
If IsDate(rngZelle.Offset(0, 1)) Then
strTeam = "Vorbereitung " & rngZelle.Text
colTeam.Add strTeam, strTeam
End If
Next rngZelle
End With
With wksPlan
.Cells.VerticalAlignment = xlTop
.Cells.WrapText = True
'Spalten und Zeilentitel eintragen
.Cells(1, 1) = "Semester"
.Cells(1, 2) = "Begin"
.Cells(2, 1) = "Team"
.Cells(2, 2) = "Ende"
'Fenster fixieren
.Range("C3").Select
ActiveWindow.FreezePanes = True
'Team-Namen eintragen und sortieren
For ZeiP = 1 To colTeam.Count
.Cells(ZeiP + 2, 1) = colTeam(ZeiP)
Next
With .Range(.Cells(3, 1), .Cells(colTeam.Count + 2, 1))
.Sort key1:=.Range("A1"), order1:=xlAscending, Header:=xlNo
End With
'Semster-Begin/Ende eintragen bzw. berechnen
.Cells(1, 3) = datStart
.Range(.Cells(1, 4), .Cells(1, 3 + AnzSem - 1)).FormulaR1C1 = _
"=DATE(YEAR(RC[-1]),MONTH(RC[-1])+6,1)"
.Range(.Cells(2, 3), .Cells(2, 3 + AnzSem - 1)).FormulaR1C1 = _
"=DATE(YEAR(R[-1]C),MONTH(R[-1]C)+6,0)"
With .Range(.Cells(1, 3), .Cells(2, 3 + AnzSem - 1))
.Value = .Value
End With
.Columns(1).ColumnWidth = 14
.Range(.Cells(1, 3), .Cells(2, 3 + AnzSem - 1)).EntireColumn.ColumnWidth = 50
End With
With wksQuelle
'Namen abarbeiten
For ZeiQ = ZeiQ1 To ZeiQL
varArt = .Cells(ZeiQ, 2).Text
strName = .Cells(ZeiQ, 8).Text: strVName = .Cells(ZeiQ, 7).Text
varSemester = .Range(.Cells(ZeiQ, 9), .Cells(ZeiQ, 14))
'Prüfen ob es einen Vorbereitungszeitraum gibt
If IsDate(.Cells(ZeiQ, 3)) Then
strTeam = "Vorbereitung " & varArt
datStart = .Cells(ZeiQ, 3)
datEnde = .Cells(ZeiQ, 4)
AnzSem = (Year(datEnde) - Year(datStart)) * 2
'Zeile mit Team
ZeiP = Application.Match(strTeam, wksPlan.Range("A:A"), 0)
'Spalte mit Semester-Beginn
SpaP = fncSpa(wks:=wksPlan, Zeile:=1, varWert:=datStart)
Do
With wksPlan.Cells(ZeiP, SpaP)
If .Text = "" Then
.Value = strName & ", " & strVName
Else
.Value = .Text & Chr(10) & strName & ", " & strVName
End If
End With
AnzSem = AnzSem - 1
SpaP = SpaP + 1
Loop Until AnzSem = 0
End If
datStart = .Cells(ZeiQ, 5)
datEnde = .Cells(ZeiQ, 6)
AnzSem = (Year(datEnde) - Year(datStart)) * 2
'Spalte mit Beginn 1. Semester
SpaP = fncSpa(wks:=wksPlan, Zeile:=1, varWert:=datStart)
For intSem = 1 To UBound(varSemester, 2)
strTeam = varSemester(1, intSem)
If Not (strTeam = "-" Or strTeam = "") Then
'Zeile mit Team
ZeiP = Application.Match(strTeam, wksPlan.Range("A:A"), 0)
With wksPlan.Cells(ZeiP, SpaP + intSem - 1)
If .Text = "" Then
.Value = strName & ", " & strVName & " (" & varArt & ")"
Else
.Value = .Text & Chr(10) & strName & ", " & strVName & " (" &  _
varArt & ")"
End If
End With
End If
AnzSem = AnzSem - 1
If AnzSem = 0 Then Exit For
Next intSem
Next ZeiQ
End With
With wksPlan
With .Range(.Rows(2), .Rows(.Cells(.Rows.Count, 1).End(xlUp).Row))
.EntireColumn.AutoFit
.AutoFit
End With
End With
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 457 'doppelter Collection-Eintrag
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub
Function fncSpa(wks As Worksheet, Zeile As Long, varWert) As Long
Dim Spalte As Long
With wks
For Spalte = 1 To .Cells(Zeile, .Columns.Count).End(xlToLeft).Column
If .Cells(Zeile, Spalte).Value = varWert Then
fncSpa = Spalte
End If
Next
End With
End Function

Anzeige
AW: aus daten im excel semesterkalender füllen
11.07.2016 09:13:03
brugger
Hallo Franz,
das Ergebnis überzeugt sehr, erst mal herzlichen Dank für deine Arbeit!! :)
Noch eine Frage: Bei mir werden in der Tabelle alle Personen richtig angezeigt, ausser "Bea Nast", die nur in den ersten zwei Semestern im Team UV5 angezeigt wird, danach aber nicht mehr aufgeführt wird. Woher kommt das?
Nochmals danke und dir einen schönen Tag!

AW: aus daten im excel semesterkalender füllen
11.07.2016 13:28:55
brugger
Nochmals ich...
Ich habe nun die Spalten C bis F mithilfe von Excel-Formeln (Verweise auf die Spalten A, B und einer Hilfstabelle) generiert.
Nun funktioniert die Makro nicht mehr. Ich denke, es liegt daran, dass die Werte in den automatisch ausgefüllten Zellen der Spalten C bis F nicht dasselbe Format haben wie als sie noch "von Hand" ausgefüllt worden waren. Doch ich weiss nicht, wie ich das lösen kann.
Kennt sich da jemand aus? Danke :)

Anzeige
AW: aus daten im excel semesterkalender füllen
11.07.2016 20:36:45
fcs
Hallo Brugger,
Problem 1: Name Bea Nast nur 2 Semester im Team UV5.
Das Makro prüft aus basis von Beginndatum und Enddatum auch die Anzahl der Semester
Bei Bea Nast ergeben sich aus Beginn 01.08.2014 und Ende 31.07.2015 nur 2 Semester
Problem 2: Datumswerte aus Hilfstabelle und Verwendung von Formeln mit SVERWEIS.
Evtl. stehen die Datumswerte in der Hilfstabele als Textwerte nicht als Datumswerte, dan holt SVERWEIS ggf. die Werte auch als Text und Funktionen im Makro funktionieren nich mehr korrekt.
Ausweg 1: Umwandlung der Text-Datumswerte in echte Exceldatumswerte in der Hilfstabelle.
Ausweg 2: Verwende in den Formeln mit SVERWEIS zusätzlich die Funktion DATWERT
=WENNFEHLER(DATWERT(SVERWEIS(Suchwert;Bereich;Spalte;FALSCH));"-")
Gruß
Franz

Anzeige
AW: aus daten im excel semesterkalender füllen
13.07.2016 08:57:56
brugger
Hallo Franz,
Problem 1: das also keines ist: mein Fehler, sorry...
Problem 2: Ausweg 2 ist in dem Fall am Besten, funktioniert tadellos!
Nochmals vielen, vielen Dank und dir noch eine schönen Tag!
Gruss

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige