Bräuchte Hilfe bei automatischer Spaltenverschiebung
#1
Wink 
Hallo Leute


Ich bräuchte mal euer wissen und hoffe das ihr mir helfen könnt . Und zwar geht es um die Zellspalten B12/B32 bis J12/J32 .

In der Zeile 12 hasbe ich die Kw Wochen die sich jede Woche um ein Spalte nach links verschieben . Zu mein Problem wie kann ich es fertig bringen das der Zellinhalt darunter sich mit verschiebt ? Also das also was diese Woche F12-F32 , die andere Woche dann E12 - E32 ist ja und so weiter .
Im Anhang könnt ihr es euch anschauen
Hat da einer einer Idee ? Ich bin da mit Excel und schon garnicht mit VBA gut bewandert . Huh

Ich bedanke mich schonmal tausendfach

Beste Grüße
Jörg


.xlsx   Beta Version.xlsx (Größe: 18,25 KB / Downloads: 10)
Antworten Top
#2
Das kannst du prima mit dem Makrorekorder aufzeichnen! Aktiviere den Makrorekorder und füge die Zellen die du brauchst ein und schreibe oben dann deine "KW- Formel" wieder rein ! Danach legst du das Makro auf einen Button! Fertig
Antworten Top
#3
Hallo Jörg

Frogger hat eine schöne Idee.  Ich frage mich aber wie das gehen soll???

Ich sehe im Beispiel das es noch Daten in den Spalten O bis W gibt.  Feiertage und Hilfsspalten von Zeile 2 bis 17 !!
Wenn du ab Zeie 12 alles verschiebst zerstörst du unweigerlich einen Teil von diesem Bereich.  Das klappt m.E. so nicht!!  

mfg  Gast 123
Antworten Top
#4
Hallo Jörg,

ich behaupte mal, dass das nur per VBA geht. Mein Vorschlag wäre folgendes:
Füge in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes folgenden Code ein:
Private Sub Worksheet_Calculate()
Dim i As Long
For i = 1 To Range("K2").Value - Range("F12").Value
On Error Resume Next
Application.EnableEvents = False
Range("B13:H32") = Range("C13:I32").Value
Range("I13:I32") = ""
Range("F12").Value = Range("F12").Value + 1
Application.EnableEvents = True
On Error GoTo 0
Next i
End Sub
Anschließend überschreibst Du die Formel in F12 manuell mit dem selben Wert, also der momentanen KW.
Danach speicherst Du die Mappe als Excel-Arbeitsmappe mit Makros (*.xlsm) ab.
Nun verschieben sich die Spalten automatisch, wenn die aktuelle KW in K2 größer ist als in F12.

Gruß Uwe
[-] Folgende(r) 2 Nutzer sagen Danke an Kuwer für diesen Beitrag:
  • Frogger1986, joepin7
Antworten Top
#5
Hallo Uwe

Vielen Dank dafür , so läuft es ganz gut verschiebt sich wie du es gesagt hast . Nur aus der letzten Spalte J13-J32 sind dann die Formeln weg und die Spalte fühlt sich nicht mehr auf sodas ich dann leere zellen bekomme . Ein weiteres Problem ist der Jahreswechsel dann wäre die Zahl kleiner als in K2 .( ein geringer Übel der sich nur eine woche ist . ) In der Zeilenreihe B12-J12 sind die zellen verformelt sodass dort immer die richtigen Kw Wochen angezeigt werden also nach Kw 52 kommt dann Kw 1 . Kann man dieses nicht nutzten ,wenn sich die zahlen in der 12 er reihe sich verschieben, sich die darunter liegenden zellen die Werte einfach sich mit verschieben ? Der Anhang ist nur ein kleiner teil von ganzem Blatt , nur daran baut alles andere auf . Bis heute verschiebe ich jede woche die Zellen manual , was manchmal zu Fehlern führt und dann eine Menge Zeit wieder in Anspruch nimmt sie wieder zu korigieren . Alles andere läuft so einwandfrei mit Formeln und ohne VBA . Nur hier komme ich einfach nicht weiter .
Nochmals Danke für dieses die Richtung ist schon richtig .

Beste Grüße
Jörg
Antworten Top
#6
Hallo Jörg,

(12.11.2018, 11:30)joepin7 schrieb: Nur aus der letzten Spalte J13-J32 sind dann die Formeln weg
das Makro fasst diese Zellen gar nicht an, also lag es nicht an diesem.

Neuer Vorschlag:

Seite 1

ABCDEFGHIJKL
12KW 424344454647484950Wöchenenliche Stunden Vorgabe Arbeitstage
Formeln der Tabelle
ZelleFormel
B12=KALENDERWOCHE($H$2-28;21)
C12=KALENDERWOCHE($H$2-21;21)
D12=KALENDERWOCHE($H$2-14;21)
E12=KALENDERWOCHE($H$2-7;21)
G12=KALENDERWOCHE($H$2+7;21)
H12=KALENDERWOCHE($H$2+14;21)
I12=KALENDERWOCHE($H$2+21;21)
J12=KALENDERWOCHE($H$2+28;21)
Private Sub Worksheet_Calculate()
 Do Until Range("K2").Value = Range("F12").Value
   On Error Resume Next
   Application.EnableEvents = False
   Range("B13:H32") = Range("C13:I32").Value
   Range("I13:I32") = ""
   Range("F12").Value = Application.WeekNum(7 * Fix(CDate("2-1-" & Year(Range("H2").Value)) / 7 + Range("F12").Value) + 2, 21)
   Application.EnableEvents = True
   On Error GoTo 0
 Loop
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • joepin7
Antworten Top


Gehe zu:


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