Ich möchte 2 Daten von Blatt 1 nehmen und diesen Datumsbereich in Blatt 2 in Monaten und Jahren generieren. Ich habe einen Code, der das tut, aber ich stoße auf ein paar Probleme, die ich später erklären werde. This is what my code does (unter der Annahme, dass die 2 Daten in Blatt 1 Okt-17 und März-18 im MM-YY-Format sind).Wie man dieselben Jahre zusammenfasst
Meine Hauptfrage ist, wie bekomme ich die gleichen Jahre zusammen zu verschmelzen? I want it to look like this.
Das erste Problem, auf das ich stoße, ist, dass ich das Makro zweimal ausführen muss, um das Jahr-Format zu ändern. Was kann ich tun, um das zu beheben?
Das zweite Problem ist, dass einige der Monate nicht korrekt angezeigt werden und stattdessen "########" wie im ersten Bild gezeigt angezeigt werden. Ich merke das passiert nur mit benutzerdefinierten Datumsformaten. Warum passiert das und wie kann ich das beheben?
Ich würde wirklich jede Hilfe schätzen, die ich bekommen kann. Im Folgenden ist mein Code
Sub macro3Planning()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
Dim rng As Range
Set rng = ws2.Range("B3").Offset(3, 8)
Dim StartDate As Date
Dim EndDate As Date
Dim NoDays As Integer
StartDate = ws1.Range("D6").Value
EndDate = ws1.Range("D7").Value
NoDays = EndDate - StartDate + 1
'Generates months
With rng
.Value = StartDate
.Resize(NoDays).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:= _
xlMonth, Step:=1, Stop:=EndDate, Trend:=False
.VerticalAlignment = xlTop
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Borders.LineStyle = xlContinuous
.NumberFormat = "mmm"
.Interior.Pattern = xlSolid
.Interior.ThemeColor = xlThemeColorDark1
.Interior.TintAndShade = -0.149998474074526
End With
Set rng = rng.Offset(-1)
'Generates year
With rng
.Value = StartDate
.Resize(NoDays).DataSeries Rowcol:=xlRows, Type:=xlChronological, Date:= _
xlMonth, Step:=1, Stop:=EndDate, Trend:=False
.VerticalAlignment = xlTop
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Borders.LineStyle = xlContinuous
.NumberFormat = "yyyy"
.Interior.Pattern = xlSolid
.Interior.ThemeColor = xlThemeColorAccent2
.Interior.TintAndShade = 0.599993896298105
End With
End Sub
UPDATE
3. Dies geschieht, weil die Spalte nicht breit genug ist. Ich habe das Format von "mmmm" in "mmm" geändert, so dass die resultierenden Monate immer kurz genug sind, um in die Spalte zu passen. Danke @ClementB und @PalimPalim!
1. Ich habe es geschafft, einen Code zu bekommen und zu modifizieren, um die Zellen mit passenden Inhalten aus How to merge cells based on similar values - Excel 2010 zusammenzuführen. Alles, was ich brauche, ist, die Jahre ab dem Datum zu extrahieren, da ich die Jahre als Datum dimed, also sind die tatsächlichen Werte hinter diesen 2017er Jahren und 2018s 01.10.2017, 01.11.2017 und so weiter. Daher kann ich das Merge-ähnliche Zellen-Makro noch nicht verwenden.
Ich denke DatePart ("yyyy") mit einer Schleife für all die Jahre zu verwenden, aber ich bin mir nicht sicher, wie ich noch neu bin, um VBA zu übertreffen. Bitte helfen.
1) Sie müssen nur die Jahre damit verschmelzen: Bereich ("J5: L5"). Zusammenführen. Um zu wissen, dass Sie bei L5 anhalten müssen, müssen Sie vorher mit einer einfachen Schleife iterieren. 2) Verwenden CDate (Format (target.Value, "TT/MM/JJJJ")) 3) Ich bin ziemlich sicher, es ist, weil die Spalten nicht groß genug sind –
Ihr zweites Problem passiert, weil die Spalte nicht breit genug ist. Wenn Sie beispielsweise die Breite der Spalte K ändern, sollte das Datum deutlich sichtbar sein. – PalimPalim
Ziemlich genau die gleiche Frage wurde früher heute hier gefragt. https://stackoverflow.com/questions/44387798/excel-vba-merging-a-range-inside-a-loop –