Office: [Excel 2003] leere Felder mit vorherigem Wert aut. füllen

Helfe beim Thema [Excel 2003] leere Felder mit vorherigem Wert aut. füllen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe einen Datensatz, den ich von einer Anwendung bekomme und diesen in Excel importiere. Der Datensatz enthält... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von YouGin, 26. August 2011.

  1. YouGin Neuer User

    [Excel 2003] leere Felder mit vorherigem Wert aut. füllen


    Hallo zusammen,

    ich habe einen Datensatz, den ich von einer Anwendung bekomme und diesen in Excel importiere. Der Datensatz enthält Temperaturmessungen - in meinem Beispiel an vier Sensoren. Es wurde nur dann ein Wert protokolliert, wenn sich der Wert änderte. Ansonsten bleiben die Felder leer.
    Daraus möchte ich ein Diagramm zeichnen lassen, was leider nicht funktioniert, da der Satz viele leere Felder enhält.
    Wie kann ich leere Felder in mehreren Spalten automatisch auffüllen lassen? Ein leeres Feld muss mit dem vorherigem Wert beschrieben werden.

    Freue mich über jeden Vorschlag.
    Mein Skill ist eher bescheiden :roll:. Wenn etwas komplex ist, brauche ich bitte eine Erklärung.

    Danke im vorraus!
    Gruß
     
  2. fette Elfe Erfahrener User
    Hallo YouGin,

    ob dies auch mit Formeln geht... keine Ahnung.
    Aber mit VBA geht sowas.


    Ich habe mal eine Möglichkeit zusammen gebastelt und auch direkt in Deine Datei eingefügt (siehe Anhang).

    Bei Deiner Datei gibt es meiner Meinung nach 2 Probleme:
    - Wenn nur Temperaturwerte bei einer Änderung ausgegeben werden kann es (wie in Deinem Beispiel) vorkommen, dass die obersten Reihen nicht ausgefüllt sind. Da müsstest Du dann von Hand ran.
    - Durch Deinen Datenimport sind die "leeren" Zellen anscheinend nicht mehr leer. Zumindest spricht der Code nicht auf leere Zellen an, deshalb habe ich eine Prüfung auf Zahlenwerte eingebaut.


    Mein Vorschlag:
    - nach Deinem Datenimport die oberste Reihe (Zeile2) von Hand mit Werten füllen. Das sind 4 Werte, sollte nicht allzu aufwendig sein.
    - Erst danach mein Makro laufen lassen.
    - Jetzt sind alle Zellen mit Werten gefüllt, und Dein Diagramm sollte klappen.


    Falls Du mit dem Makro Probleme hast, einfach nochmal nachfragen.


    Ich hoffe geholfen zu haben.
     
    fette Elfe, 26. August 2011
    #2
  3. silex1
    silex1 Super-Moderator
    Hallo,

    geht schon mit Formeln und Hilfsspalten, aber mit der gleichen Problematik der ersten Einträge!

    Arbeitsblatt mit dem Namen 'Sheet1'
     ABCDEFGH
    1timestampTemp 1Temp 2Temp 3Temp 4   
    225.08.2011 13:21  36,7 0036,7
    ZelleFormel
    F2=WENN(GLÄTTEN(B2)="";F1;B2)
    G2=WENN(GLÄTTEN(C2)="";G1;C2)
    H2=WENN(GLÄTTEN(D2)="";H1;D2)
    <table><tr><td>Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg</td></tr></table>[/parsehtml]

    Allerdings ist die Frage, ob ne Pivottabelle hier nicht geeigneter wäre, wenn die Intervalle bekannt wären, die benötigt werden! :roll:
     
    Zuletzt von einem Moderator bearbeitet: 30. November 2020
  4. YouGin Neuer User

    [Excel 2003] leere Felder mit vorherigem Wert aut. füllen

    Hallo,

    danke für eure Mühe! Mit dem Macro klappt es leider nicht. Wenn ich die Datei aufmache, kommt eine Meldung, in der ich dann Macros aktiviere/einschalte. Ich sehe aber nur die normale Datei, wie ich sie hochgeladen habe. In der Macroliste ist auch kein Macro eingetragen.
    Ich habe die Englische Version. Ich weiß nicht, ob es damit zusammenhängt oder ob ich zu blöd bin um es richtig anzuwenden [Excel 2003] leere Felder mit vorherigem Wert aut. füllen *:p*

    @Rene: Die Intervale sind leider nicht bekannt und sind einfach nur prozess- und umgebungsluftabhängig. Ist also eine sehr flexible Sache.

    Schöne Grüße
     
  5. fette Elfe Erfahrener User
    *grübel*


    Aber Du weißt wie man ein Makro anlegt/einfügt?

    Dann probiere doch bitte mal folgenden Code in das Modul des Blattes einzufügen, indem sich der Datensatz befindet:
    Code:
    Option Explicit
    
    Dim loLetzteZeile As Long
    Dim loCounter As Long
    Dim bolBlattschutz As Boolean
    
    Public Sub LeereFelderFüllen()
        
        With Me
            ' Prüfung ob Blattschutz aktiv ist, wenn ja dann aufheben
            If .ProtectContents = True Then
                .Unprotect
                bolBlattschutz = True
            End If
            
            ' ermittelt die Zeilennummer der letzten beschriebenen Zelle in Spalte A
            loLetzteZeile = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
            
            ' Schleife durchläuft alle Zeilen von 3 bis "loLetzteZeile"
            ' und prüft ob Zellwert eine Zahl ist, also ob Werte eingetragen sind
            ' falls nicht wird der darüber liegende Wert eingetragen
            For loCounter = 3 To loLetzteZeile
                If Not IsNumeric(.Cells(loCounter, 2).Value) Then .Cells(loCounter, 2).Value = .Cells(loCounter - 1, 2).Value
                If Not IsNumeric(.Cells(loCounter, 3).Value) Then .Cells(loCounter, 3).Value = .Cells(loCounter - 1, 3).Value
                If Not IsNumeric(.Cells(loCounter, 4).Value) Then .Cells(loCounter, 4).Value = .Cells(loCounter - 1, 4).Value
                If Not IsNumeric(.Cells(loCounter, 5).Value) Then .Cells(loCounter, 5).Value = .Cells(loCounter - 1, 5).Value
            Next loCounter
            
            ' wenn Blattschutz aktiv war, dann wieder aktivieren
            If bolBlattschutz = True Then .Protect
        End With
        
    End Sub
    Ich hoffe das es jetzt klappt.
     
    fette Elfe, 27. August 2011
    #5
  6. Kallewirsch Erfahrener User
    Hallo,

    hier ein Code, der die Tabelle ohne Handarbeit komplett ausfüllt:

    Code:
    Option Explicit
    
    Sub füllen()
    Dim loLetzte As Long
    Dim loErste As Long
    Dim raBer As Range
    Dim Zelle As Range
    Dim loA As Long
    Dim loB As Long
    Application.ScreenUpdating = False
    loLetzte = Cells(Rows.Count, 1).End(xlUp).Row
    Set raBer = Range("B2:E" & loLetzte)
    For Each Zelle In raBer
        If Not IsNumeric(Zelle) Then Zelle = 0
    Next
    For loB = 2 To 5
        For loA = 2 To loLetzte
            If Cells(loA, loB) <0> 2 Then
            For loA = 2 To loErste - 1
                Cells(loA, loB) = Cells(loErste, loB)
            Next
        End If
        For loA = loErste + 1 To loLetzte
            If Cells(loA, loB) = 0 Then Cells(loA, loB) = Cells(loA - 1, loB)
        Next
    Next
    Application.ScreenUpdating = True
    End Sub
    
    Mit Alt+F11 den VBA-Editor aufrufen, den Code in das Fenster rechts einfügen, VBA-Editor schließen, Code mit Alt+F8 aufrufen.


    Gruß

    Edgar
     
    Kallewirsch, 28. August 2011
    #6
  7. fette Elfe Erfahrener User
    Dazu habe ich Anmerkungen:
    1. Wenn ich den Code richtig verstehe, so füllt er die ersten Zeilen mit Nullen, wenn dort nichts steht. Ob das so gewollt oder überhaupt bei dieser Problemstellung statthaft ist, wissen wir nicht.
    2. "For loA = 2 To loLetzte" und "For loA = 2 To loErste - 1" ineinander verschachtelt verträgt sich nicht, einmal "For loA" ist zuviel, abgesehen davon fehlt dann auch ein "Next"
    3. wo wird eigentlich "loErste" definiert? Ich sehe keine Wertezuweisung.



    Danke Edgar, das vergesse ich immer wieder, und bei älteren Versionen kann ich schlecht den Weg über die Menü-Reiter erklären, da er ja meist unterschiedlich ist.
     
    fette Elfe, 28. August 2011
    #7
  8. Kallewirsch Erfahrener User

    [Excel 2003] leere Felder mit vorherigem Wert aut. füllen

    Hallo Achim,

    da hat leider die Forensoftware zugeschlagen und einen Teil des Codes geklaut:

    Code:
    Option Explicit
    
    Sub füllen()
    Dim loLetzte As Long
    Dim loErste As Long
    Dim raBer As Range
    Dim Zelle As Range
    Dim loA As Long
    Dim loB As Long
    Application.ScreenUpdating = False
    loLetzte = Cells(Rows.Count, 1).End(xlUp).Row
    Set raBer = Range("B2:E" & loLetzte)
    For Each Zelle In raBer
        If Not IsNumeric(Zelle) Then Zelle = 0
    Next
    For loB = 2 To 5
        For loA = 2 To loLetzte
            If Cells(loA, loB) <> 0 Then
                loErste = loA
                Exit For
            End If
         Next
            If loErste > 2 Then
                For loA = 2 To loErste - 1
                    Cells(loA, loB) = Cells(loErste, loB)
                Next
            End If
        For loA = loErste + 1 To loLetzte
            If Cells(loA, loB) = 0 Then Cells(loA, loB) = Cells(loA - 1, loB)
        Next
    Next
    Application.ScreenUpdating = True
    End Sub
    
    
    Gruß

    Edgar
     
    Kallewirsch, 28. August 2011
    #8
  9. fette Elfe Erfahrener User
    Hallo Edgar,
    ich hatte mich schon gewundert...
    ;O)

    Also füllst Du im Endeffekt die oberen leeren Zellen mit dem jeweils ersten Eintrag der Spalte.
    Okay, auch ne Möglichkeit. Falls das im Ergebnis "erlaubt" ist, wärs wohl das einfachste.
     
    fette Elfe, 28. August 2011
    #9
  10. YouGin Neuer User
    Hallo,

    fantastisch! Das funktioniert einwandfrei! Was mich besonders erfreut, ist dass der Skript nach unten hin flexibel bleibt. Wenn sich die Werte schnell ändern oder man einen größeren Zeitraum erfassen möchte, kommen einige Zeilen hinzu.
    Wunderbar, vielen Dank!

    Kann man den Skript auch (ohne großen Aufwand) nach rechts erweitern? Falls ich nicht nur vier Temperatursensoren, sondern flexibel mehr aufnehmen möchte?

    Die ersten leeren Felder mit dem ersten vorhanden Wert zu füllen, ist eigentlich sehr gut gelöst. Mit dieser kleinen Abweichung kann ich sehr gut leben. Vor allem, weil ich die realen Werte in den ersten leeren Zellen nicht kenne und mir was ausdenken müsste.

    Vielen Dank!
    Gruß
     
  11. Kallewirsch Erfahrener User
    Hallo,

    zwei Änderungen sind notwendig:

    1.
    Code:
    Set raBer = Range("B2:E" & loLetzte) 
    geht von B bis E, kannst Du nach Belieben ändern
    2. entsprechend hier:
    Code:
    For loB = 2 To 5 
    das ist auch B bis E

    Hier:
    Code:
    loA = 2
    wird übrigens die erste Zeile festgelegt.

    Gruß

    Edgar
     
    Kallewirsch, 29. August 2011
    #11
  12. YouGin Neuer User
    Hallo,

    jetzt komme ich endlich wieder dazu mich nochmal zu melden. Übrigens, vielen Dank nochmal für die Unterstützung!
    Durch Abändern von aufgezeichneten Makros und das einbetten des Codes von Edgar, kann ich schon einiges wegschaffen. Jetzt kommt die nächste Hürde: die Anzahl der Temperaturensensoren ändert sich auch ständig. Das heißt, es können Werte von 1-30 Sensoren in eine Tabelle importiert werden. Bisher ändere ich den Spaltenbereich wie im letzten Posting von Edgar beschrieben. Lässt sich da auch eine Automatisierung realisieren?
    Über Vorschläge würde ich mich freuen!

    Schöne Grüße
    Eugen
     
  13. Thomas Ramel MVP für Microsoft Excel

    [Excel 2003] leere Felder mit vorherigem Wert aut. füllen

    Grüezi YouGin

    Dieser Code tut dasselbe auf eine etwas andere Weise und nimmt alle Spalten (ausser der ersten):

    Code:
    Sub Fill_empty_tr()
    Dim intI                 As Integer
        Application.ScreenUpdating = False
    
    
        For intI = 2 To Range("A1").CurrentRegion.Columns.Count
            With Intersect(Columns(intI), Range("A1").CurrentRegion)
                .Offset(1, 0).Replace What:=" ", _
                                      Replacement:="", _
                                      LookAt:=xlPart
                If WorksheetFunction.CountBlank(.Cells) > 1 Then
                    .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
                    .Value = .Value
                    With .SpecialCells(xlCellTypeConstants, 2).Offset(1, 0)
                        .Replace What:=.Cells(1, 1).Value, _
                                 Replacement:=.Cells(.Rows.Count, 1).Value, _
                                 LookAt:=xlWhole
                    End With
                End If
            End With
        Next intI
        Application.ScreenUpdating = True
    End Sub

    BTW:
    Kann es sein, dass deine leeren Zellen mitnichten wirklich leer sind sondern Leerzeichen enthalten?
     
    Thomas Ramel, 27. Januar 2012
    #13
Thema:

[Excel 2003] leere Felder mit vorherigem Wert aut. füllen

Die Seite wird geladen...
  1. [Excel 2003] leere Felder mit vorherigem Wert aut. füllen - Similar Threads - Excel 2003 leere

  2. Funktion aus Excel 2003 in 2019 gesucht

    in Microsoft Excel Hilfe
    Funktion aus Excel 2003 in 2019 gesucht: Hallo Ihr Lieben, ich suche eine spezielle Funktion in Excel 2019, welche ich aus Excel 2003 kenne. Leider kann ich diese in Ek19 nicht finden, weiss auch nicht wie sie korrekter Weise heisst ......
  3. Excel 2003 öffnet externe Hyperlinks nicht mehr

    in Microsoft Excel Hilfe
    Excel 2003 öffnet externe Hyperlinks nicht mehr: Halo, ich habe ein Problem in Excel 2003, vielleicht kann mir jemand weiterhelfen: das Problem ist, daß Excel 2003 externe Hyperlinks (also Hyperlinks, die auf eine Internet-Seite verweisen)...
  4. Makro in Excel 2003 funktioniert nicht mehr

    in Microsoft Excel Hilfe
    Makro in Excel 2003 funktioniert nicht mehr: Hallo zusammen, ich hatte vor vielen Jahren in Excel 2003 einen Kalender mit Makros erstellt. Nachdem ich auf Excel 2016 gegangen bin, mußte ich feststellen, dass es Fehlermelunden plötzlich gibt,...
  5. UserForm Textbox als Hyperlink Excel 2003

    in Microsoft Excel Hilfe
    UserForm Textbox als Hyperlink Excel 2003: Gruess Gott miteinander, in einer Textbox der userform befindet sich ein Hyperlink in Textform. Der Text wird über Sub Zellaktualisierung() Me.TextBoxSpalteHyperlink.Text =...
  6. Excel 2003: csv-Import von Volksbank

    in Microsoft Excel Hilfe
    Excel 2003: csv-Import von Volksbank: Hallo zusammen, beim online-banking der Volksbanken kann man sich die Umsätze als csv-Datei herunterladen. Ich importiere diese csv-Dateien in Excel per drag and drop. Das Feld...
  7. [Excel 2003] Formel: Leere Zelle als leer übernehmen

    in Microsoft Excel Hilfe
    [Excel 2003] Formel: Leere Zelle als leer übernehmen: Hallo! Ich wende einige statistische Formeln auf einen größeren Bereich an, in dem einige leere Zellen vorkommen. Diese sollen als leere Zellen übernommen werden, also keinen Wert enthalten,...
  8. Excel 2007 - leere Seiten seit umstieg von Excel 2003

    in Microsoft Excel Hilfe
    Excel 2007 - leere Seiten seit umstieg von Excel 2003: Hallo ich habe ein riesengrosses Problem. Früher hatte ich Office 2003 und bin nun auf Office 2007 umgestiegen. Ich habe im Excel eine Datei in welcher sich eine Grafik, div. Formeln und...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden