Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Ersetzen von Zeilen mit Bedingung
zurück: Zelle mit variablen Koordinaten kopieren (Range + Cell) weiter: Auslesen von Checkboxen/Wiedergabe in Textdatei Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Altenheini
Gast


Verfasst am:
23. Apr 2014, 15:26
Rufname:

Ersetzen von Zeilen mit Bedingung - Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hej Ihr,

ich habe folgende Daten in den Zeilen stehen. Oben Max, Mitte Mittelwert und unten Min.

Wenn es jetzt bei der Auswertung allerdings keine Daten vorhanden sind gibt Excel für Max und Min 0 raus und für den mittelwert #Div0! da ja weder 0 noch #Div0! stimmt und gut aussieht, habe ich diese durch einen Strich ersetzten lassen.

Jetzt ist es aber leider so, dass es druchaus das Minimun 0 gibt. Dieses wird auch durch einen Strick ersetzt. Unschön.

Ich müsste jetzt eine Schleife bauen, welche prüft ob in einer der Zellen was drin steht und wenn ja den - als 0 ersetzt.
Nach der Schleife müsste das Programm zu dem nächsten 3 Paar springen.

Ich weiß leider nich wie ich das realisieren kann...

kann mir jemand helfen?

DAnke und Gruß

p.S. Beispiel der Daten


20,0
0,5
-17,0

-
-2,6
-8,0

9,0
-7,5
-16,0

-
-6,4
-12,0

5,0
-1,1
-7,0

-
-0,5
-2,0

-
-
-

-
-3,3
-6,0



-
-
-
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
23. Apr 2014, 18:47
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hallo

in welcher Spalte stehen denn die Daten? Das ließe sich mit VBA durchaus mit einer Schleife über alle Datensätze reparieren.

Jeweils die Werte der 3 Zeilen lesen und prüfen:

Code:


'Pseudocode - Zeile und Spalte durch korrekte Werte ersetzen

   IF Cell(Zeile, SpalteX).value ="-" Then
      IF Cell(Zeile + 1, SpalteX).value ="-"  Then
         IF Cell(Zeile + 2, SpalteX).value ="-" Then
            'Tue nichts
         Else
            Cell(Zeile, SpalteX).value =0
            Cell(Zeile + 1, SpalteX).value = 0
         End if
    Else
       Cell(Zeile, SpalteX). value = 0
       IF Cell(Zeile + 2, SpalteX). value ="-" Then Cell(Zeile + 2, SpalteX).value =0
    End if
   Else
       IF Cell(Zeile + 1, SpalteX). value ="-"  Then Cell(Zeile + 1, SpalteX).value =0
       IF Cell(Zeile + 2, SpalteX). value ="-"  Then Cell(Zeile + 2, SpalteX).value =0
   End if


Dann zum nächsten Datensatz (x-Zeilen nach unten) und wieder prüfen.


Gruß
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Altenheini
Gast


Verfasst am:
24. Apr 2014, 14:22
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hej Little Hobbit,

ja cool nicht schlecht. Besten Dank.

Eine kleine Frage noch sorry...

Wie bekommst du das hin, dass er wenn er 3 geprüft hat zur übernächsten Zeile springt und das so lange wiederholt, bis er bei Zeile 410 angekommen ist?

besten Dank nochmals für eine Antwort. Wink

Sobald meine Registrierung "frei" gegeben wurde. Lade ich eine bespiel Datei hoch.

[/url]
Altenheini
Im Profil kannst Du frei den Rang ändern


Verfasst am:
24. Apr 2014, 15:25
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

é voila

die Beispiel Datei. Ihr seht vorallem in der Spalte L dieses Phänomen.

Vielleicht ist es ja auch einfacher bevor es ersetzt wird zu prüfen ob 3 Nuller da stehen und dann sie ersetzen, anstatt dannach?

Danke und Gruß



Mappe1.xlsx
 Beschreibung:

Download
 Dateiname:  Mappe1.xlsx
 Dateigröße:  46.07 KB
 Heruntergeladen:  8 mal

Gast



Verfasst am:
24. Apr 2014, 16:42
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hallo

hier ein Lösungsvorschlag:

Code:

Sub DatenBereinigen()
    Dim i               As Long
    Dim j               As Long
    Dim lgLetzteZeile   As Long
    Dim lgLetzteSpalte  As Long
    Dim objSheet        As Worksheet
   
    lgLetzteZeile = Letzte_Zeile
    lgLetzteSpalte = Letzte_Spalte
    Set objSheet = ActiveSheet
   
    For i = 4 To lgLetzteSpalte
        For j = 1 To lgLetzteZeile - 2 Step 4
            If Trim(objSheet.Cells(j, i).Value) = "-" Then
               If Trim(objSheet.Cells(j + 1, i).Value) = "-" Then
                  If Trim(objSheet.Cells(j + 2, i).Value) = "-" Then
                     'Tue nichts
                  Else
                     objSheet.Cells(j, i).Value = 0
                     objSheet.Cells(j + 1, i).Value = 0
                  End If
             Else
                objSheet.Cells(j, i).Value = 0
                If Trim(objSheet.Cells(j + 2, i).Value) = "-" Then objSheet.Cells(Zeile + 2, SpalteX).Value = 0
             End If
            Else
                If Trim(objSheet.Cells(j + 1, i).Value) = "-" Then objSheet.Cells(j + 1, i).Value = 0
                If Trim(objSheet.Cells(j + 2, i).Value) = "-" Then objSheet.Cells(j + 2, i).Value = 0
            End If
        Next j
       
    Next i
   
End Sub

Private Function Letzte_Zeile() As Long

'Letzte Zeile der Spalte C ermittelt
    Letzte_Zeile = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
End Function


Private Function Letzte_Spalte() As Long
' letzte gefüllte Spalte der  Zeile 1  ermittelt
    Letzte_Spalte = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
End Function


Der Sprung über 3 Zeilen erfolgt mit der Anweisung 'Step 4' in der For ... Next Schleife. Bei neuen Tabellen bitte darauf achten, daß die erste zu prüfende Zelle die Zelle (1,4) ist. Bei einer anderen Stellung werden wahrscheinlich Fehler auftreten oder der Code gar nicht ausgeführt. Gegebenenfalls sind die For ... Next Schleifen und die beiden Subs Letzte_Zeile und Letzte_Spalte anzupassen.


Viel Erfolg

Little Hobbit
Altenheini
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Apr 2014, 10:17
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hallo,

vielen herzlichen Dank für deine Mühen. Ich weiß nicht ob ich heute noch dazu komme. Mein Terminkalender wird gerade voller und vermutlich wird es erst Montag wenn ich es ausprobieren und rumtüfteln kann.

Melde mich dann nochmals

ein wunderschönes We
Altenheini
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 14:37
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hej little Hobbit & CO.

besten Dank nochmals für deine Bemühungen. Allerdings tut es iwie noch nicht so wie es sollte und sorry ich weiß nicht warum.

Ich habe den letzten Code kopiert und die zu startende Zeile angepasst 11 sowie meine Formatierung der Striche (leerzeichen Strich Leerzeichen)

Dann bin ich mit F8 durch gegangen und habe festgestllt, dass er wenn er bei der ersten For Schleife ankommen direkt dannach auf End Sub springt und gar nicht in die Schleifen.

Woran liegt das? Gibt es dazu lösungen?

Anbei 2 Bilder

besten Dank und Gruß
Altenheini
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 14:43
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Aus irgendeinem Grund bekomme ich gerade immer einen Upload Error.

Ich denke dennoch, dass ich das Problem verständlich dargestellt habe.

Besten Dank für eure Hilfe
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
28. Apr 2014, 16:46
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Hallo,

mit dem hochgeladenen Muster 'Mappe1.xlsx' lief bei mir der Code fehlerfrei und erbrachte das gewünschte Ergebnis.

Eine Anpassung des Suchstring '-' in ' - ' sollte nicht erfolgen. Hierfür ist die Funktion Trim da, die alle Leerzeichen vor und hinter '-' entfernt.

Wie bereits im erwähnt, können bei anderer Postion der Daten im Tabellenblatt Fehler auftreten. Die Funktionen 'Letzte_Zeile' und 'Letzte_Spalte' suchen dann ggf. in der falschen Zeile/Spalte der Datei und liefern damit auch falsche Ergebnisse (z.B. 1). Wenn dann ab Zeile 11 die For ... Next Schleife laufen soll, wird die Schleife sofort beendet, da der Anfangswert bereits über dem Endwert liegt. Ohne Kenntnis der Datenstruktur der Wertetabelle, die anscheinend vom Muster abweicht, ist eine Fehleranalyse kaum möglich.

Gruß
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Altenheini
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Apr 2014, 09:13
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

das Dateiein hochladen tut immer noch nicht und ich bin nicht auf die Idee gekommen, diese wo anders hoch zu laden.

https://onedrive.live.com/redir?resid=88EBD936845F3D94!111&authkey=!ACtKdbAzB0A3QTE&ithint=file%2c.xlsm

kannst du nochmals drüber schauen und mir sagen wie ich das mit Zeiel 11 realisieren kann bzw. wie ich es an zu passen habe.

besten Dank und vielen herzlichen Dank für deine Bemühungen. Gerne auch Antwort per Mail siehe PN.

Gruß
Little Hobbit
Office-VBA-Programmierer


Verfasst am:
30. Apr 2014, 14:38
Rufname:

AW: Ersetzen von Zeilen mit Bedingung - AW: Ersetzen von Zeilen mit Bedingung

Nach oben
       Version: Office 2010

Razz
Hallo,

das Programm funktioniert mit der Mustertabelle mit kleinen Änderungen:
Ich habe 2 Konstante eingeführt, die den Wert für die erste mit Zahlen gefüllte Zeile bzw. Spalte enthalten. Bei einer Änderung der Stellung der Tabelle im Tabellenblatt müssen nur die beiden Konstanten mit den gültigen Werten gefüllt werden. Das Programm läuft dann mit diesen Werten ohne jede weitere Änderung. Die beiden Funktionen zur Ermittlung der letzten gefüllten Zeile/Spalte wurden an diese Änderung angepasst.

Das Programm hat mit der Musterdatei das gewünscht Ergebnis erzielt.

Code:

Sub DatenBereinigen()

    'ohne Fehlerbehandlung
    Dim i                   As Long
    Dim j                   As Long
    Dim lgLetzteZeile       As Long
    Dim lgLetzteSpalte      As Long
    Dim objSheet            As Worksheet
    Const c_lgErsteZeile    As Long = 11    '1. Zeile mit Zahlen einsetzen
    Const c_lgErsteSpalte   As Long = 4     '1. Spalte mit Zahlen einsetzen
   
    lgLetzteZeile = Letzte_Zeile(c_lgErsteSpalte)
    lgLetzteSpalte = Letzte_Spalte(c_lgErsteZeile)
    Set objSheet = ActiveSheet
   
    For i = c_lgErsteSpalte To lgLetzteSpalte
        For j = c_lgErsteZeile To lgLetzteZeile - 2 Step 4
            If Trim(objSheet.Cells(j, i).Value) = "-" Then
               If Trim(objSheet.Cells(j + 1, i).Value) = "-" Then
                  If Trim(objSheet.Cells(j + 2, i).Value) = "-" Then
                     'Tue nichts
                  Else
                     objSheet.Cells(j, i).Value = 0
                     objSheet.Cells(j + 1, i).Value = 0
                  End If
             Else
                objSheet.Cells(j, i).Value = 0
                If Trim(objSheet.Cells(j + 2, i).Value) = "-" Then objSheet.Cells(j + 2, i).Value = 0
             End If
            Else
                If Trim(objSheet.Cells(j + 1, i).Value) = "-" Then objSheet.Cells(j + 1, i).Value = 0
                If Trim(objSheet.Cells(j + 2, i).Value) = "-" Then objSheet.Cells(j + 2, i).Value = 0
            End If
        Next j
       
    Next i
