Zellen auffüllen!
Hallo Excelspezies!
Ich bräuchte mal wieder Eure Hilfe!
Ich erhalte aus einem System folgende Struktur:
Ist:
Datum Zeitraum Wert 1 Wert 2
01.01.2007 00:00:00 01:00 x1 y1
x2 y2
x3 y3
01:00 02:00 x4 y4
x5 y5
x6 y6
02.01.2007 x7 y7
x8 y8
Um diese (45T-Werte) sinnvoll aufbereiten zu können, bräuchte ich ein Makro, das mir die Leerzellen so auffüllt, wie in dem nachstehenden Beispiel!
Soll:
Datum Zeitraum Wert 1 Wert 2
01.01.2007 00:00:00 01:00 x1 y1
01.01.2007 00:00:00 01:00 x2 y2
01.01.2007 00:00:00 01:00 x3 y3
01.01.2007 01:00 02:00 x4 y4
01.01.2007 01:00 02:00 x5 y5
01.01.2007 01:00 02:00 x6 y6
02.01.2007 01:00 02:00 x7 y7
02.01.2007 02:00 02:00 x8 y8
Vielen Dank für die Mühe im Voraus!
Gruss
Ines
Antwort schreiben
Antwort 1 von Platin7 vom 11.07.2019, 11:09 Options
Sorry, die Ansicht wurde leider zerschossen!
Ist:
Datum Zeitraum Wert 1 Wert 2
01.01.2007 00:00:00 01:00 x1 y1
fehlt fehlt fehlt x2 y2
fehlt fehlt fehlt x3 y3
fehlt 01:00 02:00 x4 y4
fehlt fehlt fehlt x5 y5
fehlt fehlt fehlt x6 y6
02.01.2007 fehlt fehlt x7 y7
fehlt fehlt fehlt x8 y8
Ich hoffe, jetzt erkennt man es etwas besser!
Wirklich schön ist es aber immer noch nicht!
Ines
Antwort 2 von nighty vom 11.07.2019, 11:21 Options
hi ines :-)
wie gewuenscht :-))
gruss nighty
der bereich waere anzupassen,zur zeit "A1:A5"
Sub Auffuellen()
Workbooks(1).Worksheets(1).Range("A1:A5").Replace what:="", replacement:="00:00:00", searchorder:=xlByColumns, MatchCase:=True
End Sub
Antwort 3 von Platin7 vom 11.07.2019, 14:43 Options
Hallo nighty!
Danke für die Anwort! Leider war die Darstellung wohl immer noch zu schlecht!
Stell Dir doch bitte eine Pivot-Tabelle vor, in der die erste Spalte den Tag, die 2. eine Uhrzeit und die nächsten vier Spalten Werte enthalten. Es gibt für den ersten Wert am ersten Tag die Angaben Tag und Uhrzeit. Für die folgenden Werte mit dem gleichen Tag und der gleichen Uhrzeit fehlen jedoch die Angaben.
Diese möchte ich jedoch hinzugefügt haben!
Gruss
Ines
Antwort 4 von nighty vom 11.07.2019, 14:53 Options
hi ines :-)
mit pivottabellen hab ich noch nie gearbeit da muss ich passen,jetzt sind andere user gefragt :-)
gruss nighty
Antwort 5 von Platin7 vom 11.07.2019, 14:57 Options
Hi!
War nur ein Beispiel, um sich die Optik vorzustellen!
Kann ich Dir was mailen, damit Du besser verstehst, was ich möchte?
Gruss
Ines
Antwort 6 von Aliba vom 11.07.2019, 15:06 Options
Hi Platin,
mit einem Makro kann ich Dir leider nicht helfen, aber vielleicht
langt es ja auch, wenn Du quasi ein Duplikat ausfüllen lässt.
Nehmen wir mal an in A1 bis F1 stehen die Überschriften.
Dann in G2 die Formel:
=WENN(A2="";A1;A2) und diese Formel soweit benötigt nach rechts und nach unten kopieren.
CU Aliba
Antwort 7 von Platin7 vom 11.07.2019, 15:14 Options
Hallo Aliba!
Danke für den Versuch!
Leider scheitert Dein Vorschlag schon in der 3. Zeile, da diese ebenfalls leer ist. Leer ist Leer und bleibt dann auch Leer!
Gruss
Ines
Antwort 8 von Aliba vom 11.07.2019, 15:17 Options
Hi Ines,
ich bin ja auch ein Vollidiot, wollte doch was ganz anderes schreiben, nämlich:
=WENN(A2="";G1;A2)
CU Aliba
Antwort 9 von nighty vom 11.07.2019, 15:39 Options
hi all :-)
ich versteh jetzt nur noch bahnhof
mein makro ergaenzt alle leeren zellen des angegebenen bereiches um "00:00:00"
gruss nighty
Antwort 10 von Platin7 vom 11.07.2019, 15:47 Options
Hallo nighty!
Das war aber leider nicht die Anfrage!
Kopier Dir doch bitte die Angaben aus meinem Nachtrag (Antwort 1) in Excel (Importassistent)!
Vielleicht erkennst Du Dann mein Problem! Da, wo "fehlt" steht, ist meine Tabelle leer, soll aber entsprechend gefüllt werder!
Gruss
Ines
Antwort 11 von nighty vom 12.07.2019, 12:39 Options
hi ines :-)
zitat
Da, wo "fehlt" steht, ist meine Tabelle leer
genau das macht das makro wenn du den bereich anpasst
gruss nighty
Antwort 12 von Platin7 vom 12.07.2019, 12:46 Options
Hallo nigthy!
Ich stehe da wohl auf der Leitung!
Meine Tabelle hat die Überschriften in Zeile 1!
Die Gesamte Tabelle befindet sich in den Spalten A bis H und reicht variierend bis ca. Zeile 45000! In den Spalten D bis H sind die Werte und A bis C sollen die Gliederungsstufen sein.
Bitte mach doch noch einen letzten Versuch!
Gruss
Ines
Antwort 13 von Platin7 vom 12.07.2019, 13:00 Options
Hi nochmal!
Das Missverständnis scheint auch zu sein, das nicht "00:00:00" eingefügt werden soll, sonder die entsprechende Gliederungstufe!!!!!!
Gruss
Ines
Antwort 14 von nighty vom 12.07.2019, 13:04 Options
hi ines :-)
vielleicht so,wobei was haben gliederungstufen mit auffuellen zu tun ?
gruss nighty
spalte D bis H
zeile 2 bis ende (Automatische abtastung)
werden alle leerzellen,im makro mit "" angegeben damit "00:00:00" aufgefuellt
Sub Auffuellen()
ThisWorkbook.ActiveSheet.Range("D2:H" & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row).Replace what:="", replacement:="00:00:00", searchorder:=xlByColumns, MatchCase:=True
End Sub
Antwort 15 von nighty vom 12.07.2019, 13:09 Options
hi ines :-)
jetzt versteh ich glaub ich:-))
doch schick mir lieber eine kleine mustertabelle zu
mit beispiel
vorher/nachher
oberley@t.online.de
mit aussagefaehigen betreff bitte
gruss nighty
Antwort 16 von Platin7 vom 12.07.2019, 14:11 Options
Hi!
Die Datei ist unterwegs!
Gruss
Ines
PS: t-online.de doch sicher!
Antwort 17 von nighty vom 12.07.2019, 15:26 Options
hi ines :-)
wie gewünscht :-))
gruss nighty
alle drei module gehören in ein allgemeines modul
das modul Auffuellen ist das startmodul
Option Explicit
Sub Auffuellen()
Call EventsOff
Dim puffer1 As Variant, puffer2 As Variant, puffer3 As Variant
Dim zaehler As Long, zeile As Long
zeile = ThisWorkbook.ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
ReDim matrix(zeile, 3) As Variant
matrix() = Range(Cells(1, 1), Cells(zeile, 3))
For zaehler = 4 To zeile
If matrix(zaehler, 1) <> "" Then
puffer1 = matrix(zaehler, 1)
Else
matrix(zaehler, 1) = puffer1
End If
If matrix(zaehler, 2) <> "" Then
puffer2 = matrix(zaehler, 2)
Else
matrix(zaehler, 2) = puffer2
End If
If matrix(zaehler, 3) <> "" Then
puffer3 = matrix(zaehler, 3)
Else
matrix(zaehler, 3) = puffer3
End If
Next zaehler
ThisWorkbook.ActiveSheet.Range(Cells(1, 1), Cells(zeile, 3)) = matrix()
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Antwort 18 von Platin7 vom 12.07.2019, 16:51 Options
Hallo nighty!
Sicher nur ein kleiner Fehler von mir!
End If
Next zaehler
ThisWorkbook.ActiveSheet.Range(Cells(1, 1), Cells(zeile, 3)) = matrix()
'Hier hängt es leider - Laufzeitfehler!
Call EventsOn
End Sub
Gruss
Ines
Antwort 19 von nighty vom 12.07.2019, 17:15 Options
hi ines :-)
deine beispieltabelle lief mit excel2000
da es bei der zuweisung des array keinen fehler gab (verbundene zellen,geschuetzte bereiche etc.) duerfte es bei der rueckschreibung zu den zellen eigentlich keinen fehler geben
hier deine beispieldatei die einwandfrei laeuft,probier mal
http://www.netupload.de/detail.php?img=4e7f78573580bce2eb73658f9267...gruss nighty
Antwort 20 von nighty vom 12.07.2019, 19:51 Options
hi ines :-)
wo haengt es
gruss nighty
in der zeile
ThisWorkbook.ActiveSheet.Range(Cells(1, 1), Cells(zeile, 3)) = matrix()
oder in der
Call EventsOn