tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
246
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    '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
     

  2. #2
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    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
     

Ähnliche Themen

  1. Dll zur Laufzeit einbinden?
    Von Fastkiller im Forum .NET Café
    Antworten: 5
    Letzter Beitrag: 22.11.08, 13:11
  2. Kompilierung zur Laufzeit
    Von teelleet im Forum .NET Café
    Antworten: 11
    Letzter Beitrag: 11.11.08, 10:22
  3. Laufzeit messen
    Von baccula im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 26.08.07, 18:50
  4. Polygon verringerung
    Von tcppunk im Forum 3D Studio Max
    Antworten: 12
    Letzter Beitrag: 05.10.04, 14:04
  5. Laufzeit testen
    Von Flunster im Forum Java
    Antworten: 1
    Letzter Beitrag: 11.02.04, 07:45