Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
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

Zeilen einfügen (Datums abhängig)

Zeilen einfügen (Datums abhängig)
17.10.2008 21:37:00
Becker
Hallo liebe Gemeinde,
habe eine Tabelle mit mehr als 13.000 Zeilen und möchte nun " zwei leere Zeile" einfügen. Das hängt von Datum ab in Spalte "D2 bis D13800". Ab "D2" steht Datum z.B. 03.02.2007 bis "D64". Ab "D65" steht neue Datum 04.02.2007 bis "D95" u.s.w.
Wie kann man mit Hilfe von Makro zwei leere Zeilen einfügen zwischen zwei verschiedene Datum (zwischen den 3-en und 4-en Febr.)?
Ich hoffe, Ihr könntet mir helfen.
Netten Gruß
Daniel

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen einfügen (Datums abhängig)
17.10.2008 21:49:39
Peter
Hallo Daniel,
das kleine Makro sollte das für dich erledigen
Option Explicit

Public Sub ZeilenEinfuegen()
Dim WkSh    As Worksheet
Dim lZeile  As Long
Application.ScreenUpdating = False
Set WkSh = ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen !!!
For lZeile = WkSh.Cells(Rows.Count, 4).End(xlUp).Row To 3 Step -1
If CDate(WkSh.Cells(lZeile, 4).Value)  CDate(WkSh.Cells(lZeile - 1, 4).Value) Then
WkSh.Rows(lZeile).Insert shift:=xlDown
WkSh.Rows(lZeile).Insert shift:=xlDown
End If
Next lZeile
Application.ScreenUpdating = True
End Sub


Gruß Peter

Anzeige
AW: Zeilen einfügen (Datums abhängig)
17.10.2008 22:44:06
Becker
Hallo Peter,
Tausende mal DANKEEEEE, genau das gesuchte dank Dir und Deiner super Lösung.
Weil Du der Profi bist hätte ich noch paar Fragen;
- kann man in erste eingefügte Zeile "WkSh.Rows(lZeile).Insert shift:=xlDown"
die Summen Formel in Spalte "F" bilden, z.B. in "F65" sollte die Formel Summe(F2:F64) stehen.
Dann in nächsten 2 leere Zeilen solle das gleiche in Spalte "F" passieren. Das wären dann die leeren Zeilen von 97 bis 98, die Formel Summe steht in "F97" Summe(F67:96)?
Da bin ich sehr gespannt ob das Makro noch dazu packen.
Für jeder weitere Hilfe danke ich Euch allen Profis.
Das ist absolut das beste Forum für mich.
Gruß Daniel
WkSh.Rows(lZeile).Insert shift:=xlDown
Anzeige
AW: Zeilen einfügen (Datums abhängig)
18.10.2008 12:50:48
Daniel
Hi
wenn du das haben willst, wird das Makro wesentlich komplizerter und deine Tabelle wird wesentlich unflexibler, falls du mal andere Auswertungen damit fahren willst, oder so Spielchen treiben willst wie Umsortieren oder Autofiltern.
im allgemeinen ist es bei diesen Datenmengen besser, die Datenauswertung von den Daten zu trennen und bspw das Ganze mit einer Pivot-Tabelle auszuwerten.
solltest du es trotdem vorhaben, würde ich emfpehlen, die Gesamtsumme in eine eigene Spalte zu packen und nicht in die gleiche Spalte wie die Einzelwerte. DAS MACHT NUR ÄRGER, auch wenn es optisch schöner aussieht, datentechnisch ist sowas eine Katastrophe.
hier mal ein ein Codebeispiel, die Gesamtsumme wird in einer neuen Spalte am Tabellenende gebildet:

Sub Leerzeilen_mit_Summe()
Dim Ende1 As Long, Ende2 As Long
Dim Spalte As Long
Spalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
Ende1 = Cells(Rows.Count, 4).End(xlUp).Row
Cells(1, Spalte).Value = "Summe/Tag"
Cells(1, 4).Resize(Ende1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(Ende1 + 1, 4), _
Unique:=True
Rows(Ende1 + 1).Delete
Ende2 = Cells(Rows.Count, 4).End(xlUp).Row
Range(Cells(Ende1 + 1, Spalte), Cells(Ende2, Spalte)).FormulaR1C1 = "=sumif(C4,RC4, C6)"
Range(Cells(Ende1 + 1, 4), Cells(Ende2, 4)).Copy Destination:=Cells(Ende2 + 1, 4)
Cells(1, 4).CurrentRegion.Sort Key1:=Cells(2, 4), order1:=xlAscending, header:=xlYes
End Sub


Gruß, Daniel

Anzeige
AW: Zeilen einfügen (Datums abhängig)
23.10.2008 18:19:13
Becker
Hallo Namensvetter
DAAAANNNNNKKKKKEEEEEEEE DDDDIIIIIIRRRRRRRRR 100000000000000000000000 male !!!!!!!!
Dieses Forum ist einfach Spitze dank Dir und anderen netten User.
Danke schön für Deine nette Hilfe und Erklärungen. Diese Daten Blatt hängt nicht von mir ab sonder ist nur ein Teil der Berechnung den ich aus einen anderen System nach Excel expotieren kann. Mit diese Daten Blatt fängt mein Arbeit an, Dein super Makro "Leerzeilen_mit_Summe" ist ein Teil der Lösung der wieder in eine andere Daten Bank impotiert wir und dort dementsprechend verarbeitet wird.
Datentechnisch hast Du völlig Recht da nur leider so ein Export von anderen System möglich ist und der lässt sich leider nicht verändern.
Mit PivoTable habe ich leider wenig Ahnung. Probiert hatte ich schon aber ich kriege die Tages Summe nicht zusammen gezählt sondern unteinander gestellt. D.h. wierder einzelne Blocke kopieren und die mit Summen Formel addieren.
Zwar Dein Code ist MEGA SUPER, da traue ich mich gar nicht ran wenn ich was verändern würde.
Meine VBA Kentnisse sind in der Anfänger Pahse. Es wäre sehr nett von Dir wenn Du mir noch ganz wenig Nachhilfe gibst. Ich probiere es zum auskomentieren was ich in unteren Code vestanden habe.
Bitte korigiere mich was ich falsch vestanden habe.

Sub Leerzeilen_mit_Summe()
'Variable Deklaration
Dim Ende1 As Long, Ende2 As Long
Dim Spalte As Long
'letzte leere Spalte finden
Spalte = Cells(1, Columns.Count).End(xlToLeft).Column + 1
'von unten die Spalte D zählen
Ende1 = Cells(Rows.Count, 4).End(xlUp).Row
'in erste Zeile von erste Spalte wird rein "Summe/Tag" geschrieben
Cells(1, Spalte).Value = "Summe/Tag"
'? solle es hier nach Spalte "D" sortiert werden?
Cells(1, 4).Resize(Ende1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(Ende1 + 1, 4), _
_
Unique:=True
Rows(Ende1 + 1).Delete
'? 2er Bedienung da wird in Spalte D noch einmal was gezählt?
Ende2 = Cells(Rows.Count, 4).End(xlUp).Row
'hier ist die magische Formel Summwenn
'was muß ich hier verändern wenn die Werte nicht mehr in Spalte F sondern in Spalte G stehen?
Range(Cells(Ende1 + 1, Spalte), Cells(Ende2, Spalte)).FormulaR1C1 = "=sumif(C4,RC4, C6)"
'? das hier  verstehe ich überhaupt nicht?
Range(Cells(Ende1 + 1, 4), Cells(Ende2, 4)).Copy Destination:=Cells(Ende2 + 1, 4)
'hier hat es noch einmal mit sortieren zu tun nach Spalte D
Cells(1, 4).CurrentRegion.Sort Key1:=Cells(2, 4), order1:=xlAscending, header:=xlYes
End Sub


Wie lange muß man lernen um überhaupt so ein Code von der Hand schreiben zu können?
Danke nochmals.
Gruß Daniel

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige