04.09.2024, 11:43
Hallöchen zusammen,
ich habe ein spannendes Problem welchem ich versuche Herr zu werden.
Ich habe eine Datei für meine Firma geschrieben in der ich zunächst eine CSV Datei importiere (ca. 2000 Zeilen).
Die CSV ist in etwa so aufgebaut:
TEAM A > Name A > Abwesend
TEAM A > Name B > Abwesend
Nur noch etwas mehr Optionen. Da mir z.B. Name A und Name B egal sind und ich nur auf das "TEAM" habe ich mir zunächst eine Routine gebaut die daraus eine Tabelle erstellt welche die Daten in der für mich guten Ansicht aufbereitet.
Also aus daraus wird bei mir "TEAM A" > Teilneher A, B, C und D > 2 Abwesend
Meine Tabelle hat dann "nur" ca. 700 Zeilen.
Soweit, sogut.
Jetzt werden täglich mehrere Änderungen durchgeführt und ich ziehe mir mehrfach täglich eine neue CSV.
Die CSV wird automatisch aktualisiert und ich möchte dann ein Update durchführen.
Ich gehe meine Ansicht von oben nach unten durch (Schleife mit 700 Durchäufen - SCHLEIFE A) und prüfe für jeden Eintrag in meiner Liste ob und welche Daten in der CSV enthalten sind (SCHLEIFE B)
Dafür gehe ich den CSV Import solange durch bis ich das erste Auffinden der relevanten Daten gefunden habe, mache ein Update und laufe mit dem nächsten Durchlauf von SCHLEIFE A weiter.
Spannend ist seit neustem, vermutlich das Upgrade auf O365, dass er sich ca. 2GB Hauptspeicher reinzieht.
Ich hätte gedacht, damit er alles durchlaufen hat (ca. 20 Sekunden Dauer) dass er dann alles wieder leer und den Speicher löscht. Macht er aber nciht.
Ich habe angefangen manche Variablen zu "nothingen" wie z.b. referenzierte Worksheets, aber ohne Erfolg.
Nun die Idee, dass ich eventuell meine Abfrage anders aufbauen muss um die Anzahl der Schleifendurchläufe zu minimieren.
Meine Ideen:
Ideen 1:
Ich kopiere das Datenblatt des CSV Imports in ein Puffersheet. Dieses gehe ich durch und durchsuche meine Daten und nach jedem Fund lösche ich die Zeile.
So wird die Anzahl der Zeilen von Durchlauf zu Durchlauf immer kleiner.
Idee 2:
Ich generiere mir einen Unique Key aus den Daten die ich in der CSV Prüfe (Parameter 1, Parameter 2, Parameter 3 werden als Unique Key konkateniert).
Und dann prüfen ich lediglich immer nur ob die Daten in einem Feld statt in 3 oder 4 Feldern stimmig sind.
Was sagt ihr dazu?
ich habe ein spannendes Problem welchem ich versuche Herr zu werden.
Ich habe eine Datei für meine Firma geschrieben in der ich zunächst eine CSV Datei importiere (ca. 2000 Zeilen).
Die CSV ist in etwa so aufgebaut:
TEAM A > Name A > Abwesend
TEAM A > Name B > Abwesend
Nur noch etwas mehr Optionen. Da mir z.B. Name A und Name B egal sind und ich nur auf das "TEAM" habe ich mir zunächst eine Routine gebaut die daraus eine Tabelle erstellt welche die Daten in der für mich guten Ansicht aufbereitet.
Also aus daraus wird bei mir "TEAM A" > Teilneher A, B, C und D > 2 Abwesend
Meine Tabelle hat dann "nur" ca. 700 Zeilen.
Soweit, sogut.
Jetzt werden täglich mehrere Änderungen durchgeführt und ich ziehe mir mehrfach täglich eine neue CSV.
Die CSV wird automatisch aktualisiert und ich möchte dann ein Update durchführen.
Ich gehe meine Ansicht von oben nach unten durch (Schleife mit 700 Durchäufen - SCHLEIFE A) und prüfe für jeden Eintrag in meiner Liste ob und welche Daten in der CSV enthalten sind (SCHLEIFE B)
Dafür gehe ich den CSV Import solange durch bis ich das erste Auffinden der relevanten Daten gefunden habe, mache ein Update und laufe mit dem nächsten Durchlauf von SCHLEIFE A weiter.
Spannend ist seit neustem, vermutlich das Upgrade auf O365, dass er sich ca. 2GB Hauptspeicher reinzieht.
Ich hätte gedacht, damit er alles durchlaufen hat (ca. 20 Sekunden Dauer) dass er dann alles wieder leer und den Speicher löscht. Macht er aber nciht.
Ich habe angefangen manche Variablen zu "nothingen" wie z.b. referenzierte Worksheets, aber ohne Erfolg.
Nun die Idee, dass ich eventuell meine Abfrage anders aufbauen muss um die Anzahl der Schleifendurchläufe zu minimieren.
Meine Ideen:
Ideen 1:
Ich kopiere das Datenblatt des CSV Imports in ein Puffersheet. Dieses gehe ich durch und durchsuche meine Daten und nach jedem Fund lösche ich die Zeile.
So wird die Anzahl der Zeilen von Durchlauf zu Durchlauf immer kleiner.
Idee 2:
Ich generiere mir einen Unique Key aus den Daten die ich in der CSV Prüfe (Parameter 1, Parameter 2, Parameter 3 werden als Unique Key konkateniert).
Und dann prüfen ich lediglich immer nur ob die Daten in einem Feld statt in 3 oder 4 Feldern stimmig sind.
Was sagt ihr dazu?