Thema Datum  Von Nutzer Rating
Antwort
Rot Vba Daten verarbeiten dauert sehr lange
05.03.2023 12:17:43 jmahr
NotSolved
05.03.2023 14:47:08 ralf_b
NotSolved
05.03.2023 14:50:33 ralf_b
NotSolved
06.03.2023 06:40:01 Gast56022
NotSolved
06.03.2023 07:06:40 ralf_b
NotSolved
06.03.2023 07:50:39 Mase
NotSolved

Ansicht des Beitrags:
Von:
jmahr
Datum:
05.03.2023 12:17:43
Views:
315
Rating: Antwort:
  Ja
Thema:
Vba Daten verarbeiten dauert sehr lange

Guten Tag,

hier werden bei gleicher Straße und gleicher Bezirk die Hausnummern zusammengefasst. Dies funktioniert auch nur dauert dies bei ca. 40000 Datensätzen ca. 10 Minuten. Kann ich dies irgendwo noch optimieren oder verbessern? Ich bin für jede Hilfe dankbar.

Sub Gerade_Nr_Verdichten_Test()

    'Mehrere gerade HNr. werden jeweils bei einer
    'Straße und gleicher PLZ und Bezirk zu einer Zeile verdichtet
    
    Dim i As Currency
    Dim iEnde As Currency
    'Dim y As Integer 'Laufparameter für g und u
    Dim PLZ As String
    Dim PLZ1 As String
    
    Dim Straße As String
    Dim Straße1 As String
    Dim Pari As String
    Dim Pari1 As String
    Dim ZBez As String
    Dim ZBez1 As String
    Dim HNvonMin As Integer
    'Dim HNbisMin As Integer
    Dim HNbisMax As Integer
    'Dim HNbisMax1 As Integer
    Dim z As Currency
    Dim AnzahlLöschen As Currency
    Dim nStartabsolut As Currency
    Dim nStart As Currency
    Dim nEnde As Currency
    
    Application.ScreenUpdating = False ' Bildaktualisierung deaktivieren
   Application.Calculation = xlCalculationManual 'Berechnung ausschalten
    Sheets("Arbeitsdatei").Select
    'iEnde = i + i
    
    iEnde = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    
   
    
    'Erste Schleife für gerade HNr
        For i = 2 To iEnde
        Ergebnis = ""
        PLZ = Cells(i, 1).Value
        Straße = Cells(i, 7).Value
        Pari = Cells(i, 4).Value
        ZBez = Cells(i, 11).Value
        Cells(i, 22).Select
        
            If Pari = "G" Then
            HNvonMin = Cells(i, 5).Value
            nStartabsolut = i 'Start Schleife löschen
            nStart = i 'Laufparameter für Schleifenende Löschung
            PLZ1 = Cells(nStart + 1, 1).Value
            Straße1 = Cells(nStart + 1, 7).Value
            Pari1 = Cells(nStart + 1, 4).Value
                        
                'Falls PLZ1="", dann Ende des Tools
                If PLZ1 = "" Then
                GoTo Ende
                End If
               
                        Do Until Ergebnis = "nicht ok"
                        PLZ1 = Cells(nStart + 1, 1).Value
                        Straße1 = Cells(nStart + 1, 7).Value
                        Pari1 = Cells(nStart + 1, 4).Value
                        ZBez1 = Cells(nStart + 1, 11).Value
                            
                            If PLZ = PLZ1 And Straße = Straße1 And Pari = Pari1 And ZBez = ZBez1 Then
                             Ergebnis = "ok"
                            Else
                            Ergebnis = "nicht ok"
                            End If
                            
                        nStart = nStart + 1
                        Loop
            
                        nEnde = nStart - 1
                            
                            If nEnde = i - 2 Then
                            GoTo Nexti
                            End If
            
                        'Ermittlung HNbisMax aus letzter Zeile
                        'HNbisMax = Cells(nEnde, 6).Value
                        HNbisMax = Cells(nEnde, 5)
            
                                If HNbisMax > HNbisMax Then
                                HNbisMax = HNbisMax
                                Cells(nStartabsolut, 5).Value = HNbisMax
                                Else
                                HNbisMax = HNbisMax
                                Cells(nStartabsolut, 6).Value = HNbisMax
                                End If
                
                            'Überflüssige Zeilen löschen
                            AnzahlLöschen = nEnde - nStartabsolut
                            
                            For z = 1 To AnzahlLöschen
                            Range(Cells(nStartabsolut + 1, 1), Cells(nStartabsolut + 1, 22)).Select
                            Selection.Delete Shift:=xlUp
                            Next z
            
                                i = nStartabsolut
Nexti:
            End If
        Next i
Ende:

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True ' Bildaktualisierung wieder aktivieren
End Sub

PLZ Code Anfang P HNrVon   Straße Ohne Ort ZB Bezirk ZuArt a1 a2 a3 a4 a5 a6 a7 a8 a9
99999 001   G 002   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 004   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 006   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 008   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 010   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 012   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 014   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 016   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 018   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 020   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 022   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 024   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 026   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 028   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 030   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 032   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 034   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 036   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 038   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 040   Teststr.   99 13 900 Test     06 Test 99.99.900.Test   Standard BB 99.99.1.Test
99999 001   G 50   Teststr.   99 13 901 Test     06 Test 99.99.901.Test   Standard BB 99.99.1.Test

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Vba Daten verarbeiten dauert sehr lange
05.03.2023 12:17:43 jmahr
NotSolved
05.03.2023 14:47:08 ralf_b
NotSolved
05.03.2023 14:50:33 ralf_b
NotSolved
06.03.2023 06:40:01 Gast56022
NotSolved
06.03.2023 07:06:40 ralf_b
NotSolved
06.03.2023 07:50:39 Mase
NotSolved