Befüllen von leeren Zellen
#1
Hallo zusammen,
ich habe eine Tabelle in der nach Eintragung von Start- und Enddatum Zellen befüllt werden sollen. Dabei soll ein Forecast für das aktuelle Geschäftsjahr erstellt werden. Nach Eintragung der Datumswerte soll identifiziert werden, inwiefern der Zeitraum in dem Geschäftsjahr (Okt. 2018 - Sept. 2019) liegt. Mir ist es soweit gelungen, den Anfang und das Ende des Zeitraums zu identifizieren, jedoch gelingt es mir nicht die dazwischen befindlichen Zellen zu füllen.

ich hänge mal ein Bild zur Verdeutlichung des Problems an.

Ich habe auch schon versucht mit einer For Each-Schleife und mit Offset die leeren Felder zu identifizieren und füllen, jedoch habe ich dabei noch einen Denkfehler, sodass ab der ersten ausgefüllten Zelle die komplette Zeile bis Spalte 23 bzw. W ausgefüllt wird.

Danke für eure Hilfe!

Code:
Sub Forecast()

Dim startMonat As Long
Dim startJahr As Long
Dim endMonat As Long
Dim endJahr As Long
Dim startDatum As Date
Dim endDatum As Date
Dim Zeile As Long
Dim ZeileMax As Long
Dim rngZelle As Range

ZeileMax = Worksheets("GJ_18_19").Cells(Rows.Count, 2).End(xlUp).Row

For Zeile = 7 To ZeileMax

startDatum = Cells(Zeile, 6)
endDatum = Cells(Zeile, 7)

startMonat = Month(startDatum)
startJahr = Year(startDatum)
endMonat = Month(endDatum)
endJahr = Year(endDatum)

If startMonat < 10 And startJahr = 2018 Then Cells(Zeile, 12) = Cells(Zeile, 11) / 35

If startMonat = 10 And startJahr = 2018 Then Cells(Zeile, 12) = Cells(Zeile, 11) / 35
If startMonat = 11 And startJahr = 2018 Then Cells(Zeile, 13) = Cells(Zeile, 11) / 35
If startMonat = 12 And startJahr = 2018 Then Cells(Zeile, 14) = Cells(Zeile, 11) / 35
If startMonat = 1 And startJahr = 2019 Then Cells(Zeile, 15) = Cells(Zeile, 11) / 35
If startMonat = 2 And startJahr = 2019 Then Cells(Zeile, 16) = Cells(Zeile, 11) / 35
If startMonat = 3 And startJahr = 2019 Then Cells(Zeile, 17) = Cells(Zeile, 11) / 35
If startMonat = 4 And startJahr = 2019 Then Cells(Zeile, 18) = Cells(Zeile, 11) / 35
If startMonat = 5 And startJahr = 2019 Then Cells(Zeile, 19) = Cells(Zeile, 11) / 35
If startMonat = 6 And startJahr = 2019 Then Cells(Zeile, 20) = Cells(Zeile, 11) / 35
If startMonat = 7 And startJahr = 2019 Then Cells(Zeile, 21) = Cells(Zeile, 11) / 35
If startMonat = 8 And startJahr = 2019 Then Cells(Zeile, 22) = Cells(Zeile, 11) / 35
If startMonat = 9 And startJahr = 2019 Then Cells(Zeile, 23) = Cells(Zeile, 11) / 35

If endMonat > 9 And endJahr = 2019 Then Cells(Zeile, 23) = Cells(Zeile, 11) / 35

If endMonat = 10 And endJahr = 2018 Then Cells(Zeile, 12) = Cells(Zeile, 11) / 35
If endMonat = 11 And endJahr = 2018 Then Cells(Zeile, 13) = Cells(Zeile, 11) / 35
If endMonat = 12 And endJahr = 2018 Then Cells(Zeile, 14) = Cells(Zeile, 11) / 35
If endMonat = 1 And endJahr = 2019 Then Cells(Zeile, 15) = Cells(Zeile, 11) / 35
If endMonat = 2 And endJahr = 2019 Then Cells(Zeile, 16) = Cells(Zeile, 11) / 35
If endMonat = 3 And endJahr = 2019 Then Cells(Zeile, 17) = Cells(Zeile, 11) / 35
If endMonat = 4 And endJahr = 2019 Then Cells(Zeile, 18) = Cells(Zeile, 11) / 35
If endMonat = 5 And endJahr = 2019 Then Cells(Zeile, 19) = Cells(Zeile, 11) / 35
If endMonat = 6 And endJahr = 2019 Then Cells(Zeile, 20) = Cells(Zeile, 11) / 35
If endMonat = 7 And endJahr = 2019 Then Cells(Zeile, 21) = Cells(Zeile, 11) / 35
If endMonat = 8 And endJahr = 2019 Then Cells(Zeile, 22) = Cells(Zeile, 11) / 35
If endMonat = 9 And endJahr = 2019 Then Cells(Zeile, 23) = Cells(Zeile, 11) / 35

'For Each rngZelle In Range("L" & Zeile & ":W" & ZeileMax)
'    If rngZelle <> "" And rngZelle.Offset(0, 1) = "" Then
'        rngZelle.Offset(0, 1) = rngZelle
'    End If
'Next rngZelle
   
Next Zeile

End Sub
Top
#2
Zitat:ich hänge mal ein Bild zur Verdeutlichung des Problems an.
Da ist kein Bild. Aber erspar bitte dir und uns die Mühe eines Bildes und hänge eine anonymisierte Beispielmappe an, das hilft wesentlich mehr.

Und wieso arbeitest du nicht einfach mit Formeln?
Schöne Grüße
Berni
Top
#3
Hier eine Beispielmappe.

Es muss nicht unbedingt VBA sein, jedoch habe ich bisher die anderen Funktionen auch über VBA gemacht, welche soweit gut funktioniert haben.
Gerne kann es auch eine Lösung mit Formeln sein!
Top
#4
Tja, ich kann nach wie vor keine Datei sehen.
Schöne Grüße
Berni
Top
#5
Hallo Jonas,

Zitat:Da ist kein Bild. Aber erspar bitte dir und uns die Mühe eines Bildes und hänge eine anonymisierte Beispielmappe an, das hilft wesentlich mehr.

... ich schließe mich diesen Ausführungen meines Vorredners an.
Top
#6
Oh Entschuldigung, ich hatte vergessen "Attachment hinzufügen" zu klicken. Nun müsste die Datei hochgeladen sein.


Angehängte Dateien
.xlsx   Beispielmappe.xlsx (Größe: 10,17 KB / Downloads: 11)
Top
#7
Grundsätzlich würde ich mit dieser Formel arbeiten:

Code:
=WENN(ODER(MONAT($F7)=MONAT(H$6);MONAT($G7)=MONAT(H$6));$K7/35;"")
Wobei zB in F7 das Startdatum und in H6 der Monat steht. Schreibe dazu nicht "Okt. 18" sondern 01.10.2018 und formatiere es einfach so, dass es als Okt. 18 angezeigt wird.
Schöne Grüße
Berni
Top
#8
Vielen Dank schon mal für die Formel, habe deinen Vorschlag umgesetzt! Wie bekomme ich jedoch hierbei die "Zwischenräume" gefüllt. Sprich der MA ist von Jan 19 bis April 19 angestellt, dann wird in der Tabelle der Zellenwert in Spalte Jan 19 und April 19 ausgefüllt, die Zellen für Feb 19 und März 19 bleiben hierbei ja leer.

Hintergrund ist der, dass ich die Zellenwerte addieren und mit einem Stundensatz multiplizieren will für die Gesamkosten. Sprich wenn der MA 4 Monate in dem Geschäftsjahr angestellt ist, sollen auch 4 Zellen ausgefüllt werden.
Top
#9
So?
Code:
=WENN(ODER(UND(MONAT($F7)<=MONAT(H$6);JAHR($F7)=JAHR(H$6));UND(MONAT($G7)>=MONAT(H$6);JAHR($G7)=JAHR(H$6)));$K7/35;"")
Schöne Grüße
Berni
Top
#10
Hallo Jonas.

Hier wäre ein etwas anderer Ansatz.

Ich habe in Deinem Beispiel eine leere Oktober '19 Spalte P angefügt und dort diese Formel eingebaut:

WENN(UND(O5>0;DATUM(JAHR(P$3);MONAT(P$3);1)<=$C5);O5;"")

Erst ziehst Du diese in Spalte P über alle Zeilen nach unten. Und dann innerhalb jeder Zeile bis zu der ersten zu füllenden Zelle nach links. Die Zelle mit dem Anfangswert darfst Du aber nicht überschreiben. 

So werden Zeilen-weise alle Zwischenräume aufgefüllt. 

Ein Beispiel im Anhang. Dort habe ich das bis Zeile 11 ausgeführt. 

Ich hoffe es hilft.

LG Peter


Angehängte Dateien
.xlsx   111 Forum 2018.10.08 Zellen zwischendurch füllen.xlx.xlsx (Größe: 11,94 KB / Downloads: 1)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste