Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zellen auffüllen!





Frage

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 1 von Platin7

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

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

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

hi ines :-)

mit pivottabellen hab ich noch nie gearbeit da muss ich passen,jetzt sind andere user gefragt :-)

gruss nighty

Antwort 5 von Platin7

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

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

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

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

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

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

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

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

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

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

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

Hi!
Die Datei ist unterwegs!
Gruss
Ines

PS: t-online.de doch sicher!

Antwort 17 von nighty

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

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

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

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

Antwort 21 von Platin7

Guten morgen nighty!

Es hängt an der Stelle:

ThisWorkbook.ActiveSheet.Range(Cells(1, 1), Cells(zeile, 3)) = matrix() Diese Zeile!!!
Call EventsOn

Gruss
Ines

Antwort 22 von nighty

hi ines :-)

sind in spalte a oder b oder c von zeile 1 bis ende,eventuelle verbundene zellen oder geschuetzte bereiche oder aehnliches ?

gruss nighty

Antwort 23 von nighty

hi ines :-)

oder ersetze die zeile mal so

Range(Cells(1, 1), Cells(zeile, 3)) = matrix()

du hast uebrigens oben 2 zeilen angegeben

gruss nighty

Antwort 24 von Platin7

Hallo nighty!
Danke für Deine Hilfe!
Mit der Datei klappt das hervorragend!
Lieben Gruss
Ines