Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Kalenderdaten automatisch übertragen





Frage

Hallo! Ich wüsste gerne, ob man das Datum bzw. den Tag automatisch zuweisen kann (incl. Feiertage), wenn man an einem Zentralen punkt nur den Monat eines Jahres angibt. Beispiel: Ich gebe Felder 1 und 2 vor! Feld1: Januar Feld2: 2007 Der Rest wird automatisch verteilt. Feld3: Montag Feld4: 01.01.2007 Feld5: Dienstag Feld6:02.01.2007 (...) bis Freitag, dann wieder Montag. Wäre nett, wenn jemand helfen könnte! Grüße Iowa

Antwort 1 von coros

Hi lowa,

mit nachfolgendem Makro, dass Du in ein StandardModul kopieren und dann über z.B. eine Befehlsschaltfläche starten solltest, sollte das was Du Dir vorgestellt hast, realisiert werden können.

Option Explicit

Sub Tage_auflisten()
Dim Datum As Date
Dim Monate As Integer
Dim Ergebnis_Datum As Integer
Dim Wert As Integer, RowStart As Integer, i As Integer
Dim Weekday As String
Rem: Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
Rem: Aus den Werten in Zelle A1 und A2 ein Datum erzeugen und in Variable "Datum" schreiben
Datum = CDate("01." & Range("A1") & "." & Year(Now))
Monate = 12
Rem: Anzahl an Kalendertagen für den Monat aus Zelle A1 ermitteln und in Variable "Ergebnis_Datum" schreiben
Ergebnis_Datum = Format(DateSerial(Year(Datum), Month(Datum) - (Monate - 1), 1) - 1, "dd")
Rem: Bereich A3:A48 für neue Anzeige löschen
Range("A3:A48").ClearContents
Rem: In Variable "RowStart" den Wert 3 abspeichern
RowStart = 3
Rem: Schleife zum Auflisten der Datumswerte und den Tagesnamen.
Rem: Anzahl der Schleifendurchläufe setzt sich aus der Differenz der Zahl 1
Rem: zu dem Wert aus Variable "Ergebnis_Datum" zusammen
For i = 1 To Ergebnis_Datum
Rem: Den Tagesnamen, der durch die Schleife erzeugt werden würde ermitteln und in Variable "Weekday" schreiben
Weekday = Format(CDate(i & "." & Range("A1") & "." & Year(Now)), "dddd")
Rem: Abfrage: Wenn Variable "Weekday" nicht den Wert "Samstag" oder "Sonntag" enthält...
If Weekday <> "Samstag" And Weekday <> "Sonntag" Then
Rem: ...in der Zeile, die durch den Wert aus Variable "RowStart" vorgegeben wird, den Tagesnamen ausgeben und...
Cells(RowStart, 1) = Format(CDate(i & "." & Range("A1") & "." & Year(Now)), "dddd")
Rem: ...eine Zeile darunter das Datum ausgeben und...
Cells(RowStart + 1, 1) = CDate(i & "." & Range("A1") & "." & Year(Now))
Rem: die Variable "RowStart" um die Zahl 1 erhöhen
RowStart = RowStart + 2
Rem: Abfrage Ende
End If
Rem: nächsten Schleifendurchlauf starten
Next
End Sub



Für dieses Makro muss in Zelle A1 der Monat und in Zelle A2 das Jahr eingetragen werden. Wenn es ausgeführt wird, ermittelt das Makro zu den Daten aus A1 und A2, ob der Monat 28, 29,30 oder 31 Tage hat. Mit diesen Wert werden dann die Tage ohne Samstage und Sonntage ab Zelle A3 aufgelistet.

Ich hoffe, Du meintest das so. Bei Fragen melde Dich bitte wieder.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von Saarbauer

Hallo,

versuch es mal damit

=WAHL(WOCHENTAG(A2);"Sonntag";"Montag";"Dienstag";"Mittwoch";"Donnerstag";"Freitag";"Samstag")

anstelle von A2 ist deine Zellbezeichnung einzusetzen

Gruß

Helmut

Antwort 3 von Iowa

Schönen Dank schonmal für die schnelle Hilfe. Kann das Makro zur Zeit noch nicht testen, melde mich aber sobald Probleme auftreten oder alles super klappt!

Besten Dank

Iowa

Antwort 4 von Iowa

Ok, vom Prinzip her funktioniert das Makro schon super! Allerdings habe ich leichte Probleme beim umschreiben bzw. hätte noch den einen oder anderen Verbesserungsvorschlag:

Was müsste ich ändern, wenn ich nicht zwei Variablen (Monat und Jahr) sondern ein direktes Datum eingebe.

Feld W1: 01.01.2007

Und spielt die Formatierung eine Rolle? Ich möchte das Datum nicht wie oben angezeigt bekommen sondern mit der Formatierung Jan 07 (MMM JJ)

Die Tage sollen auch als Mo., Di., ... Fr. und das Datum der Tage 01.01, 02.01, ... in den Spalten A12 B12 dann wieder A17 B17, A22 B22 usw angezeigt werden.

Wäre es möglich in der Spalte unter dem Datum ... also B13, B18, usw. anzuzeigen, ob der Tag ein Feiertag ist?

Danke nochmal für die tolle Hilfe!

Grüße Iowa

Antwort 5 von Iowa

@Saarbauer: Als Abfrage funktioniert das natürlich auch, aber ich hatte es schon so, wie in dem Makro gemeint! Vielen Dank trotzdem.

Iowa

Antwort 6 von coros

Hallo lowa,

sorry, aber was Du da schreibst, sind keine Verbesserungsvorschläge, sondern Änderungen zu Deiner Frage. Wobei ich nur einen Teil davon verstehe.

Zitat:
Was müsste ich ändern, wenn ich nicht zwei Variablen (Monat und Jahr) sondern ein direktes Datum eingebe.

Feld W1: 01.01.2007


Das habe ich noch verstanden. Aber bei

Zitat:
Und spielt die Formatierung eine Rolle? Ich möchte das Datum nicht wie oben angezeigt bekommen sondern mit der Formatierung Jan 07 (MMM JJ)


gehts los. Wo soll denn bitte das Format "mmm/jj" angewendet werden? In welchen Zellen soll denn nachher Jan/07 stehen? Musst du mal aufklären. Dann geht’s weiter mit

Zitat:
Die Tage sollen auch als Mo., Di., ... Fr. und das Datum der Tage 01.01, 02.01, ... in den Spalten A12 B12 dann wieder A17 B17, A22 B22 usw angezeigt werden.


Wie sollen denn 5 Werktage in die Zellen A12 und B12, dann A17 B17 usw. geschrieben/ aufgeteilt werden. Den Punkt musst Du wohl auch etwas besser erklären. Den Schluß mit

Zitat:
Wäre es möglich in der Spalte unter dem Datum ... also B13, B18, usw. anzuzeigen, ob der Tag ein Feiertag ist?


habe ich nur soweit verstanden, dass unterhalb einer Zelle angezeigt werden soll, wenn es sich um einen Feiertag handelt, aber das mit den Zellen B13 und B18 verhält sich genauso wie meine Frage vorher und muss näher erläutert werden.

Also Abschließend nochmal ein Hinweis: Eine genaue Beschreibung des Problems/ der Aufgabe bringt in der Regel ein vernünftiges Ergebnis. Bei solchen Beschreibungen wie aus Deiner Antwort 4 kommt eher Verwirrung und eine Menge Fragen auf.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von Aliba

Hi ,

habe den gewünschten Aufbau auch nicht so recht verstanden, da ja A12/B12 bis A17/B17 mit den Werktagen gefüllt sind, wo passt da noch der Feiertag darunter?
Diesen lasse ich jetzt mal in Spalte C schreiben.

Hier die Beispieldatei zum Downloaden:

[/url]http://www.netupload.de/detail.php?img=a7d68507cd0052796f5dfbf32e18c3fe.xls

CU Aliba

Antwort 8 von Iowa

Mhm, wollte Euch nicht verwirren ... und du hast natürlich recht ... es sind ein paar Änderungen ... also versuche ich es noch mal:

Punkt1:
In Feld W1 soll das Datum eingegeben werden in der Form:

01.02.2007

Angezeigt werden soll das Datum dann aber:

Feb 07

Das meinte ich mit "Formatierung". MMM JJ ist einfach eine Benutzerdefinierte Formatierung. Damit man schnell und übersichtlich direkt weiß auf welchen Monat sich der spätere Ausdruck bezieht. Steht halt oben auf dem Zettel drauf.

Punkt2:
Im Prinzip sollen 5 zeilen übersprungen werden, sprich in Zelle A12 steht der erste Montag (Schreibweise "Mo.") in B12 steht das dazugehörige Datum ("01.02.") und in B13 soll "Feiertag" stehen, wenn es denn einer ist.

Dann soll 5 Zeilen weiter (also A17 ... B17 ... C18) das gleiche mit dem nächsten Wochentag passieren. Ich habe 3 Freizeilen zwischen den Wochentagen um noch Platz für Kommentare zu haben + der Zeile für "Feiertag". Deshalb der 5-Zeilen-Sprung!

Zur Zeit habe ich für den Wochentag eine Dropdown-Liste, das Datum muss ich mit der hand eingeben und unter dem Datum kann ich in einer Dropdownliste zwischen Feiertag, und anderen Auswahlmöglichkeiten wählen. Wenn ich nur noch das Datum eingeben würde und die Liste sich dann automatisch mit den richtigen Werktagen und dem dazugehörigen Datum füllen könnte wäre das eine tolle Sache, die mich sonst sehr nervige Zeit kostet.

Das mit dem Feiertag ist vielleicht nicht so wichtig bzw. funktioniert vielleicht auch nicht richtig es sei denn, man kann trotzdem noch zwischen den anderen Auswahlmöglichkeiten wählen.

So, ich hoffe das war etwas verständlicher. Die neue Excel-Datei kann ich mir leider erst heute Abend ansehen.

Grüße Iowa