Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1096to1100
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
zeilen einfügen nach Datums wechsel
chris
Hallo an alle,
ich habe eine frage und brauche eure Hilfe.
Ich habe eine exceldatei,in Spalte C stehen untereinander Datum und Uhrzeit in den Zellen.
Z.b stehen manchmal 10 oder 5 oder 20 mal das gleiche Datum.
Ich möchte jetzt erreichen das immer wieder wenn ein anderes Datum kommt zwischen den Datums 5 Leerzeilen eingefügt werden.
ich habe es mit einer For next schleife versucht zu realisieren aber das dauert bei ca 30000 Einträgen sehr lange.
Würde mich über Hilfe freuen.
VieleN dank im vorraus !
beispiel:
01.01.2006 02:24
02.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
03.01.2006 02:24
04.01.2006 02:24
04.01.2006 02:24
04.01.2006 02:24
04.01.2006 02:24
04.01.2006 02:24
Immer wenn sich die uhrzeit ändert sollen 5 neue zeilen dazwischen eingefügt werden.

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: zeilen einfügen nach Datums wechsel
01.09.2009 13:05:27
Hajo_Zi
Hallo Chris,
man hätte auf Deine Code aufbauen könen.
Hast Du die Bildschirm aktualisierung abgeschaltet?
Hast Du die Berechnung auf manuell gestellt?

AW: zeilen einfügen nach Datums wechsel
01.09.2009 13:26:08
chris
Hallo Hajo,
aktualisierungen usw.. sind abgeschaltet.
Aber trotzdem ziemlich langsam.
Und habe noch etwas festgestellt.Wenn ich mit meiner For nextschleife arbeite geht er nicht bis zum letzten wert.
Weil ja der counter am Anfang z.b 30000 ist aber wenn immer 5 zeilen eingefügt werden ist er ja weit über 30000 aber wie fange ich das ab ?
Hier ist mein Code bis jetzt:
Option Explicit
Sub start()
Dim x As Long
Dim alt
Dim neu
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For x = 16 To Cells(Rows.Count, 3).End(xlUp).Row
neu = Cells(x, 3).Value
alt = Cells(x + 1, 3).Value
If neu  alt And x  16 Then
Rows(x + 1 & ":" & x + 6).Select
Selection.Insert Shift:=xlDown
x = x + 6
End If
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: zeilen einfügen nach Datums wechsel
01.09.2009 13:38:45
ChrisL
Hallo Chris
Arbeite dich von unten nach oben...
For x = Cells(Rows.Count, 3).End(xlUp).Row To 16 Step -1
cu
AW: zeilen einfügen nach Datums wechsel
01.09.2009 13:43:06
Hajo_Zi
Hallo Chris,
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden sollte.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: Das mache ich später ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an: mit und ohne select Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.
Gruß Hajo
Anzeige
AW: zeilen einfügen nach Datums wechsel
01.09.2009 13:46:28
chris
Danke aber wo finde ich eine Lösung für mein problem also das einfpgen von zeilen nach datumswechsel ?
Bitte dir mir zu helfen Hajo,
Kann hier nicht so viel auf Webseiten surfen.
Hoffe das verstehst Du.
gruß Chris
AW: ohne select
01.09.2009 13:49:32
chris
Hallo Hajo ich noch einmal.
Das Problem mit dem select habe ich gelöst.
Rows(x + 1 & ":" & x + 6).Insert Shift:=xlDown
daran habe ich nicht gedacht.
Aber wie schaffe ich es bis zum ende durchzuarbeiten und so das die schleife nicht bei 30000 stoppt.?
Oder muss ich gleich von anfang an sagen for x = 16 to 56000 ?
AW: ohne select
01.09.2009 13:57:16
Hajo_Zi
Halo Chris,
Du solltest Deine Schleife von Hinten nach vorne laufen lassen. Die neu eingefügten Zeilen werden bei Deiner Schleife nicht beachtet.
Gruß Hajo
Anzeige
AW: ohne select
01.09.2009 14:09:18
chris
Danke hajo und ChrisL,
habe es jetzt so gelöst.
For x = 16 To Rows.Count
und am ende der schelife habe ich eine if abfrage:
If Cells(x, 3) = "" Then
Exit Sub
End If
So klappts.
Danke euch !!!
AW: ohne select
03.09.2009 08:14:30
David
Hallo Chris,
das ist definitiv nicht der Weg, um deinen Code schneller und richtiger zu machen. Warum beachtest du nicht die Lösungsvorschläge von ChrisL und Hajo? Wenn du die Antworten sowieso nicht richtig liest, brauchst du hier auch nicht zu fragen!
Gruß
David
AW: ohne select
03.09.2009 14:14:38
chris
Hallo David,
bevor du mich dumm anredest hier im Forum schau Dir doch meine beiträge einmal an.
ich habe geschrieben das die Lösungsvorschläge mit der Schleife rückwerts nicht funktionieren bei mir !
Deshalb habe ich den anderen Weg genommen.
Danke
Anzeige
AW: ohne select
03.09.2009 14:35:45
David
Normalerweise sollte ich darauf nicht antworten.
Hast du es denn wirklich probiert?
Der Code
Option Explicit
Sub insert()
Dim l_row, i
l_row = Range("A65500").End(xlUp).Row
For i = l_row - 1 To 1 Step -1
If Cells(i, 1)  Cells(i + 1, 1) Then
Rows(i + 1 & ":" & i + 7).insert shift:=xlDown
End If
Next
End Sub
macht bei mir genau das was du möchtest (im Beispiel stehen die Daten in den Zellen A1 bis A20.
Gruß
David
AW: noch eine Bitte
01.09.2009 14:18:00
chris
Sorry Hajo,
jetzt muss ich noch einmal aufmachen.
Ich wollte gerade noch einen Timer einbauen also eine userform die mir Anzeigt wie weit der aktuelle fortschritt ist.
Könntest du mir bitte helfen ? ich weiß nicht wie ich bei meinem Code anfangen soll.
Weil Sie ja das ganze nicht auf die for schleife bezieht weil die ja einfach abgebrochen werden kann.
So das ich nicht auf 100% gehen kann.
Könntest Du mir ein bischen helfen ?
Hier mein Code:
Option Explicit
Sub start()
Dim x As Long
Dim alt As Date
Dim neu As Date
Dim start As Date
Dim ende As Date
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
start = Timer
For x = 16 To Rows.Count
If Cells(x, 3) = "" Then
Exit Sub
End If
neu = Cells(x, 3).Value
alt = Cells(x + 1, 3).Value
If neu  alt And x  16 Then
Rows(x + 1 & ":" & x + 5).Insert Shift:=xlDown
x = x + 5
End If
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
ende = Timer
MsgBox ("           Abgeschlossen:" & Chr(10) & "Benötigte Zeit = " & Round(ende - start, 2)  _
& " Sekunden"), vbInformation, "Info"
End Sub

Anzeige
AW: zeilen einfügen nach Datums wechsel
01.09.2009 13:44:31
chris
Danke klappt aber nicht.
?
Weil ja immer wieder 6 nach unten gerutscht werden ?
Danke für den Tipp
So habe ich es auch schon versucht.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige