Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1024to1028
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
Inhaltsverzeichnis

Spaltenzuordnung ändern

Spaltenzuordnung ändern
22.11.2008 07:50:00
Wolfgang
Hallo,
der Auszug aus dem untenstehenden Code legt das Datum in Spalte F zu Grunde und rechnet 180 Tage darauf (wobei die 180 Tage für 6 Monate stehen sollen -ist das überhaupt so richtig, um 6 Monate damit auszudrücken oder gibt es da noch eine andere Berechnung?), um das Ergebnis in Spalte R einzutragen. Nun würde ich das Ergebnis gerne in Spalte L eingetragen bekommen. Ändere ich im Code von -12 in -6, dann erscheint in Spalte R #WERT - an welchen Schnittstellen kann die Spaltenzuordnung ändern? - Danke schon jetzt für die Rückmeldungen.
Herzliche Grüße
Wolfgang
'zu dem Datum aus Spalte F 180 dazurechnen und in Spalte R eintragen
rng.Offset(0, 1).Formula = "=RC[-12]+180"
'Formel in Spalte R durch Werte ersetzen
rng.Offset(0, 1).Value = rng.Offset(0, 1).Value

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spaltenzuordnung ändern
22.11.2008 08:01:00
JogyB
Die Spaltenzuordnung findet weiter oben im Code statt, dort wo "Set rng = ..." steht.
Da ich nicht weiß, wie die Zuordnung erfolgt, kann ich die auch nicht ändern.
Da Du es sowieso als Wert und nicht als Formel haben willst, geht das Addieren von 6 Monaten folgendermaßen:
rng.Offset(0, 1).value = DateAdd("m", 6, rng.Offset(0, -11).Value
Das -11 gilt bei Schreibspalte R, bei Schreibspalte L wäre es dann -5. Aber wie oben erwähnt, die Schreibspalte wird bereits weiter oben festegelegt, also kannst Du das nicht nur hier ändern. Außerdem wäre es mir hier lieber, in dem DateAdd kein Offset zu benutzen und die Spalte F fest anzugeben, aber da ich Deine Tabellenstruktur und den restlichen Code nicht kenne, bleibt mir da nichts anderes übrig.
Gruss, Jogy
Anzeige
vollständiger Code anbei
22.11.2008 08:13:00
Wolfgang
Hallo Yogi,
erneut herzlichen Dank für Deine Rückmeldung; Ich kann da leider Deinen Ausführungen nicht folgen und habe daher 'mal den vollständigen Code beigefügt - Ich wäre Dir dankbar, wenn Du mir anhand des Codes vielleicht erklären könntest wo ich was verändern kann bzw. muß, um jeweils die Spalten zuordnen zu können. Momentan erscheint bei den Umstellungen mit Deinen Ergänzungen der Hinweis, dass ein Listentrennzeichen fehlt. Danke schon jetzt wieder für die Rückmeldung.
Gruß - Wolfgang

Sub Datum2()
'berechnet die Differenz zwischen Datum in Spalte F und HEUTE in Tagen
Dim rng As Range
Dim Bereich As Range
'Set rng = Range("Q2").Resize(Range("F" & Rows.Count).End(xlUp).Row, -1)
Set rng = Range("Q2").Resize(Range("F" & Rows.Count).End(xlUp).Row - 1)
rng.Formula = "=today()-F2"
rng.Value = rng.Value
rng.NumberFormat = "General"
'Teamkennzeichen festlegen
Set Bereich = Range(Cells(2, 15), Cells(Cells(Rows.Count, 7).End(xlUp).Row, 15))
With Bereich
.Formula = "=LEFT(G2,3)"
.Value = .Value
End With
'    Datum in Spalte E zu Grunde legt (Format: 16.11.2008)  #
'    und mir daraus nur die Jahreszahl in Spalte P einträgt #
'Jahr aus Spalte E in Spalte P
rng.Offset(0, -1).Formula = "=YEAR(RC[-11])"
'Formel in Spalte P durch Werte ersetzen
rng.Offset(0, -1).Value = rng.Offset(0, -1).Value
'Zellformat auf Standart setzen
rng.Offset(0, -1).NumberFormat = "General"
'    wenn er das Datum, welches in Spalte F steht mit 180 Tagen hochrechnet #
'    und das Datum dann in Spalte R einträgt                                #
'zu dem Datum aus Spalte F 180 dazurechnen und in Spalte R eintragen
rng.Offset(0, 1).Formula = "=RC[-12]+180"
'Formel in Spalte R durch Werte ersetzen
rng.Offset(0, 1).Value = rng.Offset(0, 1).Value
End Sub


Anzeige
AW: vollständiger Code anbei
22.11.2008 09:31:00
Gerd
Hallo Wolfgang,
probier mal:
rng.Offset(0, -5).Formula = "=DATE(YEAR(RC[-6]),MONTH(RC[-6])+6, DAY(RC[-6]))"
Gruß Gerd
AW: vollständiger Code anbei
22.11.2008 11:05:00
Wolfgang
Hallo Gerd,
Danke für Deine schnelle Rückmeldung; so wie ich es beobachte, läuft der Code einwandfrei. Auch hierfür recht herzlichen Dank. In den Zellen wird nun zwar angezeigt, dass eine ungeschützte Formel hinterlegt ist (über das kleine grüne Dreieck in jeder Zelle links oben), gäbe es da noch eine Möglichkeit, das irgendwie abzufangen, so dass das Dreieck nicht erscheint? - Danke schon jetzt wieder für die Rückmeldung.
Gruß - Wolfgang
AW: vollständiger Code anbei
22.11.2008 11:03:00
JogyB
Hallo.
Probier es mal so (Änderungen sind als Kommentar im Text):

Sub Datum2()
'berechnet die Differenz zwischen Datum in Spalte F und HEUTE in Tagen
Dim rng As Range
Dim Bereich As Range
Dim zeLLe As Range
With ActiveSheet
'Set rng = Range("Q2").Resize(Range("F" & Rows.Count).End(xlUp).Row, -1)
Set rng = .Range("Q2").Resize(.Range("F" & Rows.Count).End(xlUp).Row - 1)
' Wenn Du eh den Wert einträgst, dann so
For Each zeLLe In rng
' Differenz in Spalte Q
zeLLe.Value = Date - zeLLe.Offset(0, -11).Value
' Jahr in Spalte P
zeLLe.Offset(0, -1).Value = Year(zeLLe.Offset(0, -11).Value)
' Datum + 6 Monate in R
zeLLe.Offset(0, 1).Value = DateAdd("m", 6, zeLLe.Offset(0, -11).Value)
' Datum + 6 Monate in L
zeLLe.Offset(0, -5).Value = DateAdd("m", 6, zeLLe.Offset(0, -11).Value)
Next
' Zellformat in P und Q auf Zahl
rng.Offset(0, -1).Resize(, 2).NumberFormat = "0"
'Teamkennzeichen festlegen
Set Bereich = .Range(.Cells(2, 15), .Cells(.Cells(Rows.Count, 7).End(xlUp).Row, 15))
End With
With Bereich
.Formula = "=LEFT(G2,3)"
.Value = .Value
End With
End Sub

Gruss, Jogy

Anzeige
Nachtrag:
22.11.2008 11:22:00
JogyB
Hi.
Setz mal noch nach die ganzen Dim-Anweisungen ein Application.ScreenUpdating = False und vor das Exit Sub ein Application.ScreenUpdating = True
Das beschleunigt den Code etwas.
Gruss, Jogy
AW: Nachtrag:
22.11.2008 11:39:44
Wolfgang
Hallo Yogi,
auch Dir recht herzlichen Dank für Deine Rückmeldung; Ich hatte eben schon Deinen Code getestet und ihn abgebrochen, weil er lange "ratterte" (es geht dabei sicherlich um ca. 5000 Zeilen); Habe dann eben die Ergänzung eingebaut - leider macht die den Code nicht erheblich schneller. Ich hoffe, Du bist mir nicht böse, wenn ich es bei dem alten Code belasse und die Ergänzungen von Gerd einbaue. Habe ihn eben auch getestet, der läuft ungleich schneller. Danke Dir aber aufrichtig und herzlich für Deine Ausarbeitung und die Zeit die Du für mich investiert hast. Einen schönen Tag und schönes Wochenende noch.
Gruß - Wolfgang
Anzeige
AW: Nachtrag:
22.11.2008 19:45:00
JogyB
Hi.
Der andere Code ist natürlich schneller, nur sollte das hier nichts ausmachen. Bei mir braucht das mit Office 2003 in einer VM (sitze hier an einem Mac) ca. 15 s für 65000 Zeilen. Unter Office 2004 für Mac braucht es für die 65000 Zeilen keine 5 s.
Gruss, Jogy
AW: Nachtrag:
22.11.2008 20:09:00
JogyB
Hi.
Mit dem Ansatz von Gerd und noch einer kleinen Optimierung (Jahr direkt eintragen, _ Gruppierungen mit With).

Sub Datum2()
'berechnet die Differenz zwischen Datum in Spalte F und HEUTE in Tagen
Dim rng As Range
Dim Bereich As Range
Dim zeLLe As Range
Dim temp As Date
Application.ScreenUpdating = False
With ActiveSheet
'Set rng = Range("Q2").Resize(Range("F" & Rows.Count).End(xlUp).Row, -1)
Set rng = .Range("Q2").Resize(.Range("F" & Rows.Count).End(xlUp).Row - 1)
Set Bereich = .Range(.Cells(2, 15), .Cells(.Cells(Rows.Count, 7).End(xlUp).Row, 15))
End With
With rng
' Jahr in P
.Offset(0, -1).Value = Year(Date)
' Differenz zu heute in Q
.FormulaR1C1 = "=TODAY() - RC[-11]"
.Value = .Value
' Datum + 6 Monate in L
.Offset(0, -5).FormulaR1C1 = "=DATE(YEAR(RC[-6]),MONTH(RC[-6])+6, DAY(RC[-6]))"
.Offset(0, -5).Value = .Offset(0, -5).Value
' Zellformat in P und Q auf Zahl
.Offset(0, -1).Resize(, 2).NumberFormat = "0"
End With
'Teamkennzeichen festlegen
With Bereich
.Formula = "=LEFT(G2,3)"
.Value = .Value
End With
Application.ScreenUpdating = False
End Sub


Gruss, Jogy

Anzeige
AW: Grünes Dreieck
22.11.2008 11:18:37
Gerd
Hallo Wolfgang,
sowas Schönes gibt es - glaub' ich - ab Excel 2003.
Unter Menüleiste Extras - Optionen - Register Fehlerüberprüfung
kannst die Eckchen durch Enthaken bei "Fehlerüberprüfung im Hintergrund aktivieren"
stilllegen.
Ich tippe aber mal, dass es genügt, weiter unten bei Regeln - "Als Text gespeicherte Zahlen"
das Häkchen zu entfernen.
P.S. Die Einstellungen unter ..Optionen.. gelten i.d.R. für Excel insgesamt.
Änderungen kann man auch per Code vornehmen. Zeichne einfach die Auswahl-Schritte per
Makrorecorder auf.
Gruß Gerd
AW: Grünes Dreieck
22.11.2008 11:28:45
Wolfgang
Hallo Gerd,
Danke für den Hinweis - Optionen, Fehlerüberprüfung und Nichtgesperrte Zellen enthalten Formeln. Habe Deinen Code direkt mit dem Makrorekorder entsprechend ergänzt. Läuft tadellos; Hab erneut herzlichen Dank dafür.
Gruß - Wolfgang
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige