Effiziente Bearbeitung von Zahlentabellen

Hi,

ich arbeite sehr oft mit Excel-Tabellen (Tabellen, in denen für JEDEN Tag und ca. 100 Parameter Werte vorhanden sind), die Zelle für Zelle nach bestimmten Kriterien untersucht werden sollen. Das mache ich üblicherweise mittels zwei verschachtelten FOR-NEXT-Schleifen (jeweils für die Zeile und die Spalte) und einer IF-THEN-Bedingung zur Prüfung, ob der in der Zelle befindliche Parameter geändert werden muß oder nicht. Geprüft werden soll üblicherweise, ob bestimmte Grenzwerte eingehalten sind, ob Werte überhaupt vorhanden sind oder ob sie korrekt formatiert sind u.v.a.m.

Weil ich momentan gerade am Umlernen bin Richtung ‚effizienteres und strukturiertes Programmieren‘ hinterfrage ich alles an bei mir üblichen Programmierverfahren. Dabei ist mir aufgefallen, daß Verzweigungen mittels ‚SELECT-CASE‘ meist wesentlich übersichtlicher sind. Das wäre also schon mal ein eigener Verbesserungsvorschlag. Ein weiterer Ansatzpunkt wären evtl. noch die ‚FOR-NEXT‘-Schleifen. Habt ihr noch Verbesserungsvorschläge?

Ich programmiere in VBA 2002.

Danke für eure Mühe.
Martin

Hallo
so falsch ist das sicher nicht, wenn du alle Werte nach einem Kriterium abfragen musst, For NExt zu verwenden.
Damit lassen sich Unmengen an Werten über einen Durchlauf ändern.
Du kannst in der For Next Schleife dann ja auch gleich einbinden, wenn der Wert so und so ist, dann soll er so oder so geändert oder behandelt werden.
Leider kenne ich mich mit Zugriff auf Excel noch nicht so aus, aber das hast du ja schon, daher geht es nur um die Abläufe in der Schleife.

Wozu eigentlich dann die 2.Schleife???

Mfg Werner

Hallo Wännä :o),

eine Schleife für die Zeile, eine für die Spalte. Adressierung per
‚Cells(Schleifenindex, Spaltenindex)‘.

Da bin ich gestern übrigens auf einen super Link aufmerksam gemacht worden:
http://www.online-excel.de/excel/singsel_vba.php?f=60

Martin

Quatsch
Hallo
das hört sich schon ganz gut an so.
Der Link naja, der Autor plustert sich mit seinem Wissen vielleicht etwas auf. Mag ja sein, das es sinnlose Schleifen oder so etwas gibt.
Aber ich denke, jeder wird versuchen, darüber vorher nachzudenken, was er will und das dann richtig schreiben. In den genannten Beispielen ist das endweder an den Haaren herbeigezaubert oder es war ein Versehen.

Der Zeitfaktor spielt auch nur bei der Masse eine Rolle.

Ein Beispiel dafür habe ich im Moment auch parat.
Ich schreibe ja auch grad an einem Programm mit Datenbank in Access.
So jetzt muß ich da Daten mit Punktnummer einlesen. In Access darf es aber keine identischen Datensätze geben, sonst wird ein Fehler erzeugt.
Daher habe ich eine Abfrage eingebaut, was bei jedem Datensatz die Datenbank auf doppelte Punktnummer prüft. Nun kannste dir vorstellen (und ich habe es auch getestet), das bei 8000 Datensätzen, die Prüfung immer länger dauerd und letztendlich 5min oder so vergehen können.
Das das Programm arbeitet, sieht man an der Fortschrittsbar. Man glaubt gar nicht wie kurz einem da 5min vorkommen, wenn man der Bar zusieht.
Aber das war nur ein test, letztendlich werde ich nie 8000 Datensätze einlesen und wenn doch warte ich lieber 5min, als das mir das Programm abstürzt und nix mehr geht.
Soviel über die Zeit. Professionelle Programme werden auf Zeit getrimmt, aber als Laie ist man oft froh, wenn das Programm das tut was es soll. Und die Zeitdifferenzen sind in den meisten Fällen zu vernachlässigen.
Ob ich 0,4sec warte oder eine ist doch wurscht.

Mfg Werner

Hi Werner,

ich kann aus meiner Erfahrung berichten (darum mein Posting), daß es unter Excel wirklich soviel einfacher ist, Schleifen wie ich oben beschrieben habe, zu basteln als mal darüber nachzudenken, ob es nicht auch schneller geht.

Beispielsweise habe ich immer noch ein Prg im Einsatz, das aus 12 Tabellenblättern ca. 50.000 Zeilen in eine Zusammenfassungstabelle kopiert. Die einzelnen Zeilen werden mittels FOR-NEXT-Schleife Zeile für Zeile auf das andere Blatt kopiert. Statt sich mit den Befehlen für Kopieren und Einfügen auseinanderzusetzen und jede Tabelle en bloc rüberzukopieren.

Du kommst einfach, wenn ich das richtig verstanden habe, aus einer anderen Richtung (von VB zu VBA). Mag sein, daß Du da andere Ansätze suchst. Stöbere mal in einem reinen Excelforum (z.B. Herber.de) und Du wirst Dich wundern, wieviel da über solche Schleifen gelöst wird. Obwohl es anders viel, viel schneller geht.

Martin