2.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich möchte in einer Excel-Tabelle eine spezielle Datenfilterung vornehmen und habe leider keine Ahnung, ob und mit welchem Aufwand sich für diese Aufgabe ein Makro erstellen lässt.

Vereinfacht dargestellt habe ich eine Tabelle mit 4 Spalten. In den ersten beiden sind Datenreihen, in der dritten Spalte wird die jeweilige Differenz aus den Spalten 1 und 2 als absolute Zahl berechnet und in der Zelle D1 wird eine Variable definiert, die von Hand anzupassen sein soll.

Es soll nun zeilenweise geprüft werden, ob der Wert in Spalte C kleiner dem Wert D1 ist. Die erste darauf zutreffende Zelle wäre dann C n. Wenn dies in der gesamten Tabelle nicht (mehr) zutrifft, ist das Makro zu beenden.
Ansonsten ist beginnend mit der nächsten Zeile zeilenweise zu prüfen, ob C n+1 >= C n , C n+2 >= C n+1, C n+3 >= C n+2 usw. ist. Die erste Zeile, in der dies erfüllt ist, bezeichne ich im Weiteren als Zeile m. Falls diese Voraussetzung bis zum Tabellenende nicht mehr erfüllt wird, sind alle Zeilen ab und einschließlich der Zeile n (nicht m !) zu entfernen und das Makro zu beenden.
Ansonsten ist die Zelle B m-2 mit dem Wert aus B m zu überschreiben, die Zeile m und m-1 zu entfernen und das Programm am Tabellenanfang neu zu starten, es sei denn, dass die Zelle B m-2 vor dem Tabellenanfang liegt, das heißt leer ist, denn dann soll die Zeile B m-1 entfernt und das Programm am Tabellenanfang neu gestartet werden.

Hört sich wahrscheinlich nicht nur kompliziert an und es würde wohl auch viel zu weit führen, Sinn und Zweck dieser Datenfilterung zu erklären. Zur Verdeutlichung habe ich aber mal versucht, diese Prozedur in einem Ablaufdiagramm logisch und übersichtlich darzustellen. Ferner habe ich eine Datei mit einer entsprechenden Beispieltabelle sowie einem weiteren Arbeitsblatt mit dem angestrebten Ergebnis sowie dem Ablaufdiagramm bereit gestellt:

Ablaufdiagramm:
img832.imageshack.us/img832/4532/beispielq.jpg

Beispieldatei:
www.mediafire.com/?i15du2ysm9523mr

Wäre super, wenn mir dabei jemand weiterhelfen könnte. Vielleicht ist das für die Experten ja nur eine Fingerübung oder jemand fühlt sich herausgefordert. Auf jeden Fall schon mal meinen herzlichsten Dank im Voraus!

Stefan



[*]
[sup]*Threadedit* 20.01.2012, 11:56:47
Admininfo: Link korrigiert, fehlerhaften Umbruch entfernt
[/sup]

13 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Stefan,

Deine Links funktionieren nicht.

Versuchs mal damit
www.file-upload.net/

Gruß
Rainer
0 Punkte
Beantwortet von
Hallo Rainer,

wenn man die links von Hand kopiert bzw. die überschüssigen Zeichen im Link hinter der Dateiendung entfernt, müsste es eigentlich funktionieren.

Ich habe es aber auch nochmal mit alternativen Links probiert:

">www.file-upload.net/download-4043269/Beispiel.xls.html


">www.pic-upload.de/view-12688093/beispiel.jpg.html


Sorry, wenn es nicht auf Anhieb geklappt hat, habe mit Uploads nicht so viel Erfahrung.

Vielen Dank im Voraus!

Stefan
0 Punkte
Beantwortet von
Hmm, irgendwie funktionieren die Links nicht, wenn ich sie als URLs formatiere.

Mit Copy & Paste geht es aber wohl:

http://www.file-upload.net/download-4043269/Beispiel.xls.html

http://www.pic-upload.de/view-12688093/beispiel.jpg.html

Nochmals großes SORRY!

Stefan
0 Punkte
Beantwortet von mickey Experte (5.5k Punkte)
Hallo Stefan. Die 2 Links in der Anfrage habe ich schon längst korrigiert, ein Nachtrag war eigentlich nicht mehr nötig. Du setzt bei deinen Links hinten einen Umbruch, dann geht es nicht. Lass einfach alles in einer Zeile. Wie formatiert wird findest du in unserer Hilfe über dem Eingabefeld, testen kannst du in der Testgruppe.

Gruß
Mic

[sup]Bei Eingriffen ins System, die Registry oder Dateien erst eine Sicherung vornehmen©[/sup]
0 Punkte
Beantwortet von
Hallo Stefan. Die 2 Links in der Anfrage habe ich schon längst korrigiert, ein Nachtrag war eigentlich nicht mehr nötig. Du setzt bei deinen Links hinten einen Umbruch, dann geht es nicht. Lass einfach alles in einer Zeile. Wie formatiert wird findest du in unserer Hilfe über dem Eingabefeld, testen kannst du in der Testgruppe.

Gruß
Mic


Hallo Mic,

auf der Hilfeseite zur Formatierung ist das Beispiel für die Supportnet-Homepage aber mit einem Umbruch angegeben (jedenfalls bei meiner Browser-Darstellung), sonst hätte ich den auch gar nicht gemacht.

Vielleicht sollte man das mal ändern, um Missverständnissen vorzubeugen?

Beste Grüße!

Stefan
0 Punkte
Beantwortet von mickey Experte (5.5k Punkte)
Da hast du recht, das gehört geändert. Vielen Dank für den Hinweis.

Gruß
Mic

[sup]Bei Eingriffen ins System, die Registry oder Dateien erst eine Sicherung vornehmen©[/sup]
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,

Wolln doch malSchauen, ob ich in dieser BeispielDatei das Problem korrekt behandelt habe.

Bitte teste in der Beispielmappe oder an einer Kopie der originalMappe, ob die Ergebnisse in allen Faellen passend sind. Denn je laenger ich drauf schaue, desto unsicherer werde ich, ob mir in der Programm-Logik nicht ein Fehler unterlaufen ist.

So es denn tatsaechlich passen sollte, wuerde mich dann doch der Sinn und Zweck der Sache in groben Zuegen interessieren.

Cu
TheBlackBird ®
0 Punkte
Beantwortet von
Hallo TheBlackBird

und ein großes Wow, ich bin begeistert!

Ich habe das Makro jetzt mit mehreren Datenreihen getestet, die ich zuvor manuell bearbeitet hatte, und die einzige Unstimmigkeit, auf die ich gestoßen bin, basierte auf einem Fehler bei meiner eigenen manuellen Filterung.

Demnach scheint das Programm absolut fehlerfrei zu arbeiten, dafür natürlich meinen übersprudelnden Dank und ein Riesenkompliment!

Ich kann ehrlich gesagt überhaupt nicht einschätzen und es würde mich schon interessieren, wie kompliziert das war und wie lange die Programmierung gedauert hat. Das Makro sieht für mich als Laien jedenfalls recht kompliziert aus, wobei wir bei einem für mich verbleibenden Problem sind.

In meiner Anfrage hatte ich die Aufgabe etwas vereinfacht dargestellt, indem ich 3 vorangestellte Tabellenspalten weggelassen habe, weil diese lediglich zusätzliche Informationen beinhalten und mit der eigentlichen Berechnung nichts zu tun haben. Das war wahrscheinlich von mir blöd gedacht, aber ich war davon ausgegangen, dass die Aufgabenstellung durch die Reduktion auf das Wesentliche übersichtlicher wird, und dass ich trotz fehlender Programmierkenntnisse in der Lage wäre, den Code entsprechend anzupassen. Wohl eine gewaltige Selbstüberschätzung, denn der Code sieht für mich doch so kompliziert aus, dass ich das gar nicht erst versucht habe.

Nachdem die Umsetzung bestimmt schon sehr viel Zeit in Anspruch genommen hat, traue ich mich kaum zu fragen, ob es ein großes Problem wäre, den Code so anzupassen, dass die für die Berechnung maßgeblichen Daten nicht in den Spalten A bis D sondern D bis G stehen?

Und wie könnte ich mich angemessen revanchieren, falls Du dazu auch noch bereit wärst?

Nun noch wie erbeten zu Sinn und Zweck der Übung:
Wie Du wahrscheinlich bemerkt hast, stimmt jeweils der Wert in Spalte B mit dem Wert der darauf folgenden Zeile in Spalte A überein, so das die gesamte Datenreihe auch schon allein in Spalte A vorhanden ist. Wenn man die Datenreihe in einem Koordinatensystem grafisch darstellt, ergeben sich fortlaufend und abwechselnd Hoch- und Tiefpunkte. Mit dem Programm möchte ich diejenigen Hoch- und Tiefpunkte rausfiltern, die gemessen am letzten gültigen Extrem nicht mindestens den variabel zu definierenden Schwellenwert erreichen. Am Ende soll also die Differenz zwischen den verbleibenden Hoch- und Tiefpunkten mindestens den Schwellenwert betragen.
Ist das so halbwegs verständlich geworden? Weitere Details würden hier wahrscheinlich den öffentlich interessierenden Rahmen sprengen, könnten wir aber gern per E-Mail austauschen, sofern das nicht den Boardregeln widerspricht.
0 Punkte
Beantwortet von theblackbird_ Mitglied (605 Punkte)
Moin,


Danke fuer das Kompliment und die ausfuehrliche sowie zeitnahe Rueckmeldung hier im Forum. So, und mit einer derartigen Aufgabenstellung (BeispielDatei, vorgesehenes Ergebnis und !zusaetzlich noch ein Ablaufdiagramm!) macht es Spass sich mit Problemen aus dem Forum auch mal eingehender zu befassen. Man merkt halt, dass DU Dich mit Deinem Problem intensiv auseinandergesetzt hast. Da faellt es dann auch nicht allzuschwer, Dich bei der Loesung zu unterstuetzen, wenn man denn einen Ansatz dafuer im Hinterkopf hat. (So zumindest meine Sicht der Dinge.)

Tja wie kompliziert war das nun, und was hat es mich in etwa gekostet?
Dank Deiner Vorarbeit brauchte ja das Ablauf-Diagramm "nur in Code umgesetzt" werden. ;-)
Der grundlegende Ansatz war im Kopf dann auch in 10min fertig. Die Umsetzung in Code dauerte dann allerdings ein klein wenig laenger.:) Ersten Ansatz aus dem Bauch in die VBE gehaemmert + Nachbesserungen + Tests + Kopfkratzen bis zu dem Punkt, das Ganze in die Tonne zu werfen (da ich die Logik etwas voellig wirr aufgebaut hatte und bei Aenderungen "mit dem Hintern das eingerissen habe, was ich zuvor mit den Haenden aufgebaut hatte") so um und bei 2Stunden.
Spaet-abends dann gestaerkt, und ausgeruht nocheinmal von vorn. Grundgeruest hin, Testen im Einzelschritt + ErgebnisKontrolle, Nachbesserungen + Ergebniskontrollen + erneute Ergebniskontrollen und weitere Nachbesserungen...
Code kommentieren + nochmalige Kontrolle mit Ablaufdiagramm & schriftlicher Aufgabenstellung... (nebenher ein wenig Fernsehen, kurz im SN-Chat vorbeischauen, Denkansatz nochmals ueberpruefen) + Upload + Posting im SN + erneute Ergebniskontrolle dann nochmal so gute 3Stunden.
Alles in Allem also so um und bei 5Stunden + zwei GROSSE Tassen Kaffee + eine Flasche Bier und ein halbes Paeckchen Zigaretten. ;-) :D :D
Dass es fuer fuer mich, als Hobby-VBAler, nicht nur eine Fingeruebung sein wuerde, war von anfang an klar. Das es so "lang" dauern wuerde aber auch nicht. ;-) Mach Dir aber darum, und um eine evtl. Moeglichkeit Dich zu revanchieren, bitte keine Sorgen/Gedanken. Die Mitarbeit hier im SN ist nach wie vor freiwillig. Zumal das hier fuer mich immer auch Uebungen sind, die Probleme (und meist dann auch Loesungsansaetze) hervorbringen, die ich dann in eigenen "Projekten" durchaus zu nutzen weiss.

Aber nun wieder zurueck zu Deinem Problem:
Die Aenderung der Auswertung von A-D auf die Spalten D-G ist im Kopf schon wieder fertig. ;-) :D
Dennoch habe ich zuvor ein paar kleine Fragen:
- Werte aus "A3:C?" stehen nun dann in "D3:F?"
- Vergleichswert steht nicht mehr in $D$1 sondern in $G$1?
- Was soll denn dann mit den Werten aus den Spalten A:C passieren?
-- mit auswerten=Ja?
--- Werte/Informationen A:C mit den Werten aus (nun) E mit verschieben?
--- Werte/Informationen A:C an die Werte in (nun) D "gebunden" belassen?
-- Auswerten=nein?

Und nochmals zum Sinn und Zweck:
- Wo wendet man sowas praktisch an? Prozessueberwachung? Oder wo kommen solche Datenreihen her? (nur so ganz im Groben... ich muss da keine "Bertiebsgeheimnisse" wissen)

Cu
TheBlackBird ®
0 Punkte
Beantwortet von
Hallo TheBlackBird,

freut mich sehr, dass ich mit meinem Diagramm eine brauchbare Vorarbeit geleistet habe. Ich hatte meine Daten ja vorher schon per Hand bearbeitet und war dann recht erstaunt, wie schwierig es doch ist, so einen Ablauf allgemeingültig und -verständlich einschließlich etwaiger Sonderfälle in Worte zu fassen.
Daraufhin bin ich auf die Idee mit dem ergänzenden Diagramm gekommen, was mir auch selbst maßgeblich geholfen hat, einige Denkfehler im Vornherein auszumärzen und wirklich alle auftretenden Konstellationen zu berücksichtigen.

Dennoch habe ich zuvor ein paar kleine Fragen:
- Werte aus "A3:C?" stehen nun dann in "D3:F?"


richtig

- Vergleichswert steht nicht mehr in $D$1 sondern in $G$1?


genau

- Was soll denn dann mit den Werten aus den Spalten A:C passieren?
-- mit auswerten=Ja?
--- Werte/Informationen A:C mit den Werten aus (nun) E mit verschieben?
--- Werte/Informationen A:C an die Werte in (nun) D "gebunden" belassen?
-- Auswerten=nein?


Die Zellen in A:C sind an die Werte in D "gebunden" (wenn ich Deine Terminologie richtig verstehe), soll heißen:
Wenn eine Zeile gelöscht wird, ist die gesamte Zeile einschließlich der Zellen A:C zu entfernen. Verschoben bzw. überschrieben wird zuvor also nur der Wert aus (nun) E.
Hoffe, dass ich mich verständlich ausgedrückt habe.

Im Nachhinein ärgert es mich, dass ich die zusätzlichen Spalten in dem irrigen Glauben damit eine Vereinfachung des Aufgabenverständnisses zu bewirken, herausgelassen hatte, und hoffe sehr, dass es zur Erweiterung des Programms nur einer nicht so zeitaufwendigen Anpassung oder Verschiebung einiger Parameter bedarf.

Würdest Du mir auch helfen, wenn ich mich hier zur Verwendung nicht weiter öffentlich äußern möchte? Ich biete Dir jedoch an und gebe darauf auch mein Ehrenwort, Dir nach Fertigstellung die Fragen per E-Mail zu beantworten, falls Du darauf bestehst auch vorher.

Besten Dank im Voraus und Gruß nach Hamburg!

Stefan
...