Laufzeit Verringerung

Winner

Erfahrenes Mitglied
Hallo zusammen! Ich wende mich mal an euch alle und hoffe ich bekomme ein paar kraetive Vorschläge wie ich die Laufzeit eines gewissens Programmabschnittes verbessern kann.
Das Programm soll 2 Werte mit einander vgl. und wenn eine Übereinstimmung gefunden ist, gewissen Zeilen mit Spalten füllen. Ich habe vorher die Daten die ich eintragen will aus einem Tabellenblatt gelesen. Dies soll immer den wechsel ziwschen den Blättern ersparen und ging für mich der Ansicht nach durch das Programm ausgeführt schneller.

Code:
'auslesen aus dem Tabellenblatt und schreiben in einen eigene TypeDef
        For j = 2 To anz_zeil_fix
        fix_data(j).uhrzeit = Range("A" & j).Value
        fix_data(j).RW = Range("AH" & j).Value
        fix_data(j).HW = Range("AI" & j).Value
        fix_data(j).H = Range("AJ" & j).Value
    
    Next j
    
    
    Sheets("Berechnung_fixing_Diagramm").Select
     g = 2
     
'Hier erfolgt die Prüfung, ob ich etwas eintragen muss oder nicht
     For k = 2 To anz_zeil - 1
       If Range("A" & k).Value = fix_data(g).uhrzeit Then
        'ins feld schreiben und g hochzählen
        Range("B" & k).Value = fix_data(g).RW
        Range("C" & k).Value = fix_data(g).HW
        Range("D" & k).Value = fix_data(g).H
        g = g + 1
      End If
     
    
    Next k

Wenn ihr Verbesserungsvorschläge habt, wäre ich euch dankbar. Es handelt sich um eine sehr große Punktmenge. Es werden Aufzeichnungen 24Stunden am Tag gemacht mit einer Rate von 5sec. Da kann sich jeder selber ausrechen, wieviel Zeilen da entstehen.

Ich hoffe ihr habt verstanden wo mein Problem liegt, oder geht das leider nicht schneller!

Ich wünsche euch morgen einen schönen erholsamen Feiertag!

Gruß Winner
 
Hallo ich noch mal!

Kann mir denn keiner helfen und hätte eine schnelleren Lösungsvorschlag oder zu mindest eine Idee wie ich es schneller machen kann.

Ich habe da auch schon selber eine andere Idee, bringt aber nur dann was wenn viele Lücken in den Aufzeichnungen sind, das ist aber kaum der Fall.
Immer wenn keine Daten vorliegen Prüfe ich nicht die nächste Zeile sondern bilde eine Zeitdiffereenz und leite mir daraus die entsprechende Zeile ab! Vielleicht fällt euch noch was ein wie ich es schneller hinbekommen kann!

Habt ihr da einen Lösungsvorschlag, dann immer her damit.

Also hier dann mal noch mein code auszug
Code:
For k = 2 To anz_zeil - 1
     
        If (Cells(k, 1).Value = fix_data(g).uhrzeit) Then
            'ins feld schreiben und g hochzählen
            Range("B" & k).Value = fix_data(g).RW
            Range("C" & k).Value = fix_data(g).HW
            Range("D" & k).Value = fix_data(g).H
            g = g + 1
       '---------------------------------------------
       Else  'wenn ich keine übereinstimmung habe, dann bilde ich die Differenz zwichen den verglichenen Zeiten und ermittle daraus die neue Zeile
        sprungIndex = 0
            Dim date_datumDiff As Date
            Dim dbl_datumDiff As Double
           
        'Konvertierungen
            date_datumDiff = fix_data(g).uhrzeit - Cells(k, 1).Value
            dbl_datumDiff = CDbl(date_datumDiff) * 24 '*24 um korrekte Zahl zu bekommen

            MsgBox dbl_datumDiff

            'Berechnungen
            sprungIndex = dbl_datumDiff / dbl_sec5Zahl - 1 'es wird eins abgezogen da durch das next i auch noch mal um eins erhöht wird
            MsgBox sprungIndex
            
            k = k + CInt(sprungIndex)
'sprungindex noch nach Integer konvertireen könnte wichtig sein
        'todo
'-----------------------------------------------------------------
        End If
        
          
     Next k

Gruß und besten dank
 
Zurück