Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

bedingt löschen





Frage

Hallo excel proofis, habe ein anliegen. habe eine tabelle wie folgt angelegt: name spalte1 spalte2 spalte3 spalte4 test 1 2 3 4 1 2 3 1 ergebnis 2 4 6 5 wie bekomme ich es hin das ein makro immer die spalte a kontrolliert wenn das wort ergebnis dort steht soll er weiter die 4 spalten kontrollieren ob das ergebniss im gewünschten rahmen liegen das gewünschte rahmen hat die bedingung : spalte 1und 2 darf nicht kleiner 5 grösser 10 sein spalte 3 und 4 dürfen nicht grösser und kleiner 1 sein wenn es nicht im rahmen ist sollen alle zeilen bis zur nächten wort "ergebniss" gelöscht sein usw. danke für eure hilfe buggy

Antwort 1 von Saarbauer

Hallo,
Zitat:
spalte 3 und 4 dürfen nicht grösser und kleiner 1 sein

ist das richtig? Das heisst die Spalte 3 und 4 dürfen nur 1 sein

Gruß

Helmut

Antwort 2 von Buggy

hallo helmut,

ja genau
im ergebniss ist eine adition der zeilen

gruss

Antwort 3 von Saarbauer

Hallo,

Versuch es mal mit dem Makro

Sub Prüfen()
Zeile = Range("A65536").End(xlUp).Row
AnfangZeile = 0
For i = 1 To Zeile
If Range("a" & i).Value = "Ergebnis" Then
If AnfangZeile > 0 Then
Range("A" & AnfangZeile + 1 & ":E" & i).Select
Selection.Delete Shift:=xlUp
i = AnfangZeile + 1
AnfangZeile = 0
End If
End If
If Range("a" & i).Value = "Ergebnis" Then
If Range("B" & i).Value < 5 Then AnfangZeile = i
If Range("B" & i).Value > 10 Then AnfangZeile = i
If Range("C" & i).Value < 5 Then AnfangZeile = i
If Range("C" & i).Value > 10 Then AnfangZeile = i
If Range("D" & i).Value <> 1 Then AnfangZeile = i
If Range("E" & i).Value <> 1 Then AnfangZeile = i
End If
Next i
End Sub


Ich bin zwar nicht sicher ob es wirklich das ist was du willst, aber es entspricht deinen Vorgaben

Gruß

Helmut

Antwort 4 von nighty

hi all :)

wie gewünscht :))

gruss nighty

Option Explicit
Sub such()
Dim Zeile As Long
Dim IndexAnfang As Long
Application.ScreenUpdating = False
For Zeile = 2 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If Cells(Zeile, 1) <> "" Then
If Cells(Zeile, 1) <> "ergebnis" Then IndexAnfang = Zeile
If Cells(Zeile, 1) = "ergebnis" Then
If Cells(Zeile, 2) < 5 Or Cells(Zeile, 2) > 10 Or _
Cells(Zeile, 3) < 5 Or Cells(Zeile, 3) > 10 Or _
Cells(Zeile, 4) <> 1 Or Cells(Zeile, 5) <> 1 Then
Sheets(1).Range(Cells(IndexAnfang, 1), Cells(Zeile, 5)).Delete Shift:=xlUp
End If
End If
End If
Next Zeile
Application.ScreenUpdating = True
End Sub

Antwort 5 von nighty

hi helmut :)

ich denk er möchte blockweises löschen

erste zeile ueberschrift
ab 2 zeile spalte a
erste bezeichner spalte a anfang block
bezeichner ergebnis spalte a ende block
mit weiterer prüfüng auf kleiner grösser etc. in spalte 2 bis 4

gruss nighty

Antwort 6 von nighty

hi :)

2 bis 5 :)))

gruss nighty

Antwort 7 von Saarbauer

Hallo @ nighty,

Ich glaube wir kommen zum gleichen Ergebnis. Wie immer viele Wege führen nach Rom.

Gruß

Helmut

Antwort 8 von CaroS

Hallo Helmut,

würde mir von Dir gerne mal den Weg nach Rom erklären lassen. Bei mir geht´s schon nicht weiter bei:

AnfangZeile = 0
For i = 1 To Zeile
If Range("a" & i).Value = "Ergebnis" Then
If AnfangZeile > 0 Then

Habe es daraufhin mal mit AnfangZeile = 1 probiert, da passierte auch rein gar nichts. Stehe jetzt echt vor einem Rätsel.

Meine Testdaten:
Zeile1: Überschriften
Zeile2: test | 1 | 2 | 3 | 4
Zeile3: (leer) | 1 | 2 | 3 | 1
Zeile4: ergebnis | 6 | 7 | 1 | 1
Zeile5: test | 1 | 2 | 3 | 4
Zeile6: (leer) | 1 | 2 | 3 | 1
Zeile7: ergebnis | 6 | 7 | 6 | 5
Zeile8: test | 1 | 2 | 3 | 4
Zeile9: (leer) | 1 | 2 | 3 | 1
Zeile10: ergebnis | 2 | 4 | 1 | 1

Da weder Ergebnis-Zeile 7 noch Ergebnis-Zeile 10 in Ordnung sind, müsste von unten her bis einschließlich Zeile 5 alles gelösch werden und Zeilen 2 - 4 stehen bleiben. Oder soll von oben her gelöscht werden?

Gruß,
CaroS

Antwort 9 von CaroS

Hallo Buggy,

bitte erklär doch noch einmal genau, was da nicht kleiner und nicht größer sein darf!
Dürfen die Werte in den Spalten 3 und 4 oberhalb von ergebnis nur 1 sein oder die Werte in der ergebnis-Zeile? Es sieht ja so aus, als würden die Werte oberhalb von ergebnis addiert und die Summen dann in die ergebnis-Zeile eingetragen. Da wird dann aber in den Spalten 3 und 4 meistens mehr als 1 rauskommen oder? Gleiche Frage für Spalten 1 und 2: oberhalb oder in der ergebnis-Zeile?

Leider erklärt Dein Anfangsbeispiel

name spalte1 spalte2 spalte3 spalte4
test 1 2 3 4
(A3=leer?) 1 2 3 1
ergebnis 2 4 6 5

auch nicht so genau, worum es eigentlich geht.

Gruß,
CaroS

Antwort 10 von buggy

hi Caros, hallo helmut vorab vielen dANK für die hilfe stellung

es ist immer unterschiedlich einige daten habe mehr zeilen die als teilergebniss zum ende zusamme addiert sind.

beispiel :

es kann vorkommen das eine daten satz nur eine zeile haben und andere mehr als 1 am ende ist es immer als teilergebniss zusammen gefasst

name spalte1 spalte2 spalte3 spalte4
test 1 2 3 4
1 2 3 1
ergebnis 2 4 6 5

oder auch

name spalte1 spalte2 spalte3 spalte4
test 1 2 3 4
test 1 2 3 1
test 12 3 4
test 123 4
ergebnis 4 8 12 5 13

ich hoffe ich konnte es erklären.

werde aber gleich mal die vba version ausprobieren die ihr mir zufefügung gestellt habt

gruss buggy

Antwort 11 von Saarbauer

Hallo @CaroS,

anscheinend hast du mein Makro nicht getestest. Ich habe bei mir Tests durchgeführt und es hat funktioniert.. Beim Makro von @nighty habe ich zwar keinen Test durchgeführt, aber es kommt aufs gleiche raus wie bei mir.

Das Problem mit dem was gelöscht wird hatte ich auch, aber nach dem was @buggy svhreibt (Fragestellung) sind dann die Folgezeilen zu löschen.

Daher
Zitat:
Ich bin zwar nicht sicher ob es wirklich das ist was du willst, aber es entspricht deinen Vorgaben


Gruß

Helmut

Antwort 12 von CaroS

Hallo Helmut,

also zuerst mal: die Frage stammt nicht von mir, also auch nicht die Vorgaben.

Dann danke ich Dir für die Antwort: Der Vergleich If Range("a" & i).Value = "Ergebnis" Then ist case-sensitiv, deshalb kann bei "ergebnis" nichts passieren und zum Schluss noch der Hinweis unter Ordensbrüdern: Wenn ich schreibe, bei mir funktioniert es nicht, hier sind meine Testdaten, dann habe ich das Makro wohl getestet. Ich habe es sogar im Einzelschritt-Modus mit Variablenüberwachung getestet, aber einfach nicht verstanden bzw. bemerkt, warum das Makro jedesmal über die "interessanten" Zeilen (mit "ergebnis") hinweggegangen ist, und über die anderen natürlich auch.

Eine Frage der Aufmerksamkeit, mein Fehler. Dass es an =0 / >0 liegen könnte, war natürlich geraten. Ich wusste einfach nicht, woran es liegt. Aber nun habe ich ja die Ursache gefunden.

Ich werde mir auch in Zukunft die Lösungen von anderen anschauen, denn man kann eine Menge davon lernen, vor allem Dinge, auf die man selbst nicht kommt.

In diesem Sinne: freundliche Grüße,
CaroS

Antwort 13 von Saarbauer

Hallo @CaroS ,

kommt halt mal vor, dass der Weg des Anderem einem selbst unverständlich ist. Meine Reaktion beruht auf deiner Aussage
Zitat:
würde mir von Dir gerne mal den Weg nach Rom erklären lassen. Bei mir geht´s schon nicht weiter bei:

danach musste ich von einem nicht vollständigem Test ausgehen. Das du die Frage nicht gestellt hast ist richtig, aber du hast meine Lösung als nicht zielführend bzw. falsch dargestellt (AW8) und dabei macht das Makro genau das, was @ buggy in dere Fragestellung gefordert hat, ob es das ist was @buggy tatsächlich will ist eine andere Frage. Daran haben wir beide gewisse Zweifel, @buggy ´s Sache.

Übrigens spielt die Anzahl der Zeilen zwischen den Worten "Ergebnis" keine Rolle, da nach dem Wort "Ergebnis" gesucht wird.

Gruß

Helmut

Antwort 14 von CaroS

Hallo Helmut,

es ist bald Wochenende. Jetzt noch vor dem Wochenende (oder überhaupt) einen Streit anzufangen wäre genauso blöd wie wenn ich mich hierzu erst ab kommenden Dienstag noch mal melde. Ich denke, ich kann hier noch zwei Dinge geraderücken.
Zitat:
Meine Reaktion beruht auf deiner Aussage ... danach musste ich von einem nicht vollständigem Test ausgehen.

Das musstest Du nicht. Zum einen, weil ich gar nicht unvollständig getestet hatte, zum anderen, weil Du überhaupt nicht davon ausgehen musst, dass der Fehler (oder das Missverständnis oder die Ursache oder was auch immer) beim anderen liegt. Er könnte ja genauso gut auch bei Dir liegen.
Zitat:
aber du hast meine Lösung als nicht zielführend bzw. falsch dargestellt (AW8)

Wenn Du noch einmal etwas genauer nachliest, wirst Du sehen, dass ich Deine Lösung weder als "nicht zielführend" noch als "falsch" dargestellt habe. Diese Worte habe ich nicht verwendet. Ich habe geschrieben, dass mit Deinem Makro und meinen angegebenen Testdaten "rein gar nichts" "passiert" ist. Dass dies so ist, kann jeder jederzeit nachprüfen. Da ich aber nicht wusste, woran es liegen könnte, habe ich eigene Fehler einkalkuliert, mich sehr vorsichtig ausgedrückt und gefragt, ob Du mir "den Weg nach Rom" (sprich: Dein Makro) erklären kannst. Nach einer Erklärung fragen ist nicht dasselbe wie eine Negativ-Behauptung aufstellen.
Zitat:
dabei macht das Makro genau das, was @ buggy in dere Fragestellung gefordert hat

Das ist der Irrtum Nummer zwei. Dein Irrtum. Nimm buggys Testdaten aus der Frage, dazu Dein Makro aus AW3 und auch Du wirst feststellen, dass Dein Makro absolut gar nichts macht. Also macht es nicht das, was buggy in der Fragestellung gefordert hat. Und das liegt an Deinem Makro. Da wird nämlich nach dem String "Ergebnis" gesucht, obwohl buggy "ergebnis" vorgegeben hatte. Dieser kleine Unterschied ist der einzige Grund, weshalb Dein Makro weder mit buggys noch mit meinen Testdaten lief, und das ist erstmal nicht mein Fehler.

Von mir kommt lediglich die Vermutung, dass es an AnfangZeile = 0 liegen könnte. Weil die falsch war, hat dann AnfangZeile = 1 auch nichts gebracht. Aber auch in der Originalfassung, ohne diese zeitweilige Änderung, löscht das Makro nichts, weil es nichts findet. Wenn Du Dir nun zum Vergleich noch nightys Makro (AW4) ansiehst, wirst Du verstehen, weshalb sein Makro mit allen Testdaten funktioniert hat, es sucht nämlich nach "ergebnis".

Jedenfalls hast Du nach Tests, die Du mit leicht abgewandelten Daten durchgeführt hast ( - durchgeführt haben musst, sonst kann es nicht funktionieren), sehr selbstbewusst in meine Richtung gefeuert und dabei Worte wie "nicht zielführend", "falsch" ins Spiel gebracht, die vielleicht doch ein kleines bisschen auf Dein Makro zutreffen. Andere Forumsgäste sollten vielleicht nicht nur die Frage lesen und Dein Makro kopieren, sondern auch den Hinweis in AW12 beachten. Das wäre die richtige Antwort gewesen, die Du mir hättest geben können, aber das G/K-Problem hattest Du bis dahin selbst nicht bemerkt.

Dass es trotzdem ein guter Ansatz ist, aus dem mit einer kleinen Änderung eine gute Lösung wird, steht außer Frage.

Gruß,
CaroS

Antwort 15 von Saarbauer

Hallo @CaroS,

du hast Recht und ich meine Ruhe

Wobei ich nicht sicher bin ob @ Buggy Ergebins groß- oder Kleingeschrieben nutzt. Hier liegt vielleicht ein vergleichbarer Fall vor wie bei den zu Löschenden Zeilen.

Gruß und schönes Wochenende

Helmut

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: