Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sverweis mit Toleranz

Sverweis mit Toleranz
16.01.2013 08:53:13
Jonas
Hallo liebe Leute,
ich sitze hier an einem projekt mit dessen Hilfe ich eine Auswertung machen möchte.
Das Problem lässt sich ganz einfach beschreiben aber ich kriegs nich hin das umzusetzen.
Ich habe Datenbankabfragen. Daraus erhalte ich zwei Tabellen. Aus der einen bekomme ich eine Zeit. Dieser Zeit möchte ich mit einer Toleranz von bspw. 5 min. den Status aus der anderen Tabelle zuordnen. Also Quasi hab ich die Zeit gegeben und will wissen was zu der Zeit +- 5 min passiert ist.
Hoffe ihr könnt mir weiter helfen.

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis mit Toleranz
16.01.2013 09:09:14
Klaus
Hallo Jonas,
ich bin mir ziemlich sicher, dass man das nicht mit dem SVERWEIS lösen wird - aber vielleicht mit INDEX, mit VBA oder mit ein paar Hilfsspalten.
Eine Musterdatei, mit einem händisch eingetragenem Wunsch-Suchergebniss, wäre aber auf jedem Fall hilfreich.
Erste Verständnissfrage:
in der Quelle seien folgende Zeiten und Daten::
07:00 / alpha
07:03 / bravo
07:04 / charlie
07:09 / delta
07:15 / echo
die Suche nach 07:08 Uhr soll nun was ergeben?
Möglichkeiten:
1) bravo (Suchzeit -5 minuten)
2) delta (am nähesten an der Suchzeit)
3) charlie (nächstkleinerer von der Suchzeit
4) delta (nächstgrößere von der Suchzeit
5) bravo, charlie, delta (alles innerhalb +- 5 minuten von der Suchzeit)
Grüße,
Klaus M.vdT.

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 09:59:47
Jonas
https://www.herber.de/bbs/user/83415.xlsx
Da isse die datei. Wie gesagt die Tabellen sind im original aus Datenbankabfragen und haben deswegen keine definite Länge.

AW: Sverweis mit Toleranz
16.01.2013 15:51:19
Daniel
Hi
probier mal diese Formellösung:
die Formel ist passend für deine Beispieldatei und geschrieben für G4:
=WENN((F4+$C$9)-SVERWEIS(F4+$C$9;$B$4:$B$6;1;WAHR)>2*$C$9;"---";SVERWEIS(F4+$C$9;$B$4:$C$6;2;WAHR)) 
Gruß Daniel

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 16:15:47
Jonas
Naja das mit der ungenauen Übereinstimmung im Sverweis is immer so ne Sache....das klappt meistens nicht so gut hab ich die Erfahrung gemacht...ich hab ne Lösung gefunden.
Danke dass ihr versucht habt mir zu helfen ;)

AW: Sverweis mit Toleranz
16.01.2013 17:03:58
Daniel
Hi
nur zu deiner Information: das Verhalten von VERGLEICH und SVERWEIS bei ungenauer Übereinstimmung ist das gleiche!
du musst folgendes beachten, wenn du mit ungenauer Übereinstimmung arbeitest:
1. die Suchmatrix muss aufsteigens sortiert sein (bei Vergleich ggf auch absteigen)
2. findet die Funktion keine genaue Übereinstimmung, dann wird der nächstkleiner Wert als Ergebnis verwendet.
Gruß Daniel

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 09:42:15
Hajo_zi
benutze doch Autofilter?
Gruß Hajo

AW: Sverweis mit Toleranz
16.01.2013 09:58:03
Jonas
Hm, nach etwas überlegen bin ich dazu gekommen, dass das wohl nicht geht. zumindest weiß ich nicht wie das funktionieren soll, da die Tabelle Werte über einen Zeitraum von einem Jahr mit Einträgen von bis zu 20 Meldungen pro Tag auswerten soll. Zudem sollen ja Werte aus der einen Tabelle ausgelesen werden und in der anderen Tabelle Zugeordnet werden. Grund für dieses Prozedere ist, dass Nicht jede Statusmeldung verwendet werden soll, sondern nur die, welche einen gewissen Grenzwert überschreiten. Dafür hab ich aber schon eine Lösung....ich hab nur das Problem, dass ich keine Zeiten zuordnen kann, die nicht exakt übereinstimmen. Diese Anforderung ergibt sich daraus, dass der Status etwas später gemeldet wird, als meine Zeit die ich durch die Auswertung bekommen habe.
Ich will die Tabelle so formatieren, dass sie stets aktuell ist. Den Filter müsste ich jedes mal manuell einstellen. das ist mir zu umständlich
Gruß Jonas

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 10:01:24
Jonas
https://www.herber.de/bbs/user/83416.xlsx
Hier ist die Datei. Wie gesagt, die zwei Tabellen sind aus Datenbankabfragen und haben keine definite Länge.

AW: Sverweis mit Toleranz
16.01.2013 10:14:54
Klaus
Hi Jonas,
das wird doch so nichts. Du beantwortest unsere Fragen nicht: In deiner Tabelle steht du willst den Wert "am nächsten dran" haben, aber mit einer Toleranzzeit von 5 minuten.
Was denn nun? Den nächsten Wert, oder nur den nächsten Wert wenns innerhalb von +-5 Minuten ist? Und was wenn es dafür keinen Wert gibt? Wofür GENAU die Toleranzzeit, warum reicht es nicht einfach den nächsten Wert zu nehmen?
Wir kennen dein Vorhaben nicht, nur für dich ist offensichtlich was du möchtest.
Dein Muster ist ganz offensichtlich in Aufbau und Form NICHT identisch mit deiner Mastertabelle. Warum machst du dir die Mühe deinen Tabellenaufbau zu verändern, damit wir komplexe Formeln/Funktionen auf den veränderten Tabellenaufbau anpassen, die du dann nicht in deine echte Tabelle übernehmen kannst? Ich entwickel auf dieses Muster jetzt nichts!
Wie flexibel bist du mit deinem Tabellenaufbau? Sind Hilfsspalten ok? Hajos Vorschlag mit dem Autofilter ist hervorragend, warum passt er dir nicht? Einen Button wirst du eh drücken müssen um die Berechnung auszuführen, ob der nun ein Makro startet oder den Autofilter ... vielleicht hilft dir ein Makro, das Auto-Filtert?
Wie groß ist die finale Tabelle? Mehrere Tausend Zeilen, oder nur ein paar dutzend? Direkt gefragt: Kommen rechenintensive Operationen (Bereich.Verschieben, {Matrix} usw) in Frage?
Grüße,
Klaus M.vdT.

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 10:47:00
Jonas
Also passt auf...das ist eine Auswertung zur Anlagenbelegung in einem Betrieb. Es gibt verschiedene Meldungen...zum einen kann ich die Meldung auslesen "Anlage Startet" und "Anlage fertig" sowie auf welcher Anlage das passiert und andererseits bekomme ich aus einer anderen Tabelle, die nicht zeitgleich aufgenommen wird die Information über den Status also "Zeit_start" "Zeit_ende" "Status" (bsp. Standby).
Ich bin mittlerweile eigentlich recht erfahren im Umgang mit Excel und würde mir zutrauen die Formel in meine einzubauen.
Zu deiner ersten Frage: es soll eine Zeile gefunden werden. Nämlich die, welche den Status wieder gibt zu der Zeit, in der die Anlage auf "Fertig" gesetzt wurde. Hierbei kann es zu Abweichungen der Zeiten von bis zu 5 minuten kommen. Alles was außerhalb dieser Zeit liegt soll nicht beachtet werden, geht ja mit einer Wenn Funktion, dasser dann k.A. ausgibt oder so. Für den ungünstigen Fall, dass mehrere Zeilen gefunden werden innerhalb dieser Toleranzzeit, soll die Zeile die am nähesten dran ist verwendet werden.
Die Toleranzzeit soll dem dienen, dass keine Verwechslung eintritt. Ich habe kein anderes Identifizierungsmerkmal als die Zeit. Wenn ich also zur Zeit 15:30 den Status wissen will, und der nächste Eintrag ist 18:00, dann bringt mir das nix weil 18:00 zu einem komplett anderen Auftrag gehört. Deswegen die Toleranz. Nur Anzeigen wenn die Zeit in dem Rahmen ist.
Ich traue mir wie gesagt zu die Formel auf meine Bedürfnisse und meine Tabelle anzupassen....wie so häufig ist das eine Tabelle mit Betriebsdaten....und das Excel file ist sehr komplex...deswegen hab ich versucht das so einfach wie möglich runter zu brechen. Ich brauch nur diese eine Suchfunktion!
Makro wäre ok...weiß ich aber auch nicht wie ich das machen sollte, Autofilter ist mir zu manuell...da muss ich meinen Filter jedes mal manuell setzen...ich möchte meine Tabelle einmal aufstellen, aufgrund der Ergebnisse eine Auswertung (Pivot oder so) und dann dadrin nichts mehr verändern für längere Zeit...und da wäre jedes mal einen Filter zu setzen sehr unpraktikabel.
Hilfsspalten können so viele rein wie nötig sind...das ist egal.
Zur Tabellengröße...Zur Zeit knappe 4000 Zeilen die ausgewertet werden sollen....allerdings ist der Bereich in dem etwas gefunden wird nur schätzungsweise 50 Zeilen groß....das könnte man nach Datum Filtern wenn das geht, dass der nur sucht wenn die Tage (Bsp. 15.1.13) übereinstimmen und dann daraus die Zeiten suchen. Allerdings bin ich auch hier dagegen einen manuellen Filter zu setzen...höchstens den Filter automatisch über ein makro anpassen.
Ich will doch nur die Zeile finden, in der die Zeiten in Abhängigkeit einer gewissen Toleranz übereinstimmen.
Vielen Dank für eure/deine Mühen ;)
Ich bin auch neu hier im Forum und danke schonmal für die bisher schnell verfassten Antworten.

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 14:19:33
Klaus
https://www.herber.de/bbs/user/83431.xlsm
Hi Jonas,
Hui, dass ist leider gar nicht so einfach wie es aussieht!
Anbei eine ganz wüste Mischung aus Formeln, Hilfsspalten und VBA - sehr unprofessionell, aber funktioniert (hoffentlich).
Grüße,
Klaus M.vdT.

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 14:43:20
Jonas
Danke Klaus, das hilft mir ein bisschen weiter, allerdings ist das wie du schon sagtest auch nicht die ideallösung. Ich hab das jetzt über ne Indexfunktion gelöst...wenn Indexwert mit Zeilenwert über Vergleichssuche mit nächstgrößerem Wert als Differenz zur gesuchten Zeit größer als die angegebene Toleranz dann mache ne Indexfunktion mit dem Zeilenwert über Vergleich mit nächstkleinerem Wert...sieht zwar wüst aus aber funktioniert ^^ und das kann ich auch in meine Tabelle einbringen ohne das Makro immer aktivieren zu müssen.
Wenn Bedarf besteht kann ich die Funktion ja auch mal posten..is halt nur wie gesagt recht wüst.
Danke nochmal ;)

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 14:57:07
Klaus
Hi Jonas,
Bedarf habe ich keinen, aber ein akademisches Interesse an deiner Lösung!
Grüße,
Klaus M.vdT.

