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

Liste - Zeitraum vor bestimmtem Eintrag

Liste - Zeitraum vor bestimmtem Eintrag
01.02.2023 11:45:46
Michael
Hallo,
ich versuche mein Problem mal zu beschreiben:
In meiner Tabelle gibt es ein paar Tausend Zeilen. Die Tabelle besteht unter anderem aus den Spalten "Startzeit" und "Kommentar".
Die Kommentare beinhalten Fehlerbeschreibungen. Bei einer bestimmten Fehlerbeschreibung "Fehler XYZ", möchte ich nun gerne wissen, welche Fehlerbeschreibungen im Zeitraum von einer Minute zuvor stattfanden. Die Anzahl der Fehlerbeschreibungen in diesem Zeitraum variiert.
Excel soll also den "Fehler XYZ" in der Tabelle finden und dann in Spalte "Startzeit" den Zeitraum von 60 Sekunden zuvor festhalten und die entsprechenden Fehlermeldungen innerhalb dieses Zeitraums ausgeben.
Kann man sowas mit den Exceltools darstellen oder brauche ich dafür Makros?
Vielen Dank

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste - Zeitraum vor bestimmtem Eintrag
01.02.2023 12:25:56
Piet
Hallo Michael
ich weiss nicht ob das per Formeln geht und lasse den Thread für die Formel Kollegen offen!
Es erleichtert aber wenn du uns eine Beispieltabelle hochlaedst, 10-20 Zeilen reichen, um den Tabellenaufbau zu sehen.
Kann man sicher per Makro lösen, aber mit Formeln geht es vielleicht einfacher und schneller?
mfg Piet
AW: Liste - Zeitraum vor bestimmtem Eintrag
03.02.2023 10:02:01
Yal
Hallo zusammen,
es geht auch per Formel:
=SUMMENPRODUKT(Tabelle1[Startzeit]*(Tabelle1[Fehlerbeschreibung]="Fehler XYZ") *(Tabelle1[@Startzeit]=Tabelle1[Startzeit])*((Tabelle1[@Startzeit]+ZEIT(0;1;0)) >=Tabelle1[Startzeit])) >0
VG
Yal
Anzeige
AW: Liste - Zeitraum vor bestimmtem Eintrag
02.02.2023 20:39:15
Yal
Moin,
weil es danach war, habe ich versucht, die Fragestellung mit Power Query zu lösen.
https://www.herber.de/bbs/user/157624.xlsx
Im Zeile 31 gibt es auch einen Eintrag, der "in der Minute" liegt (Fehler 149).
Um besser zu testen, habe die Liste gedoppelt, mit Zeiten +10 Minuten. Daher ist die Liste ab G2 doppelt so lang.
Werte in der Spalte A+B ändern, auf die Tabelle in G:H rechtsklicken und "aktualisieren".
VG
Yal
Anzeige
AW: Liste - Zeitraum vor bestimmtem Eintrag
03.02.2023 09:12:03
Michael
Hi Yal,
das sieht gut aus. Ich habe aber noch nicht verstanden, an welcher Stelle der Abfrage der Vergleich mit einer festen Zelle "Fehler XYZ" erfolgt.
Wenn ich es richtig verstehe, kommt eine weitere Spalte hinzu, in der "Ist zwischen" verwendet wird. Aber wo ist der Bezug zu sehen?
Danke
AW: Liste - Zeitraum vor bestimmtem Eintrag
03.02.2023 09:55:02
Yal
Hallo Michael,
ja, es ist ein Bischen versteckt.
Ich weisse nicht, wie weit dein Power Query reicht, daher leicht detailliert:
Deine Daten liegen in einer "intelligente Tabelle".
Diese Tabelle1 wird zweimal in Abfrage einbezogen. Einmal in der Hauptliste, einmal in der Funktion "IstZwischen".
In der Funktion "IstZwischen" werden zuerst die Einträge "Fehler XYZ" gefiltert, um deren Startzeit zu isolieren.
Bei jeder Auruf auf diese Funktion, spricht für jede Eintrag der Hauptliste wird die Funktion gerufen und die Zeit der Eintrag übergeben. IstZwischen liefert dann eine 0, wenn diese Zeitpunkt nicht innerhalb einer Minute vor einem "Fehler XYZ" steht (wenn 2 xyz innerhalb einer Minuten vorkommen, werden einige Einträge einen 2 zurückgeliefert bekomen). Dann wird in der Haupliste nach dem nicht null gefiltert (in akt.Version werden die "1" raus, was nicht vollständig ist).
Nun, deine nächste Frage ist wahrscheinlich: wie kann man es so gestalten, dass nicht nur nach "Fehler XYZ" sondern andere Werte, die man on-the-fly eingeben
könnte. Man muss eine benannte Zelle einrichten, diese in einer Abfrage einbeziehen und diese als Filter-Parameter in der Funktion "IstZwischen" reinbringen.
VG
Yal
Anzeige
AW: Liste - Zeitraum vor bestimmtem Eintrag
03.02.2023 11:49:58
Piet
Hallo
wie ich heute sehe gibt es bereits Lösungen, da war Yal schneller. Trotzdem lade ich meine Lösung mit hoch.
Da kann man per InputBox den Text für "XY" selbst festlegen, Zu schade für den Mülleimer.
https://www.herber.de/bbs/user/157626.xls
mfg Piet
"Zu schade für den Mülleimer"
03.02.2023 14:18:49
Yal
das sehe ich auch so. Her damit mit alle Lösungen.
VG
Yal
AW: Liste - Zeitraum vor bestimmtem Eintrag
03.02.2023 16:40:00
Michael
Hallo Piet,
vielen lieben Dank. Ich habe es unterdessen auch per Makro gelöst. Schön, dass jeder einen anderen Weg einschlägt. Selbst wenn man Makros verwendet, gibt es verschiedene Möglichkeiten der Lösung. Wenn ich es richtig sehe, kann mein Problem per Formel, per Power Query und per Makro gelöst werden.
Ich bin begeistert. Also war deine Mühe nicht für den Mülleimer.
Anbei mein Weg.
Habt ein schönes Wochenende
https://www.herber.de/bbs/user/157630.xlsm
Anzeige
AW: Liste - Zeitraum vor bestimmtem Eintrag
03.02.2023 21:13:06
Yal
Hallo Michael,
in deinem Bespiel gibt es in Zeile 30 einen Eintrag "18:36:26", was in der "Minute vor Fehler" liegt, obwohl er nach dem Fehler liegt. Diese wird von deiner Lösung nicht gefunden. Daher ist es bei Dir wichtig, dass die Zeiten vorher sortiert werden (ich gehe aber davon aus, dass diese Protokoll "aus der Maschine" und dementsprechend sortiert ist).
Piet hat in seiner Excel-Version 2013 keine "intelligente" Tabelle (VBA: ListObject) und könnte nicht darauf bauen. Ich habe mir den Spass damit zu basteln.
Folgender Code ist sehr Objekt-orientiert (Lo, Z, T). Überall, wo es geht, wird das Objekt (z.B. Zelle) anstatt nur ein seinen Eigenschaften (.Value) mitgenommen.
Sub Suchen()
Dim Eingabe As String
Dim Lo As ListObject
Dim Treffer As String
Dim Z, T
Const cLoName = "Tabelle1"
    Set Lo = Worksheets("Input").ListObjects(1)
    Eingabe = InputBox("Bitte Fehler Text eingeben", , "XYZ")
    If Eingabe = Empty Then Exit Sub
    Worksheets("Input").Range("H3:I1002").ClearContents 'Rückgabe-Bereich leeren (anpassen)
    Application.ScreenUpdating = False
    Treffer = TrefferListe(Lo, Eingabe, 2, 1)
    If Len(Treffer) = 0 Then GoTo Exitus
    For Each Z In Lo.ListColumns(1).DataBodyRange
        For Each T In Split(Treffer, ";")
            If Z.Value >= (CDate(T) - TimeSerial(0, 1, 0)) And Z.Value = CDate(T) Then
                Worksheets("Input").Cells(Rows.Count, "H").End(xlUp).Offset(1).Resize(1, 2) = Z.Resize(1, 2).Value 'anpassen
                Exit For
            End If
        Next
    Next
Exitus:
    Application.ScreenUpdating = True
End Sub
Private Function TrefferListe(Lo As ListObject, SuchText As String, SuchLOSpalte As Long, Optional LeseLOSpalte As Long) As String
Dim Z As Range
    If Lo.AutoFilter.FilterMode Then Lo.AutoFilter.ShowAllData 'Filter reset
    Lo.Range.AutoFilter Field:=SuchLOSpalte, Criteria1:="=*" & SuchText & "*" 'filtern
'Gibt es Treffer? Nicht wenn die sichbare Zelle nur die Header-Zelle sind (die bleiben sichtbar)
    If Lo.Range.SpecialCells(xlCellTypeVisible).Count > Lo.HeaderRowRange.Cells.Count Then
        If LeseLOSpalte = 0 Then LeseLOSpalte = SuchLOSpalte 'weil LeseLOSpalte optional ist
        For Each Z In Lo.ListColumns(LeseLOSpalte).DataBodyRange.SpecialCells(xlCellTypeVisible)
            TrefferListe = TrefferListe & ";" & Z.Cells(1).Value 'Gefundenen Element sammeln
        Next
        TrefferListe = Mid(TrefferListe, 2) 'ohne den führende Semikolon
    End If
    Lo.AutoFilter.ShowAllData
End Function
VG
Yal
Anzeige
AW: Dank an alle, schöner Teamgeist
03.02.2023 17:58:27
Piet
Danke an Alle
freut mich das ich als alter Mann noch zur Lösung mit beitragen konnte. Schöner Teamgeist!
mfg Piet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige