PDA

Vollständige Version anzeigen : Tabelle kürzen aber wie?


JayNas
30.08.2017, 13:24
Hallo Liebe Excel Kenner,

ich habe folgendes Problem und weiß nicht wie es sich mit Excel lösen lässt.
Und zwar habe ich eine Tabelle die folgendermaßen aufgebaut ist:
In jeder Zeile stehen verschiedene Daten wie zB Uhrzeit, Temperatur, Datum etc.
In einer Spalte steht immer ein bestimmtes Tier, dahinter die genaue Uhrzeit wann es aufgenommen wurde.
Die Tabelle ist riesig und hat insgesamt über 300.000 Einträge.
Jetzt möchte ich sie kürzen, und zwar immer so dass sobald ein neues Tier in der Spalte auftaucht diese Zeile stehen bleibt, sowie die Spalte an der das gleiche Tier zuletzt auftaucht. (quasi von Fuchs Fuchs Fuchs Fuchs Wildschwein Wildschein Wildschein auf Fuchs Fuchs Wildschwein Wildschwein kürzen)

Die Uhrzeiten ändern sich von Tier zu Tier meist im sekundentakt jedoch manchmal auch mehr. sollte zb die Zeit zwischen einem Wildschwein und dem nächsten länger als 10minuten sein würde ich diese Zeilen auch gern stehen da sie dann als "neues Tier zählen".

Ich habe euch eine Beispieltabelle angehängt ich hoffe das ganze ist ein bisschen verständlich!
Es wäre mir auf jedenfall eine sehr große Hilfe wenn man die Tabelle mit Excel in diesem Sinne kürzen könnte.
Vielen lieben Dank,
Jonas

WS-53
30.08.2017, 13:55
Hallo Jonas,

die folgende Formel in Spalte P, Filter aktivieren und dann nach WAHR bzw. FALSCH filtern.

=ODER(H2<>H1;H2<>H3;UND(H2=H1;SUMME(L2-SUMME(L1))*86400>=600);UND(H2=H3;SUMME(L3-SUMME(L2))*86400>=600))

Wenn du nach FALSCH gefiltert hast, kannst du dann alle noch sichtbaren Zeilen löschen.

Die Formel war unnötig lang. es reicht auch:

=ODER(H2<>H1;H2<>H3;SUMME(L2-SUMME(L1))*86400>=600;SUMME(L3-SUMME(L2))*86400>=600)

Fennek11
30.08.2017, 14:12
Hallo,

eine VBA-Lösung:

bitte zuerst an einem kleineren Datensatz testen (ca 10.000), der Code ist nicht "geschwindigkeits-optimiert"

Sub iFen()
Columns("H").Interior.Color = xlNone
For i = 3 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "H") = Cells(i - 1, "H") And _
Cells(i, "H") = Cells(i + 1, "H") And _
(Cells(i, "K") - Cells(i - 1, "K")) < 1 / 120 Then

Cells(i, "H").Interior.Color = vbRed
Else
Cells(i, "H").Interior.Color = vbGreen
End If
Next i
End Sub



mfg

WS-53
30.08.2017, 14:23
Hallo Fennek,

du hast bei deinem Code nicht berücksichtigt, dass die Zeile 26 auch stehen bleiben soll, da es ja um die Endzeit des Ersten Wildschweins im 2. Wildschweinblock handelt. Und die Zeile 2 wird bei dir überhaupt nicht markiert, müsste aber grün sein.

JayNas
30.08.2017, 16:15
Hey, vielen lieben Dank für eure Antworten!!
Es gibt noch das Problem dass wenn ich die Formel in Excel nichts passiert. Excel frägt mich ob das wirklich eine Formel ist? muss ich sie noch irgendwie anpassen?

Habe sie jetzt einfach in Spalte P eingefügt und nach unten gezogen, aber er zeigt nur die Formel im Feld als Zeichenfolge an.

Viele Grüße und Danke!!

WS-53
30.08.2017, 16:23
Hallo,

dann ist die Spalte als Text formatiert. Da must du einmal die Spalte markieren, als Standard formatieren, in P2 einmal im Editierfenster die Formel noch einmal mit Enter bestätigen und wieder runter ziehen.

JayNas
30.08.2017, 16:26
okay das habe ich gemacht, aber dann kommt immer noch die Fehlermeldung:

"Mit dieser Formel gibt es ein Problem.

Sie möcheten gar keine Formel eingeben? [...]"

WS-53
30.08.2017, 16:33
Hallo,

schaue es dir in deiner Beispielmappe an, die ich um Spalte P ergänzt habe.

JayNas
30.08.2017, 16:42
okay wunderbar, ich weis nicht wo der fehler lag, aber jetzt funktioniert es!
Tausend Dank!!

lupo1
30.08.2017, 16:50
=ODER(H2<>H1;H2<>H3;SUMME(L2-SUMME(L1))*86400>=600;SUMME(L3-SUMME(L2))*86400>=600)

Dein SUMME-Gebrauch ist unüblich:

=ODER(H2<>H1;H2<>H3;(L2-L1)*86400>=600;(L3-L2)*86400>=600)

Die Datei habe ich mir nicht angeschaut.

WS-53
30.08.2017, 17:01
Hallo Lupo,

da hast du recht. Aber deine Formel produziert in der Ersten Zeile #WERT anstatt WAHR, da in der Ersten Zeile ja die Überschriften stehen.

Und da ich irgend wann einmal rausgefunden habe, dass SUMME sich in diesen Fällen tolerant gibt und nicht Zahlenwerte einfach ignoriert, habe ich die Formel halt so definiert. Habe mir somit die WENNFEHLER-Abfrage gespart.

JayNas
31.08.2017, 14:53
noch eine Frage zur Modifikation, wie müsste ich die Formel verändern wenn ich jede Uhrzeit herausfiltern will die sich von der vorigen um weniger bzw. mehr als 10min unterscheidet?
Nochmals danke!

JayNas
31.08.2017, 15:03
das konnte ich dann doch selber, entschuldigung