End Sub

Private Function Letzte_Zeile(ByVal Spalte As Long) As Long
'letzte gefüllte Zeile der Spalte ermittelt
    Letzte_Zeile = ActiveSheet.Cells(Rows.Count, Spalte).End(xlUp).Row
End Function


Private Function Letzte_Spalte(ByVal Zeile As Long) As Long
' letzte gefüllte Spalte der Zeile ermittelt
    Letzte_Spalte = ActiveSheet.Cells(Zeile, Columns.Count).End(xlToLeft).Column
End Function



Viel Erfolg
Little Hobbit

_________________
(Frage + Antwort) x Rückmeldung = aktives Forum
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Wenn Bedingung mit Datumsfelder 4 maristein 684 05. Jul 2005, 06:16
maristein Wenn Bedingung mit Datumsfelder
Keine neuen Beiträge Excel Formeln: Zellen nach einer bedingung löschen 2 Dan0032 567 25. Apr 2005, 07:01
Dan0032 Zellen nach einer bedingung löschen
Keine neuen Beiträge Excel Formeln: Zahl mit Zahl ersetzen und mit der Formel Multiplizieren??? 7 Iggy 912 14. Apr 2005, 21:53
ae Zahl mit Zahl ersetzen und mit der Formel Multiplizieren???
Keine neuen Beiträge Excel Formeln: Muß Daten kopieren mit Bezug auf mehrer Zeilen 3 Anke 1487 07. Apr 2005, 10:54
Anke Muß Daten kopieren mit Bezug auf mehrer Zeilen
Keine neuen Beiträge Excel Formeln: Zeilen mit Eintrag zählen 2 Martymak 1192 06. Apr 2005, 11:09
Martymak Zeilen mit Eintrag zählen
Keine neuen Beiträge Excel Formeln: Spaltenweise suchen und ersetzen 2 MaxKunst 3840 15. März 2005, 21:17
MaxKunsttt Spaltenweise suchen und ersetzen
Keine neuen Beiträge Excel Formeln: Wert durch vordefinierten Wert ersetzen!? 1 Immerblau 1079 23. Jan 2005, 23:04
Tom11 Wert durch vordefinierten Wert ersetzen!?
Keine neuen Beiträge Excel Formeln: Zeilen mit doppelten Werten löschen 6 Sebowsky 1208 06. Jan 2005, 22:26
Sebowsky Zeilen mit doppelten Werten löschen
Keine neuen Beiträge Excel Formeln: SUMMEWENN Bedingung? 3 MoS5000 2186 24. Dez 2004, 12:38
ae SUMMEWENN Bedingung?
Keine neuen Beiträge Excel Formeln: HIFE!!! gewisse zeilen löschen 2 Stevie0130 1580 12. Dez 2004, 18:35
Gast HIFE!!! gewisse zeilen löschen
Keine neuen Beiträge Excel Formeln: Verknüpfen von Daten in verschiedenen Zeilen/Spalten 2 Guybrush Treepwood 3197 29. Okt 2004, 09:18
Guybrush Treepwood Verknüpfen von Daten in verschiedenen Zeilen/Spalten
Keine neuen Beiträge Excel Formeln: Zellen vergleichen / Zeilen löschen 3 Satanico 2994 28. Okt 2004, 15:37
icke Zellen vergleichen / Zeilen löschen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript