Hi zusammen,
ich hätte da eine Frage zur Filterrung von Tabellenwerten und zwar Zeilenweise. Der Code läuft und macht das was von ihm verlangt ist, nur leider sollen der Viele Zeilen geprüft werden und denn ich das nun mit einer If-Verzweigung mache dauert es bei ca. 3000-5000 Zeilen schon sehr lange bzw. hört garnicht mehr auf zu arbeiten.
Bisher bin ich soweit, dass ich:
Und zwar werden 3 Spalten einer Zeile auf einen vorgegebenen Wert Kontroliert und dessen Toleranz berücksichtigt. Entspricht eine Zeile allen Ansprüchen so wird die letzte Zelle in der Zeile genommen und auf einem neuen Tabellenblatt kopiert.
Kann ich das vieleicht irgendwie beschleunigen, dass diese Operation selbst bei 3000 Zeilen in einem eigenermaßen verträglichen Zeitramen abläuft ?
Es muss leider jede Zeile kontroliert werden, weil mich nur bestimmte Zeilen interessieren (die, die den Ansprüchen genügen).
Könnt ihr mir bitte helfen ?
Gruß
ich hätte da eine Frage zur Filterrung von Tabellenwerten und zwar Zeilenweise. Der Code läuft und macht das was von ihm verlangt ist, nur leider sollen der Viele Zeilen geprüft werden und denn ich das nun mit einer If-Verzweigung mache dauert es bei ca. 3000-5000 Zeilen schon sehr lange bzw. hört garnicht mehr auf zu arbeiten.
Bisher bin ich soweit, dass ich:
Visual Basic-Quellcode
- For i = 2 To Z
- For k = 1 To Z - 1
- If Sheets("Tabelle2").Cells(i, 5).Value <= Sheets("Tabelle1").Cells(3, 1) + Sheets("Tabelle1").Cells(3, 2) Then
- If Sheets("Tabelle2").Cells(i, 5).Value >= Sheets("Tabelle1").Cells(3, 1) - Sheets("Tabelle1").Cells(3, 2) Then
- If Sheets("Tabelle2").Cells(i, 6).Value <= Sheets("Tabelle1").Cells(7, 1) + Sheets("Tabelle1").Cells(7, 2) Then
- If Sheets("Tabelle2").Cells(i, 6).Value >= Sheets("Tabelle1").Cells(7, 1) - Sheets("Tabelle1").Cells(7, 2) Then
- If Sheets("Tabelle2").Cells(i, 2).Value <= (Sheets("Tabelle1").Cells(11, 1) + ((Sheets("Tabelle1").Cells(11, 1)) / 100) * (Sheets("Tabelle1").Cells(11, 2))) Then
- If Sheets("Tabelle2").Cells(i, 2).Value >= (Sheets("Tabelle1").Cells(11, 1) - ((Sheets("Tabelle1").Cells(11, 1)) / 100) * (Sheets("Tabelle1").Cells(11, 2))) Then
- If Sheets("Tabelle2").Cells(i, 1).Text = Sheets("Tabelle3").Cells(1, 1 + k).Text Then 'Überprüfung auf gewünschte Authoren
- Sheets("Tabelle3").Cells(i, 1 + k).Value = Sheets("Tabelle2").Cells(i, 11)
- End If
- End If
- End If
- End If
- End If
- End If
- End If
- Next k
- Sheets("Tabelle3").Cells(i, 1).Value = Sheets("Tabelle2").Cells(i, 6)
- Next i
Und zwar werden 3 Spalten einer Zeile auf einen vorgegebenen Wert Kontroliert und dessen Toleranz berücksichtigt. Entspricht eine Zeile allen Ansprüchen so wird die letzte Zelle in der Zeile genommen und auf einem neuen Tabellenblatt kopiert.
Kann ich das vieleicht irgendwie beschleunigen, dass diese Operation selbst bei 3000 Zeilen in einem eigenermaßen verträglichen Zeitramen abläuft ?
Es muss leider jede Zeile kontroliert werden, weil mich nur bestimmte Zeilen interessieren (die, die den Ansprüchen genügen).
Könnt ihr mir bitte helfen ?
Gruß