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

Nachfolgende Zeilen löschen

Nachfolgende Zeilen löschen
10.01.2013 19:44:03
Martin
Hallo liebe VBA-Gemeinde,
ich habe folgendes Problem:
ich habe eine Excel-Datei, die anhand diverser Wenn-Bed. Daten abprüft.
Das ganze kann dann beispielsweise so aussehen.
open
open
open
open
close
close
open
open
open
close
Ich möchte nun nur den ersten (fetten) open Wert und den ersten Close. Die drei open dazwischen sind irrelevant und müssen entfernt werden.
Eine Idee wäre vielleicht, sobald open dann Variable True bis close dann False oder so ähnlich. Mir fehlt einfach die Idee.
Kann mir hier vielleicht jemand helfen?
Ich wäre euch super dankbar dafür.
Viele Grüße,
Martin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nachfolgende Zeilen löschen
10.01.2013 19:51:55
Hajo_Zi
Hallo Martin,
mache eine Schleife und lösche alle die in Spalte a nicht Fett sind.

AW: Nachfolgende Zeilen löschen
10.01.2013 20:40:46
Martin
Hallo Hajo,
danke für deine Antwort. So leicht ist es leider nicht, da die Werte in meiner Excel-Tabelle nicht fett sind. DIe habe ich nur hier im Forum fett gekkennzeichnet, damit ich euch zeigen kann, welche Werte erhalten bleiben sollen.

AW: Nachfolgende Zeilen löschen
10.01.2013 21:24:58
Hajo_Zi
nicht optimiert.
Option Explicit
Sub Loeschen()
Dim LoLetzte As Long
Dim Loi As Long
Dim LoJ As Long
LoJ = 2
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows. _
Count)
For Loi = 2 To LoLetzte
If Cells(Loi, 1) = "" Then Rows(Loi).Delete
If Cells(Loi, 1) = Cells(Loi - 1, 1) Then
Rows(Loi).Delete
Loi = Loi - 1
LoJ = LoJ + 1
If LoJ > LoLetzte Then Exit For
End If
Next Loi
End Sub
Gruß Hajo

Anzeige
AW: Nachfolgende Zeilen löschen
10.01.2013 22:15:30
UDF
Hallo Martin,
vielleicht hilft Dir das auf die Sprünge:
Sub EntferneDoppel()
Dim intClose  As Integer
Dim intOpen   As Integer
Dim intMax    As Integer
intRow = 1
intMax = Cells(Rows.Count, 1).End(xlUp).Row
For intRow = 1 To intMax
If Cells(intRow, 1) = "open" Then
intOpen = intOpen + 1
intClose = 0
End If
If Cells(intRow, 1) = "close" Then
intClose = intClose + 1
intOpen = 0
End If
If intClose > 1 Or intOpen > 1 Then Rows(intRow).ClearContents
Next intRow
End Sub
Gruß
Markus

AW: Nachfolgende Zeilen löschen
11.01.2013 10:32:37
Martin
Hallo Markus, Hallo Hajo,
vielen Dank für eure zügigen Antworten. Leider tun die auch noch nicht ganz das, was sie sollen, da jeweils die ganze Zeiile gelöscht wird. Ich hab mich aber auch ein wenig schlecht ausgedrückt in meinem ersten Post, daher hänge ich einfach mal ein Sheet an.
Variante 1: es werden die nicht benötigten open/close, also die Zellen, gelöscht
Variante 2: es wird eine neue Spalte geöffnet, in welcher dann die relevanten open(close via VBA eingetragen werden.
Im Sheet ist Spalte M die Ursprungsspalte und Spalte N, so wie es später aussehen sollte.
Kurz zum Grundgedanken: Sobald das erste open erscheint ist das "System" aktiv. Auf dieses open kann nur ein close folgen, da alle späteren open irrelevant wären. Kommt dann das close, wie in Zeile 20 beginnt das System von vorn. Hier ist es ähnlich. Nach einem close kann nur wieder ein open kommen, da alles nachfolgenden close irrelevant wären. AB hier beginnt das System wieder von vorn und wartet auf das erste open.
Das Hauptproblem ist, sobald eine Leereile kommt, kann ich keine normale Wenn-Formel mehr anwenden (siehe Zeile 15). Ansonsten könnte ich einfach definieren: Wenn(M2=M1;"";M2). Dies führt aber zu Fehlsignalen, sobald ebendiese leer Zeile kommt.
Ich werde mir dennoch mal eure Codes anschauen, vielleicht kann ich die ja doch mit ein wenig Basteln nutzen.
Vielen dank nochmal und viele Grüße,
Martin
Anbei das Sheet: https://www.herber.de/bbs/user/83351.xlsx

Anzeige
AW: Nachfolgende Zeilen löschen
11.01.2013 14:17:29
Martin
Hallo Leute,
kurzer Zwischenstand, hab nun ein wenig rumprobiert, allerdings komme ich nicht wirklich weiter...
Sub open_close()
For Zeile = 2 To 32
If Cells(Zeile, 13) = "open" Then Trade_open = True
If Cells(Zeile, 13) = "close" Then Trade_close = True
If Trade_open = True And Trade_close = False Then
Cells(Zeile + 1, 14) = ""
Cells(Zeile, 14) = "open"
End If
Next Zeile
End Sub
Zumindest steckt dieser Code den open Zeitpunkt korrekt ab, komischerweise erkennt er aber die neue Open-Phase ab Zeile 27 nicht?! Jetzt müsste man das Ding nur noch soweit optimieren, dass er das erste open stehen lässt und alle nachfolgenden bishin zum close gar nicht erst schreibt.
Hat vielleicht einer von euch ne Idee?

Anzeige
AW: Nachfolgende Zeilen löschen
12.01.2013 18:00:43
Matze
Hallo Martin,
deine Aufgabenstellung ist etwas verwirrend , habe ich da so richtig verstanden?
Markus seine Zeilen etwas abgeändert:
Sub Doppelte_weg()
Dim intClose  As Integer
Dim intOpen   As Integer
Dim intMax    As Integer
intRow = 1
intMax = Cells(Rows.Count, 1).End(xlUp).Row
For intRow = 1 To intMax
If Cells(intRow, 13) = "open" Then
intOpen = intOpen + 1
intClose = 0
End If
If Cells(intRow, 13) = "close" Then
intClose = intClose + 1
intOpen = 0
End If
If intClose > 1 Or intOpen > 1 Then Cells(intRow, 13).ClearContents
Next intRow
End Sub
Matze
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige