Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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
Tag aus Datum zuordnen
14.05.2014 20:16:56
Tim
Hallo zusammen,
in Excel kenne ich mich leider nicht gut aus und hoffe Ihr könnt mir weiterhelfen um auf eine Lösung zu kommen.
Und zwar soll Excel per Button aus einem Datum den Tag zuorden können.
im Anhang ist ein jpg bei dem ich es versucht hab zu erklären.
www.herber.de/bbs/user/90684.jpg
Um jede Hilfe bin ich dankbar.
Gruß
Tim

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tag aus Datum zuordnen
14.05.2014 20:57:30
Spenski
hi
wenn du das grössere datum minus das kleiner datum -1 (da du den kleinsten tag mitrechnen willst) rechnest gehts auch.
gruss

AW: Tag aus Datum zuordnen
14.05.2014 23:55:43
Hagen
Hallo Tim,
also habe ich das richtig verstanden, du willst im Grunde das Anfangsdatum und das Enddatum eintragen und dann sollen für die Monate dazwischen immer der letzte Tag dieses Monates eingetragen werden?
Wenn ja:

Sub Berechnen()
Dim Start As Date
Dim Ende As Date
Dim Monat As Long
Dim i As Long
Start = Me.Range("A2").Value
Ende = Me.Range("B2").Value
Select Case Year(Start)
Case "2013"
Me.Range("C" & 10 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("C" & 27 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("C" & 10 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("C" & 27 + Month(Ende)) = Day(Ende)
End Select
For i = 1 To Month(Ende - Start) - 1
If Month(Start) + i > 12 Then
Me.Range("C" & 27 + Month(Start) + i - 12) = Me.Range("B" & 27 + Month(Start) + i - 12)
Else
Me.Range("C" & 10 + Month(Start) + i) = Me.Range("B" & 10 + Month(Start) + i)
End If
Next i
End Sub
Bisschen statisch aber, wenn du nix an der Tabelle änderst sollte das hier funktionieren.
Gruß Hagen

Anzeige
AW: Tag aus Datum zuordnen
15.05.2014 00:07:20
Hagen
Sorry, die For-Schleife müsste:

For i = 1 To DateDiff("m", Start, Ende)

heißen. Dachte das geht auch so grad gemerkt, dass es nicht so geht. Es ist spät und ich mach des nebenher.
Gruß Hagen

AW: Tag aus Datum zuordnen
15.05.2014 19:45:19
Tim
Hallo Hagen,
perfekt, ich dank Dir. Genau so hab ich es mir vorgestellt.
Habe noch eine Kleinigkeit dazu.
Es werden noch nicht alle Tage zwischen dem Zeitraum gefüllt. Nur einer.
Siehe Anhang
www.herber.de/bbs/user/90698.jpg
Kannst mir da noch weiterhelfen...
Gruß
Tim

AW: Tag aus Datum zuordnen
15.05.2014 21:47:41
Hagen
Hallo Tim,
Ließ doch bitte mal meinen zweiten Beitrag.
Um es nochmal zu schreiben:
Ersetz die For Schleife mit:
For i = 1 To DateDiff("m", Start, Ende)
Dann klappt das auch dachte es geht auch mit Monat(Ende - Start) aber er rechnet des im wie ichs mir gedacht hab dass er die von einander abzeiht und dann die Monate ausgibt sonden Nimmt Monat(Ende) - Monat(Start) und da kommt murks raus.
Gruß Hagen

Anzeige
AW: Tag aus Datum zuordnen
19.05.2014 17:38:43
Tim
Hallo Hagen,
ich hab noch kurz ein paar Dinge:
1. zu dein For Schleife. Ich hatte es schon von Anfang an mit der "For i = 1 To DateDiff("m", Start, Ende)". Nur die Excel Datei war ohne Makro abgespeichert. Aber jetzt klappt es, mein Fehler ;)
2. mir ist noch etwas eingefallen wie man die Datei ein wenig ausbauen könnte. Siehe Anhang.
www.herber.de/bbs/user/90741.jpg
Ich hoffe du kannst mir auch da weiterhelfen..
Gruß
Tim

AW: Tag aus Datum zuordnen
21.05.2014 10:08:48
Hagen
Hallo Tim,
also wenn du noch mehr Daten eingeben willst dann kannst du das in dem du einfach den ersten Code nimmst und ihn mit einem anderen Start und Stop nimmst. Aber weis um ehrlich zu sein nicht was du damit erreichen willst, da würde das zweite Datum das erste ja immer überschreiben, wenn die Zeitspannen sich überschneiden.
Zu dem Thema mit der Zeitspanne bis Halbjahr und Volljahr, sollte das hier funktionieren:

Dim Datum As Date
Dim VarDatum As Date
Datum = WorksheetFunction.Max _
(Me.Range("A2").Value, Me.Range("B2").Value, _
Me.Range("A4").Value, Me.Range("B4").Value)
Datum = "01." & Month(Datum) & "." & Year(Datum)
Me.Range("A8").Value = Datum
VarDatum = "30.06." & Year(Datum)
If Datum 
Hoffe das hilft.
Gruß Hagen

Anzeige
AW: Tag aus Datum zuordnen
21.05.2014 16:35:24
Tim
Hallo Hagen,
Weltklasse, danke schonmal für Deine Mühe.
Ich hoffe ich nerve nicht, habe noch ein paar Sachen dazu.
1. Beim berechnen zieht er immer beim letzten Monat die gesamte Anzahl an Tagen des Monats.
Es sollten aber nur die tats. Tage eingefügt werden.
Siehe Bild.
https://www.herber.de/bbs/user/90775.jpg
2. Hat man mehrere Datums-Angaben gibt es auch noch Probleme mit dem einfügen.
Siehe Bild.
https://www.herber.de/bbs/user/90776.jpg
3. Bei der Monatshochrechnung nimmt er immer den Anfang des jetzigen Monats statt dem nächsten Monat.
Siehe Bild.
https://www.herber.de/bbs/user/90777.jpg
4. Tage die sich überschneiden.
Siehe Bild.
https://www.herber.de/bbs/user/90778.jpg
Hier mal noch der aktuelle Code:
Private Sub CommandButton1_Click()
Dim Start As Date
Dim Ende As Date
Dim Monat As Long
Dim i As Long
Start = Me.Range("A2").Value
Ende = Me.Range("B2").Value
Select Case Year(Start)
Case "2013"
Me.Range("C" & 14 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("C" & 32 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("C" & 14 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("C" & 32 + Month(Ende)) = Day(Ende)
End Select
Start = Me.Range("A4").Value
Ende = Me.Range("B4").Value
Select Case Year(Start)
Case "2013"
Me.Range("C" & 14 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("C" & 32 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("C" & 14 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("C" & 32 + Month(Ende)) = Day(Ende)
End Select
For i = 1 To DateDiff("m", Start, Ende)
If Month(Start) + i > 12 Then
Me.Range("C" & 32 + Month(Start) + i - 12) = Me.Range("B" & 32 + Month(Start) + i -  _
12)
Else
Me.Range("C" & 14 + Month(Start) + i) = Me.Range("B" & 14 + Month(Start) + i)
End If
Next i
Dim Datum As Date
Dim VarDatum As Date
Datum = WorksheetFunction.Max _
(Me.Range("A2").Value, Me.Range("B2").Value, _
Me.Range("A4").Value, Me.Range("B4").Value)
Datum = "01." & Month(Datum) & "." & Year(Datum)
Me.Range("A8").Value = Datum
VarDatum = "30.06." & Year(Datum)
If Datum 

Ich dank Dir schonmal für Deine Hilfe.
Gruß
Tim

Anzeige
AW: Tag aus Datum zuordnen
21.05.2014 18:24:49
Hagen
Hallo Tim,
Ja du hast da einen kleinen Fehler gemacht, und zwar musst du natürlich auch die For-Schleife verdoppeln, die ist ja für das auffüllen dazwischen zuständig. So füllst du nur für den zweiten Zeitraum auf. Ja mir ist auch aufgefalllen, dass natürlich die For-Schleife immer eins zu weit läuft, also kommt da einfach immer - 1 dahinter dann funktioniert das. Zum Thema nächste Monat anstatt aktuellem, da muss natürlich in das Datum einmal + 1. Sieht dann so aus, auch gleich mit zweites datum wird in nächster Spalte eingesetzt (Spalte D). Vergiss nicht dass hier viele Informationen direkt ins Makro programmiert wurden heißt das Ganze ist etwas statisch und bei kleinen Änderungen im Blatt kann das Ding schon abstürzen. Geh das Programm mal schrittweise durch und mach dir klar, was es eigentlich macht dann kannst du Fehler vermeiden mit F8-Taste kannst du schrittweise das Programm rechnen lassen.
Private Sub CommandButton1_Click()
Dim Start As Date
Dim Ende As Date
Dim Monat As Long
Dim i As Long
Start = Me.Range("A2").Value
Ende = Me.Range("B2").Value
Select Case Year(Start)
Case "2013"
Me.Range("C" & 14 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("C" & 32 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("C" & 14 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("C" & 32 + Month(Ende)) = Day(Ende)
End Select
For i = 1 To DateDiff("m", Start, Ende) - 1
If Month(Start) + i > 12 Then
Me.Range("C" & 32 + Month(Start) + i - 12) = _
Me.Range("B" & 32 + Month(Start) + i - 12)
Else
Me.Range("C" & 14 + Month(Start) + i) = Me.Range("B" & 14 + Month(Start) + i)
End If
Next i
Start = Me.Range("A4").Value
Ende = Me.Range("B4").Value
Select Case Year(Start)
Case "2013"
Me.Range("D" & 14 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("D" & 32 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("D" & 14 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("D" & 32 + Month(Ende)) = Day(Ende)
End Select
For i = 1 To DateDiff("m", Start, Ende) - 1
If Month(Start) + i > 12 Then
Me.Range("D" & 32 + Month(Start) + i - 12) = _
Me.Range("B" & 32 + Month(Start) + i - 12)
Else
Me.Range("D" & 14 + Month(Start) + i) = Me.Range("B" & 14 + Month(Start) + i)
End If
Next i
Dim Datum As Date
Dim VarDatum As Date
Datum = WorksheetFunction.Max _
(Me.Range("A2").Value, Me.Range("B2").Value, _
Me.Range("A4").Value, Me.Range("B4").Value)
Datum = "01." & Month(Datum) + 1 & "." & Year(Datum)
Me.Range("A8").Value = Datum
VarDatum = "30.06." & Year(Datum)
If Datum 
Gruß Hagen
P.S.: Dir diese Nachricht zu schrieben, hat länger gedauert als den Code zu korrigieren, also mach dir da mal keine Sorgen.
P.P.S.: 10 Minuten Programmiern bedeuten 50 Minuten Fehlersuche (übertrieben gesagt)

Anzeige
AW: Tag aus Datum zuordnen
27.05.2014 19:32:38
Tim
Hallo Hagen,
Tausend Dank, klappt wunderbar.
Kann ich dich öfters nach etwas fragen, wenn ich solche Sachen habe und nicht weiterkomme?
Danke und Gruß
Tim

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige