PDA

Vollständige Version anzeigen : Zeiträume in denen Ereignisse auftreten anderen Zeiten zuordnen


simse
27.05.2013, 13:56
Hallo Zusammen,

ich suche ein Formel mit der ich eine Fehlerstatistik


Fehler X liegt an
von bis
L M N
12 23.05.2012 09:10 23.05.2012 09:20 fehler a
13 23.05.2012 09:40 23.05.2012 09:50 fehler b
14 23.05.2012 15:10 23.05.2012 15:30 fehler c
..
..
..

Den Zeiträumen nachfolgender Tabelle zuordnen kann


Leistung Lösung
C D
13 23.05.2012 09:00 517.1666667 0
14 23.05.2012 09:10 516.6666667 fehler a
15 23.05.2012 09:20 515 fehler a
16 23.05.2012 09:30 518 0
17 23.05.2012 09:40 514 fehler b
18 23.05.2012 09:50 514.6666667 fehler b
19 23.05.2012 10:00 514.1666667 0
20 23.05.2012 10:10 513.6666667 0
..
..
..

mit Funktion WENN kann ich ja leider immer nur eine Zeile auswählen und nicht eine komplette Matrix

=WENN(UND(C13>=L$12;C13<=M$12);$N$12;0)

mit SVERWEIS nimmt er in der fehlerstatistik immer nur die erste Spalte
=SVERWEIS(C13;L$12:N$14;3;FALSCH)

wer hat eine einfache Funktion mit der ich die Fehlerarten zeitlich zuzuordnen kann? Siehe Bsp. Anhang.

Vielen Dank
Simon

JohnDoe
27.05.2013, 14:28
Hi simse,

also ein SVERWEIS funktioniert anders als du ihn benutzt.
SVERWEIS("Was soll gesucht werden"; "Matrix (in der ersten Spalte wird gesucht); "welcher Wert aus der Matrix soll als Ergebnis ausgegeben werden")

Er sucht halt immer genau! zB. SVERWEIS("Apfel", A2:B10, 2)
Hier wird nach dem Wort Apfel in der Spalte A2 gesucht, auch ein Apfelbaum, oder Apfelkuchen ist nicht das gesuchte Wort. Daher gibt Excel #NV aus.

Du musst schon auf das <= und/ oder >= prüfen.
Wenn dann solltest du es in etwa so machen.

=SVERWEIS(WENN(C41<>"";WENN(C41 <= $M$12;$M$12;WENN(C41 <= $M$13;$M$13;$M$14));$M$11);$L$11:$N$14;3)

Vielleicht hilft dir das schon weiter.

VG
JD

simse
27.05.2013, 15:10
Auch wenn ich nicht garnz verstehe was da in wenn(C41<>""; ....) passiert.
Ich hab ja eine Fehlerstatistik mit mehreren hundert verschiedenen fehlerarten die ich alle zeitlich zuordnen muss.
Dann muss ich ja auch mehrere hundert Bedingungen abfragen oder?

git es keine möglichkeit die sverweis in zwei spalten suchen zu lassen mit der bedingung dass mein gesuchter wert zwischen drin liegt?

SVERWEIS("Was soll gesucht werden"; "Matrix (in der ersten Spalte wird gesucht); "welcher Wert aus der Matrix soll als Ergebnis ausgegeben werden")

JohnDoe
27.05.2013, 15:21
Hi,

leider kennt Excel kein Between, sondern nur größer oder kleiner.
Nebenbei, wie kannst du einen Fehler anhand eines Zeitraumes bestimmen? Gibt es da keinen anderen Wert?

Da du hier sehr viele Fehler hast die einen Wert prüfen wäre wohl eher ein Überprüfung per VBA einfacher, da du eine Schleife verwenden könntest.

VG
JD

simse
27.05.2013, 15:28
Hi,

ich hab eben eine Fehlerstatistik und eine Leistungskurve eines Kraftwerkes. Jetzt muss ich in der Zeit in der Fehler X aufgetreten ist die entgangene Arbeit berechen.

Aber ich glaube ich komm um VBA nicht herum ;D.

Vielen Dank John!

ebs17
27.05.2013, 15:46
@simse: Das von Dir Gewünschte ist eine übersichtliche und einfach zu lösende Datenbankaufgabe. In Access sähe eine Abfrage etwa so aus:
SELECT T1.Zeitpunkt, T1.Leistung, T2.Fehler
FROM Tabelle1 AS T1, Tabelle2 AS T2
WHERE T1.Zeitpunkt Between T2.von AND T2.bis

'ersatzweise als WHERE-Klausel
WHERE T1.Zeitpunkt >= T2.von AND T1.Zeitpunkt <= T2.bis
In Excel funktioniert das sehr ähnlich, nur hat man da etwas mehr Overhead per VBA, und natürlich sollte man ordentliche Listen als Datenbasis bereitstellen, siehe auch VBA - MATRIX-Formel über VBA -> zu langsam (http://www.ms-office-forum.net/forum/showthread.php?t=267916#13)

Eine SQL-Lösung ist dann auch gerade bei sehr vielen zu verarbeitenden Daten eine effiziente Lösung, in einer Datenbank durch Setzen und Nutzen von Indizes dann noch einmal deutlich performanter.

EarlFred
27.05.2013, 15:47
Hallo Simon,

Aber ich glaube ich komm um VBA nicht herum ;D.
zuallererst wirst Du um eine klare Beschreibung dessen, was Du erreichen willst, nicht drumherumkommen. Mit Deiner Mustertabelle komme zumindest ich nicht klar.
Ich meine zu erkennen: In Spalten C:D werden irgendwelche Daten zeitgesteuert protokolliert. In dem kleinen Bereich L:M werden - unabhängig davon - Fehlerereignisse protokolliert.
Den Zeiten in Spalte C sollen nun, wenn zutreffend - die Fehler aus dem anderen Bereich zugeordnet werden?

Was, wenn mehrere Fehler gleichzeitig auftreten? Was soll dann wo stehen? Ich könnte mir hier eine Matrix recht gut vorstellen (Zeiten in Zeilen, Fehler in Spalten). Keine Ahnung, ob das erwünscht ist.

Wenn die Datentabelle richtig aufgebaut ist und die Auswertung einer günstigen Struktur folgt, brauchst Du dafür nur genau eine Formel - die dann aber natürlich entsprechend häufig kopiert.

Das könnte man an einem klar beschriebenen Beispiel sicher erkennen - dafür sollte man aber etwas weniger spärlich mit den Informationen um sich werfen.

Grüße
EarlFred

simse
27.05.2013, 16:06
@EarlFred

Ja Spalten C:D ist z.B eine elektrische Leistung mit Zeitstempel (einer Solaranlage z.B.) und in den Spalten L:M habe ich Fehlercodes mit Zeitstempel des Fehlereintritts und Austritts.

Jetzt möchte ich diese Fehlerereignisse zeitlich den Leistungsdaten zuordnen.

Hast du dafür eine einfache Lösung?

Danke

EarlFred
27.05.2013, 16:10
Hallo Danke,

ich entnehme Deiner Beschreibung:
(1) Mehrere Fehler gleichzeitig können nie auftreten.
(2) Eine Matrix ist auch unerwünscht.

Trivialformel:
{=INDEX($N$11:$N$14;MAX(WENN((C13>=$L$11:$L$14)*(C13<=$M$11:$M$14);ZEILE($N$1:$N$4);0)))}
Matrixhinweis: Geschweifte Klammern nicht mit eingeben, sondern die Formeleingabe mit Strg+Shift+Enter abschließen.

Der Wert der Zelle N11 gilt für alle Datensätze ohne Fehler (z. B. ="" eintragen).


Grüße
EarlFred