AW: Sverweis mit Toleranz
16.01.2013 16:13:25
Jonas

=WENN(
[@[Rüstzeiten >50]]"";
WENN(
ABS(
INDEX(
Tabelle_Abfrage_von_APERTUM78;
(VERGLEICH(
[@[DS fertig_real]];
Tabelle_Abfrage_von_APERTUM78[DatumVon];
-1));
6)-[@[DS fertig_real]])
>Zeiten!C$3;
INDEX(
Tabelle_Abfrage_von_APERTUM78;
(VERGLEICH(
[@[DS fertig_real]];
Tabelle_Abfrage_von_APERTUM78[DatumVon];
-1))+1;
21);
INDEX(
Tabelle_Abfrage_von_APERTUM78;
(VERGLEICH(
[@[DS fertig_real]];
Tabelle_Abfrage_von_APERTUM78[DatumVon];
-1));
21));
"")

Anzeige
AW: Sverweis mit Toleranz
16.01.2013 10:03:03
Jonas
komisch im Antwortformular sehe ich den Threat mit der hochgeladenen Datei nicht...sry fürs multiple Posting....dachte es ist nich angekommen da ich das nur im Archiv sehe.
;
Anzeige
Anzeige

Infobox / Tutorial

Sverweis mit Toleranz in Excel


Schritt-für-Schritt-Anleitung

Um den SVERWEIS in Excel mit einer Toleranz von beispielsweise 5 Minuten zu verwenden, folge diesen Schritten:

  1. Tabellen vorbereiten: Erstelle zwei Tabellen. Die erste Tabelle enthält die Zeitstempel und die zweite Tabelle die Statusmeldungen.
  2. Hilfsspalte einfügen: Füge eine Hilfsspalte in der ersten Tabelle ein, die die Zeit mit der Toleranz berechnet. Zum Beispiel:
    =WENN(ABS(A2 - B2) <= 5/1440; "Ja"; "Nein")

    Hierbei ist A2 der Zeitstempel aus der ersten Tabelle und B2 der Zeitstempel aus der zweiten Tabelle. 5/1440 entspricht 5 Minuten.

  3. SVERWEIS-Formel anwenden: Verwende die SVERWEIS-Funktion, um die gewünschten Werte aus der zweiten Tabelle abzurufen. Die Formel könnte wie folgt aussehen:
    =WENNFEHLER(SVERWEIS(A2;Tabelle2!A:B;2;WAHR);"Nicht gefunden")

    Achte darauf, dass die Daten in der zweiten Tabelle aufsteigend sortiert sind, damit die WAHR-Option für ungenaue Übereinstimmung funktioniert.

  4. Ergebnisse auswerten: Überprüfe die Ergebnisse und passe die Toleranzen nach Bedarf an.

Häufige Fehler und Lösungen

  • Fehlerhafte Sortierung: Wenn die Daten in der Suchmatrix nicht aufsteigend sortiert sind, kann es sein, dass der SVERWEIS nicht die erwarteten Ergebnisse liefert. Stelle sicher, dass die Zeiten korrekt sortiert sind.
  • Ungenaue Übereinstimmung: Wenn du die WAHR-Option verwendest, musst du darauf achten, dass die Funktion immer den nächstkleineren Wert zurückgibt. Dies kann zu unerwarteten Ergebnissen führen, wenn die Daten nicht korrekt formatiert sind.
  • Falsche Verwendung von Hilfsspalten: Wenn die Hilfsspalte nicht richtig implementiert ist, kann dies die Ergebnisse der SVERWEIS-Funktion negativ beeinflussen. Überprüfe die Formeln in den Hilfsspalten regelmäßig.

Alternative Methoden

Wenn der SVERWEIS nicht die gewünschten Ergebnisse liefert, können folgende alternative Methoden verwendet werden:

  1. INDEX und VERGLEICH: Diese Kombination ermöglicht es, den nächstgelegenen Wert zu finden, ohne auf die Einschränkungen von SVERWEIS angewiesen zu sein. Beispiel:
    =INDEX(Tabelle2!B:B;VERGLEICH(A2;Tabelle2!A:A;1))
  2. VBA-Makros: Du kannst ein Makro schreiben, um die Daten automatisch zu filtern und die gewünschten Werte zu ermitteln. Dies kann besonders nützlich sein, wenn du große Datenmengen hast.
  3. Autofilter: Verwende den Autofilter, um Daten innerhalb eines bestimmten Zeitrahmens anzuzeigen. Dies kann manuell oder durch ein Makro automatisiert werden.

Praktische Beispiele

Hier sind einige praktische Beispiele zur Anwendung des SVERWEIS mit Toleranz:

  • Beispiel 1: Angenommen, du hast folgende Daten in Tabelle 1:

    Zeit
    07:00
    07:03
    07:04
    07:09
    07:15

    Und in Tabelle 2:

    Status
    alpha
    bravo
    charlie
    delta
    echo

    Du suchst den Status um 07:08 mit einer Toleranz von 5 Minuten. Der SVERWEIS sollte in diesem Fall bravo, charlie und delta zurückgeben.

  • Beispiel 2: Mit der Kombination von INDEX und VERGLEICH kannst du den nächsten Status für eine gegebene Zeit ermitteln, ohne die genauen Übereinstimmungen zu benötigen.


Tipps für Profis

  • Optimierung der Formeln: Verwende die WENNFEHLER-Funktion, um die Handhabung von Fehlern zu verbessern. Dies sorgt dafür, dass deine Formeln robuster werden.
  • Datenvalidierung: Stelle sicher, dass die Daten in beiden Tabellen konsistent formatiert sind, um Probleme bei der Suche zu vermeiden.
  • Makros zur Automatisierung: Wenn du regelmäßig ähnliche Aufgaben erledigen musst, erstelle ein Makro, um den Prozess zu automatisieren und Zeit zu sparen.

FAQ: Häufige Fragen

1. Kann ich SVERWEIS auch für andere Datentypen verwenden?
Ja, SVERWEIS kann auch für Text- und numerische Daten verwendet werden, solange die Suchmatrix entsprechend formatiert ist.

2. Was mache ich, wenn ich mehrere Übereinstimmungen habe?
In diesem Fall kannst du die INDEX- und VERGLEICH-Funktion verwenden, um den nächstgelegenen Wert zu bestimmen oder eine Hilfsspalte zu verwenden, um die besten Treffer zu filtern.

3. Wie kann ich die Genauigkeit des SVERWEIS verbessern?
Achte darauf, dass die Daten in der Suchmatrix immer aufsteigend sortiert sind und verwende die WAHR-Option vorsichtig, um ungenaue Übereinstimmungen zu ermöglichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige