Thema Datum  Von Nutzer Rating
Antwort
25.07.2017 14:44:15 Flo
NotSolved
Blau Datenabgleich von zwei Tabellen
25.07.2017 19:53:34 Ben
NotSolved
26.07.2017 08:54:48 Flo
NotSolved
26.07.2017 10:35:57 Flo
NotSolved
26.07.2017 11:01:17 Ben
NotSolved
26.07.2017 11:54:43 Flo
NotSolved
26.07.2017 22:52:13 Ben
NotSolved

Ansicht des Beitrags:
Von:
Ben
Datum:
25.07.2017 19:53:34
Views:
748
Rating: Antwort:
  Ja
Thema:
Datenabgleich von zwei Tabellen

Hallo,

habe eine mögliche Lösung gefunden:

Sub AdjustmentData()
    Dim wsh As Worksheet, wshSearch As Worksheet
    Dim rngSearch As Range
    Dim datDate As Date, datDateResult As Date
    Dim sGroup As String, sProd As String
    Dim rng As Range, rngResult As Range
    Set wsh = Tabelle1
    Set wshSearch = Tabelle2
    
    Set rngSearch = wshSearch.UsedRange
    Application.ScreenUpdating = False
    For Each rng In wsh.UsedRange.Rows
        If rng.Row > 1 Then
            datDate = rng.Cells(1, 1).Value
            sProd = rng.Cells(1, 3).Value
            
            If wshSearch.FilterMode Then
                rngSearch.AutoFilter
            End If
            
            rngSearch.AutoFilter Field:=1, Criteria1:=sProd
            rngSearch.AutoFilter Field:=34, Criteria1:="=AA", Operator:=xlOr, Criteria2:="=AB"
            
            For Each rngResult In rngSearch.SpecialCells(xlCellTypeVisible).Rows
                If rngResult.Row > 1 Then
                    datDateResult = rngResult.Cells(1, 44).Value + rngResult.Cells(1, 45).Value
                    If datDate <= DateAdd("s", 3600, datDateResult) And datDate >= DateAdd("s", -3600, datDateResult) Then
                        rng.Cells(1, 1).Value = datDateResult
                    End If
                End If
            Next
            If wshSearch.FilterMode Then
                rngSearch.AutoFilter
            End If
            'VBA.DoEvents
            
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Diese Lösung läuft nicht performant. Bei etwa 10.000 Datensätzen braucht diese Lösung bereits mehrere Minuten, um diese einmal durchlaufen zu können.

Wenn es zu lange dauert, sollte etwa alle 30 Sekunden einmal der Befehl VBA.DoEvents aufgerufen werden. Andernfalls wird das Excel-Fenster von Windows als in reagierende Anwendung markiert.

Die Ursache liegt im Autofilter. Dieser muss von Excel für jeden gesuchten Eintragneu initialisiert und ausgeführt werden.

Besser ist es, wenn Access-Methoden in Excel angewandt werden können. Hierzu muss allerdings auf dem System Microsoft Access zur Verfügung stehen.

Mit Access-Methoden kann eine beliebige Excel-Tabelle als Quelle herangezoegn werden. Mit Hilf einer Aktualisierungs-Abfrage können schnell x-beliebige Datensätze abgeglichen werden.

Bei Bedarf kann ich auch ein VBA-Code erstellen, das mit Access-Methoden arbeitet.

LG, Ben


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
25.07.2017 14:44:15 Flo
NotSolved
Blau Datenabgleich von zwei Tabellen
25.07.2017 19:53:34 Ben
NotSolved
26.07.2017 08:54:48 Flo
NotSolved
26.07.2017 10:35:57 Flo
NotSolved
26.07.2017 11:01:17 Ben
NotSolved
26.07.2017 11:54:43 Flo
NotSolved
26.07.2017 22:52:13 Ben
NotSolved